Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nEybp-0002BS-Lt for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Feb 2022 19:14:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nEybo-0005Vr-Gi for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Feb 2022 19:14:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nEybn-0005Vg-JQ for pgsql-hackers@lists.postgresql.org; Tue, 01 Feb 2022 19:14:31 +0000 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nEybX-00063S-TE for pgsql-hackers@postgresql.org; Tue, 01 Feb 2022 19:14:31 +0000 Received: (Authenticated sender: adsend@dunslane.net) by mail.gandi.net (Postfix) with ESMTPSA id 97E7F1BF205; Tue, 1 Feb 2022 19:14:08 +0000 (UTC) Content-Type: multipart/mixed; boundary="------------wGx6OcQsLj50vkDF0YvlnG34" Message-ID: <9e28ea54-e487-039e-28ee-0efd04a60ef9@dunslane.net> Date: Tue, 1 Feb 2022 14:14:06 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: SQL/JSON: JSON_TABLE Content-Language: en-US From: Andrew Dunstan To: Julien Rouhaud Cc: Erik Rijkers , Nikita Glukhov , PostgreSQL-development , Pavel Stehule , Dmitry Dolgov <9erthalion6@gmail.com>, Oleg Bartunov References: <9090441f-a9c0-9e58-4c4a-5aaa21b3b126@2ndQuadrant.com> <444baae7-af8e-294c-abcc-8e2f0e3dac76@xs4all.nl> <6a0d53bf-6c5b-34f8-083e-42b867d6b142@dunslane.net> <5c8f89ea-5b46-8148-6d9d-6f858e1e5c57@xs4all.nl> <2936b8a5-34ee-4566-09d8-d6943a9f1db5@dunslane.net> <368bc2e0-f6e4-cb9c-ddcc-6761997014bd@xs4all.nl> <5066009a-827c-bfe7-2ba8-33a43eeaa05a@dunslane.net> <20220118063213.a2oyiy3qboyv32aj@jrouhaud> <194755c5-3450-b746-4462-233f241203ce@dunslane.net> In-Reply-To: <194755c5-3450-b746-4462-233f241203ce@dunslane.net> 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. --------------wGx6OcQsLj50vkDF0YvlnG34 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 1/18/22 16:23, Andrew Dunstan wrote: > On 1/18/22 01:32, Julien Rouhaud wrote: >> Hi, >> >> On Tue, Jan 04, 2022 at 09:03:05AM -0500, Andrew Dunstan wrote: >>> rebased again. >> This version conflicts with recent c4cc2850f4d1 (Rename value node fields). >> Can you send a rebased version? > > attached > rebased with some review comments attended to. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------wGx6OcQsLj50vkDF0YvlnG34 Content-Type: text/x-patch; charset=UTF-8; name="0001-SQL-JSON-functions-v55.patch" Content-Disposition: attachment; filename="0001-SQL-JSON-functions-v55.patch" Content-Transfer-Encoding: base64 RnJvbSA5ZDQ0ZTY1Yzg1OTRhNmFiY2ZjOTMyYmJlMmEwYzAxMzhkYjdmMDA1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVHVlLCAxIEZlYiAyMDIyIDExOjM0OjE5IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCAxLzRdIFNRTC9KU09OIGZ1bmN0aW9ucwoKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9mdW5j LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICB8IDIwMjcgKysrKysrKysrKysrKysrKysK IGRvYy9zcmMvc2dtbC9rZXl3b3Jkcy9zcWwyMDE2LTAyLXJlc2VydmVkLnR4dCB8ICAgIDMg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAgIHwgIDM0 OSArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgICAgICAgICB8 ICA3MjYgKysrKysrCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgICAg ICAgICAgfCAgIDE4ICsKIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyAg ICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAg ICAgICAgICAgIHwgIDQzMyArKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMg ICAgICAgICAgICAgICAgfCAgMjkzICsrKwogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNz LmMgICAgICAgICAgICAgICAgIHwgIDEwMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYyAgICAgICAgICAgICAgICAgfCAgNDI3ICsrKysKIHNyYy9iYWNrZW5kL25vZGVzL291 dGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAxNDEgKysKIHNyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAxNzcgKysKIHNyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAgICAgICB8ICAgIDMgKy0KIHNyYy9iYWNrZW5k L29wdGltaXplci91dGlsL2NsYXVzZXMuYyAgICAgICAgICB8ICAgNzggKwogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDc2NyArKysrKystCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jICAgICAgICAgICAgfCAgICA0ICsK IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8IDE0Njgg KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAgICAg ICAgICAgfCAgIDM3ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZXIuYyAgICAgICAgICAg ICAgICAgICB8ICAgMTYgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdF90eXBlLmMg ICAgICAgICAgIHwgICAgOSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5j ICAgICAgICAgICAgfCAgIDQ1ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAg ICAgICAgICAgICAgICAgfCAgNTcyICsrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmIuYyAgICAgICAgICAgICAgICAgfCAgMzUyICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25iX3V0aWwuYyAgICAgICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25mdW5jcy5jICAgICAgICAgICAgIHwgICA3MCArLQogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoLmMgICAgICAgICAgICAgIHwgIDI1NyArKysKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgICAgICAgICB8ICAzNTAgKystCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgNDM3ICsrKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8ICAgMTkgKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAgMSAr CiBzcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMgICAgICAgICAgfCAgIDY5 ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdCAgICAgICAgICB8ICAg MjIgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwg ICA3MCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgICAg fCAgIDgxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAg ICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAgICAg ICAgIHwgICAxMCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICAg ICAgICAgfCAgIDI0ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAg ICAgICAgICB8ICAyMDMgKysKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAg ICAgICAgICAgICB8ICAyMjIgKysKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAg ICAgICAgICAgICAgICB8ICAgMjIgKwogc3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0dGluZy5o ICAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9qc29uLmggICAg ICAgICAgICAgICAgICAgICAgfCAgIDI2ICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgg ICAgICAgICAgICAgICAgICAgICB8ICAgNDcgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1 bmNzLmggICAgICAgICAgICAgICAgIHwgICAgNyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29u cGF0aC5oICAgICAgICAgICAgICAgICAgfCAgIDMzICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcv cHJlcHJvYy9wYXJzZS5wbCAgICAgICAgICB8ICAgIDIgKwogc3JjL2ludGVyZmFjZXMvZWNw Zy9wcmVwcm9jL3BhcnNlci5jICAgICAgICAgIHwgICAxNCArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25fc3FsanNvbi5vdXQgICAgfCAgIDE1ICsKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbmIub3V0ICAgICAgICAgICB8ICAxMzAgKysKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQgICB8IDEwMTggKysrKysrKysrCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0ICAgICAgfCAgICA2ICst CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24ub3V0ICAgICAgICAgfCAxMzUy ICsrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAg ICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3Fs ICAgICAgICAgfCAgIDExICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCAgICAg ICAgICAgICAgICB8ICAgMzggKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNv bi5zcWwgICAgICAgIHwgIDMxNyArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wcl9zYW5p dHkuc3FsICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpz b24uc3FsICAgICAgICAgICAgICB8ICA0NjcgKysrKwogNTkgZmlsZXMgY2hhbmdlZCwgMTMx NDggaW5zZXJ0aW9ucygrKSwgMzAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24u b3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9zcWxq c29uLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25i X3NxbGpzb24uc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3FsanNvbi5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNjkyZDhhMmExNy4uZjU5ZWY0YTZkZCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9jb25maWcuc2dtbApAQCAtOTczNSw2ICs5NzM1LDI1IEBAIGR5bmFtaWNfbGlicmFyeV9w YXRoID0gJ0M6XHRvb2xzXHBvc3RncmVzcWw7SDpcbXlfcHJvamVjdFxsaWI7JGxpYmRpcicK ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJs aXN0ZW50cnkgaWQ9Imd1Yy1zcWwtanNvbiIgeHJlZmxhYmVsPSJzcWxfanNvbiI+CisgICAg ICA8dGVybT48dmFybmFtZT5zcWxfanNvbjwvdmFybmFtZT4gKDx0eXBlPmVudW08L3R5cGU+ KQorICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29uPC9wcmltYXJ5PjwvaW5kZXh0ZXJt PgorICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29uYjwvcHJpbWFyeT48L2luZGV4dGVy bT4KKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c3FsX2pz b248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAg PC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+CisgICAgICAgICBWYWxpZCB2YWx1ZXMgYXJlIDxsaXRlcmFsPmpzb248L2xpdGVy YWw+IGFuZCA8bGl0ZXJhbD5qc29uYjwvbGl0ZXJhbD4uCisgICAgICAgICBTcGVjaWZpZXMg d2hhdCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHR5cGUgaXMgdXNl ZAorICAgICAgICAgYXMgYW4gaW1wbGVtZW50YXRpb24gb2YgU1FMIHR5cGUgPHR5cGU+SlNP TjwvdHlwZT4uCisgICAgICAgICBXaGVuIDx2YXJuYW1lPnNxbF9qc29uPC92YXJuYW1lPiBp cyBzZXQgdG8gPGxpdGVyYWw+anNvbmI8L2xpdGVyYWw+LAorICAgICAgICAgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0eXBlIDx0eXBlPmpzb248L3R5cGU+IGNh biBiZQorICAgICAgICAgYWNjZXNzZWQgdXNpbmcgZXhwbGljaXQgcXVhbGlmaWNhdGlvbiA8 dHlwZT5wZ19jYXRhbG9nLmpzb248L3R5cGU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwv bGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICA8L3ZhcmlhYmxlbGlzdD4K ICAgICA8L3NlY3QyPgogICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDg3NTRmMmY4OWIuLjVi OGI5MzRjNTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMTc1NjQsNiArMTc1NjQsMTkyNCBAQCAkLiogPyAo QCBsaWtlX3JlZ2V4ICJeXFxkKyQiKQogICAgIDwvcGFyYT4KICAgIDwvc2VjdDM+CiAgIDwv c2VjdDI+CisKKyA8c2VjdDIgaWQ9ImZ1bmN0aW9ucy1zcWxqc29uIj4KKyAgPHRpdGxlPlNR TC9KU09OIEZ1bmN0aW9ucyBhbmQgRXhwcmVzc2lvbnM8L3RpdGxlPgorICA8aW5kZXh0ZXJt IHpvbmU9ImZ1bmN0aW9ucy1qc29uIj4KKyAgICA8cHJpbWFyeT5TUUwvSlNPTjwvcHJpbWFy eT4KKyAgICA8c2Vjb25kYXJ5PmZ1bmN0aW9ucyBhbmQgZXhwcmVzc2lvbnM8L3NlY29uZGFy eT4KKyAgPC9pbmRleHRlcm0+CisKKyA8cGFyYT4KKyAgVG8gcHJvdmlkZSBuYXRpdmUgc3Vw cG9ydCBmb3IgSlNPTiBkYXRhIHR5cGVzIHdpdGhpbiB0aGUgU1FMIGVudmlyb25tZW50LAor ICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGltcGxlbWVudHMgdGhl CisgIDxmaXJzdHRlcm0+U1FML0pTT04gZGF0YSBtb2RlbDwvZmlyc3R0ZXJtPi4KKyAgVGhp cyBtb2RlbCBjb21wcmlzZXMgc2VxdWVuY2VzIG9mIGl0ZW1zLiBFYWNoIGl0ZW0gY2FuIGhv bGQgU1FMIHNjYWxhciB2YWx1ZXMsCisgIHdpdGggYW4gYWRkaXRpb25hbCBTUUwvSlNPTiBu dWxsIHZhbHVlLCBhbmQgY29tcG9zaXRlIGRhdGEgc3RydWN0dXJlcyB0aGF0IHVzZSBKU09O CisgIGFycmF5cyBhbmQgb2JqZWN0cy4KKyA8L3BhcmE+CisKKyA8cGFyYT4KKyAgU1FML0pT T04gZW5hYmxlcyB5b3UgdG8gaGFuZGxlIEpTT04gZGF0YSBhbG9uZ3NpZGUgcmVndWxhciBT UUwgZGF0YSwKKyAgd2l0aCB0cmFuc2FjdGlvbiBzdXBwb3J0OgorIDwvcGFyYT4KKworIDxp dGVtaXplZGxpc3Q+CisgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgIFVwbG9hZCBK U09OIGRhdGEgaW50byBhIHJlbGF0aW9uYWwgZGF0YWJhc2UgYW5kIHN0b3JlIGl0IGluCisg ICAgICByZWd1bGFyIFNRTCBjb2x1bW5zIGFzIGNoYXJhY3RlciBvciBiaW5hcnkgc3RyaW5n cy4KKyAgICA8L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT4KKyAgICA8cGFy YT4KKyAgICAgIEdlbmVyYXRlIEpTT04gb2JqZWN0cyBhbmQgYXJyYXlzIGZyb20gcmVsYXRp b25hbCBkYXRhLgorICAgIDwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPgor ICAgIDxwYXJhPgorICAgICAgUXVlcnkgSlNPTiBkYXRhIHVzaW5nIFNRTC9KU09OIHF1ZXJ5 IGZ1bmN0aW9ucyBhbmQgU1FML0pTT04gcGF0aAorICAgICAgbGFuZ3VhZ2UgZXhwcmVzc2lv bnMuCisgICAgPC9wYXJhPgorICA8L2xpc3RpdGVtPgorIDwvaXRlbWl6ZWRsaXN0PgorCisg PHBhcmE+CisgICBBbGwgU1FML0pTT04gZnVuY3Rpb25zIGZhbGwgaW50byBvbmUgb2YgdHdv IGdyb3Vwcy4KKyAgIDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9ucy1zcWxqc29uLXByb2R1Y2lu ZyI+Q29uc3RydWN0b3IgZnVuY3Rpb25zPC9saW5rPgorICAgZ2VuZXJhdGUgSlNPTiBkYXRh IGZyb20gdmFsdWVzIG9mIFNRTCB0eXBlcy4KKyAgIDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9u cy1zcWxqc29uLXF1ZXJ5aW5nIj5RdWVyeSBmdW5jdGlvbnM8L2xpbms+CisgICBldmFsdWF0 ZSBTUUwvSlNPTiBwYXRoIGxhbmd1YWdlIGV4cHJlc3Npb25zIGFnYWluc3QgSlNPTiB2YWx1 ZXMKKyAgIGFuZCBwcm9kdWNlIHZhbHVlcyBvZiBTUUwvSlNPTiB0eXBlcywgd2hpY2ggYXJl IGNvbnZlcnRlZCB0byBTUUwgdHlwZXMuCisgPC9wYXJhPgorCisgIDxzZWN0MyBpZD0iZnVu Y3Rpb25zLXNxbGpzb24tcHJvZHVjaW5nIj4KKyAgIDx0aXRsZT5Qcm9kdWNpbmcgSlNPTiBD b250ZW50PC90aXRsZT4KKworICA8cGFyYT4KKyAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvcHJvZHVjdG5hbWU+IHByb3ZpZGVzIHNldmVyYWwgZnVuY3Rpb25zCisgICAgdGhhdCBn ZW5lcmF0ZSBKU09OIGRhdGEuIFRha2luZyB2YWx1ZXMgb2YgU1FMIHR5cGVzIGFzIGlucHV0 LCB0aGVzZQorICAgIGZ1bmN0aW9ucyBjb25zdHJ1Y3QgSlNPTiBvYmplY3RzLCBKU09OIGFy cmF5cyBvciBKU09OIHNjYWxhcnMgcmVwcmVzZW50ZWQKKyAgICBhcyA8dHlwZT5qc29uPC90 eXBlPiBvciA8dHlwZT5qc29uYjwvdHlwZT4gdHlwZXMsIFNRTCBjaGFyYWN0ZXIgb3IgYmlu YXJ5IHN0cmluZ3MuCisgIDwvcGFyYT4KKworICA8aXRlbWl6ZWRsaXN0PgorICAgIDxsaXN0 aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9ucy1q c29ucGFyc2UiPjxsaXRlcmFsPkpTT048L2xpdGVyYWw+PC9saW5rPgorICAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAg ICAgPGxpbmsgbGlua2VuZD0iZnVuY3Rpb25zLWpzb25zY2FsYXIiPjxsaXRlcmFsPkpTT05f U0NBTEFSPC9saXRlcmFsPjwvbGluaz4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9 ImZ1bmN0aW9ucy1qc29ub2JqZWN0Ij48bGl0ZXJhbD5KU09OX09CSkVDVDwvbGl0ZXJhbD48 L2xpbms+CisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbm9i amVjdGFnZyI+PGxpdGVyYWw+SlNPTl9PQkpFQ1RBR0c8L2xpdGVyYWw+PC9saW5rPgorICAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBh cmE+CisgICAgICAgPGxpbmsgbGlua2VuZD0iZnVuY3Rpb25zLWpzb25hcnJheSI+PGxpdGVy YWw+SlNPTl9BUlJBWTwvbGl0ZXJhbD48L2xpbms+CisgICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICA8bGluayBs aW5rZW5kPSJmdW5jdGlvbnMtanNvbmFycmF5YWdnIj48bGl0ZXJhbD5KU09OX0FSUkFZQUdH PC9saXRlcmFsPjwvbGluaz4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8 L2l0ZW1pemVkbGlzdD4KKworICA8c2VjdDQgaWQ9ImZ1bmN0aW9ucy1qc29ucGFyc2UiPgor ICAgPHRpdGxlPjxsaXRlcmFsPkpTT048L2xpdGVyYWw+PC90aXRsZT4KKyAgIDxpbmRleHRl cm0+PHByaW1hcnk+anNvbjwvcHJpbWFyeT48L2luZGV4dGVybT4KKzxzeW5vcHNpcz4KKzxm dW5jdGlvbj5KU09OPC9mdW5jdGlvbj4gKAorICA8cGFyYW1ldGVyPmV4cHJlc3Npb248L3Bh cmFtZXRlcj4gPG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVU RjggPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgPG9wdGlvbmFsPiB7IFdJVEggfCBXSVRI T1VUIH0gVU5JUVVFIDxvcHRpb25hbD4gS0VZUyA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgor ICA8b3B0aW9uYWw+IFJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ anNvbl9kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorKQorPC9zeW5vcHNp cz4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKwor ICAgICA8cGFyYT4KKyAgICAgIDxmdW5jdGlvbj5KU09OPC9mdW5jdGlvbj4gZnVuY3Rpb24g Z2VuZXJhdGVzIGEgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4KKyAgICAgIGZyb20gYSB0ZXh0 IGRhdGEuCisgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Q1PgorCisgICAgPHNlY3Q1PgorICAg ICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisgICAgICA8dmFyaWFibGVsaXN0PgorICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgorICAgICAgICAgPGxpdGVyYWw+ PHBhcmFtZXRlcj5leHByZXNzaW9uPC9wYXJhbWV0ZXI+IDxvcHRpb25hbD4gRk9STUFUIEpT T04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+PC9s aXRlcmFsPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg IDxwYXJhPgorICAgICAgICAgIFN0cmluZyBleHByZXNzaW9uIHRoYXQgcHJvdmlkZXMgdGhl IDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IHRleHQgZGF0YS4KKyAgICAgICAgICBBY2NlcHRl ZCBhbnkgY2hhcmFjdGVyIHN0cmluZ3MgKDx0eXBlPnRleHQ8L3R5cGU+LCA8dHlwZT5jaGFy PC90eXBlPiwgZXRjLikKKyAgICAgICAgICBvciBiaW5hcnkgc3RyaW5ncyAoPHR5cGU+Ynl0 ZWE8L3R5cGU+KSBpbiBVVEY4IGVuY29kaW5nLgorICAgICAgICAgIEZvciBudWxsIGlucHV0 LCA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IG51bGwgdmFsdWUgaXMgcmV0dXJuZWQuCisgICAg ICAgICA8L3BhcmE+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgVGhlIG9wdGlvbmFs IDxsaXRlcmFsPkZPUk1BVDwvbGl0ZXJhbD4gY2xhdXNlIGlzIHByb3ZpZGVkIHRvIGNvbmZv cm0KKyAgICAgICAgICAgdG8gdGhlIFNRTC9KU09OIHN0YW5kYXJkLgorICAgICAgICAgPC9w YXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgorICAgICAgICAgPGxpdGVyYWw+ eyBXSVRIIHwgV0lUSE9VVCB9IFVOSVFVRSA8b3B0aW9uYWw+IEtFWVMgPC9vcHRpb25hbD48 L2xpdGVyYWw+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAg ICA8cGFyYT4KKyAgICAgICAgIERlZmluZXMgd2hldGhlciBkdXBsaWNhdGUga2V5cyBhcmUg YWxsb3dlZDoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAg ICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT48bGl0ZXJhbD5XSVRIT1VU PC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgRGVmYXVsdC4gVGhlIGNvbnN0cnVjdGVkCisgICAgICAgICAg ICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3QgY2FuIGNvbnRhaW4gZHVwbGljYXRl IGtleXMuCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAg ICAgIDx0ZXJtPjxsaXRlcmFsPldJVEg8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICBEdXBsaWNhdGUg a2V5cyBhcmUgbm90IGFsbG93ZWQuCisgICAgICAgICAgICAgSWYgdGhlIGlucHV0IGRhdGEg Y29udGFpbnMgZHVwbGljYXRlIGtleXMsIGFuIGVycm9yIGlzIHJldHVybmVkLgorICAgICAg ICAgICAgPC9wYXJhPgorICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPC92YXJs aXN0ZW50cnk+CisgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gYWRkIHRoZSA8bGl0ZXJhbD5LRVlTPC9saXRl cmFsPiBrZXl3b3JkIGZvcgorICAgICAgICAgc2VtYW50aWMgY2xhcml0eS4KKyAgICAgICAg PC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5Pgor ICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgorICAgICAgICAgPGxpdGVy YWw+UkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX2RhdGFf dHlwZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPgorICAgICAgICA8L3Rlcm0+CisgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgb3V0cHV0IGNsYXVz ZSB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSAoPHR5cGU+anNvbjwvdHlwZT4gb3IKKyAgICAg ICAgIDx0eXBlPmpzb25iPC90eXBlPikgb2YgdGhlIGdlbmVyYXRlZCA8YWNyb255bT5KU09O PC9hY3JvbnltPi4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgPC92YXJsaXN0ZW50cnk+CisgICAgIDwvdmFyaWFibGVsaXN0PgorICAgIDwvc2VjdDU+ CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgIDxwYXJh PgorICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb25zdHJ1Y3QgPGFjcm9ueW0+SlNP TjwvYWNyb255bT4gdmFsdWVzIHNpbXBseQorICAgICAgdXNpbmcgPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPi1zcGVjaWZpYyBjYXN0cyB0byAKKyAgICAgIDx0eXBl Pmpzb248L3R5cGU+IGFuZCA8dHlwZT5qc29uYjwvdHlwZT4gdHlwZXMuCisgICAgIDwvcGFy YT4KKyAgICA8L3NlY3Q1PgorICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90 aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICBDb25zdHJ1Y3QgYSBKU09OIHRoZSBwcm92aWRl ZCBzdHJpbmdzOgorICAgICA8L3BhcmE+Cis8c2NyZWVuPgorU0VMRUNUIEpTT04oJ3sgImEi IDogMTIzLCAiYiI6IFsgdHJ1ZSwgImZvbyIgXSwgImEiIDogImJhciIgfScpOworICAgICAg ICAgICAgICAgICAgICAgICBqc29uICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyAiYSIgOiAx MjMsICJiIjogWyB0cnVlLCAiZm9vIiBdLCAiYSIgOiAiYmFyIiB9CisoMSByb3cpCisKKwor U0VMRUNUIEpTT04oJ3siYSI6IDEyMywgImIiOiBbdHJ1ZSwgImZvbyJdLCAiYSI6ICJiYXIi fScgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAgICAgICAgICAgIGpzb24gICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7ImEiOiAiYmFyIiwg ImIiOiBbdHJ1ZSwgImZvbyJdfQorKDEgcm93KQorCitTRUxFQ1QgSlNPTigneyJhIjogMTIz LCAiYiI6IFt0cnVlLCAiZm9vIl0sICJhIjogImJhciJ9JyBXSVRIIFVOSVFVRSBLRVlTKTsK K0VSUk9SOiAgZHVwbGljYXRlIEpTT04gb2JqZWN0IGtleSB2YWx1ZQorPC9zY3JlZW4+Cisg ICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+CisKKyAgPHNlY3Q0IGlkPSJmdW5jdGlvbnMtanNv bnNjYWxhciI+CisgICA8dGl0bGU+PGxpdGVyYWw+SlNPTl9TQ0FMQVI8L2xpdGVyYWw+PC90 aXRsZT4KKyAgIDxpbmRleHRlcm0+PHByaW1hcnk+anNvbl9zY2FsYXI8L3ByaW1hcnk+PC9p bmRleHRlcm0+CisKKzxzeW5vcHNpcz4KKzxmdW5jdGlvbj5KU09OX1NDQUxBUjwvZnVuY3Rp b24+ICgKKyAgPHBhcmFtZXRlcj5leHByZXNzaW9uPC9wYXJhbWV0ZXI+CisgIDxvcHRpb25h bD4gUkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX2RhdGFf dHlwZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CispCis8L3N5bm9wc2lzPgorCisgICAg PHNlY3Q1PgorICAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgIDxwYXJh PgorICAgICAgPGZ1bmN0aW9uPkpTT05fU0NBTEFSPC9mdW5jdGlvbj4gZnVuY3Rpb24gZ2Vu ZXJhdGVzIGEgc2NhbGFyCisgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBmcm9tIGEg PGFjcm9ueW0+U1FMPC9hY3JvbnltPiBkYXRhLgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0 NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorICAg ICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVy bT4KKyAgICAgICAgIDxsaXRlcmFsPjxwYXJhbWV0ZXI+ZXhwcmVzc2lvbjwvcGFyYW1ldGVy PjwvbGl0ZXJhbD4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICBFeHByZXNzaW9uIHRoYXQgcHJvdmlkZXMgdGhlIGRh dGEgZm9yIGNvbnN0cnVjdGluZyBhCisgICAgICAgICAgPGFjcm9ueW0+SlNPTjwvYWNyb255 bT4uCisgICAgICAgICAgRm9yIG51bGwgaW5wdXQsIDxhY3JvbnltPlNRTDwvYWNyb255bT4g IG51bGwKKyAgICAgICAgICAobm90IGEgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gbnVsbCkg dmFsdWUgaXMgcmV0dXJuZWQuCisgICAgICAgICAgRm9yIGFueSBzY2FsYXIgb3RoZXIgdGhh biBhIG51bWJlciwgYSBCb29sZWFuLCB0aGUgdGV4dCByZXByZXNlbnRhdGlvbgorICAgICAg ICAgIHdpbGwgYmUgdXNlZCwgd2l0aCBlc2NhcGluZyBhcyBuZWNlc3NhcnkgdG8gbWFrZSBp dCBhIHZhbGlkCisgICAgICAgICAgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gc3RyaW5nIHZh bHVlLgorICAgICAgICAgIEZvciBkZXRhaWxzLCBzZWUKKyAgICAgICAgICA8ZnVuY3Rpb24+ dG9fanNvbigpPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPnRvX2pzb25iKCk8L2Z1bmN0aW9uPgor ICAgICAgICAgIGluIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29uLWNyZWF0aW9uLXRh YmxlIi8+LgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg IDwvdmFybGlzdGVudHJ5PgorICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJt PgorICAgICAgICAgPGxpdGVyYWw+UkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5qc29uX2RhdGFfdHlwZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPgorICAgICAg ICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAg ICBUaGUgb3V0cHV0IGNsYXVzZSB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSAoPHR5cGU+anNv bjwvdHlwZT4gb3IKKyAgICAgICAgIDx0eXBlPmpzb25iPC90eXBlPikgb2YgdGhlIGdlbmVy YXRlZCA8YWNyb255bT5KU09OPC9hY3JvbnltPiBzY2FsYXIuCisgICAgICAgICA8L3BhcmE+ CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8L3Zh cmlhYmxlbGlzdD4KKyAgICA8L3NlY3Q1PgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+ Tm90ZXM8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBj YW4gY29uc3RydWN0IDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IG9iamVjdHMgYnkKKyAgICAg IHVzaW5nIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4tc3BlY2lmaWMK KyAgICAgIDxmdW5jdGlvbj50b19qc29uKCk8L2Z1bmN0aW9uPi88ZnVuY3Rpb24+dG9fanNv bmIoKTwvZnVuY3Rpb24+IGZ1bmN0aW9ucy4KKyAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJm dW5jdGlvbnMtanNvbi1jcmVhdGlvbi10YWJsZSIvPiBmb3IgZGV0YWlscy4KKyAgICAgPC9w YXJhPgorICAgIDwvc2VjdDU+CisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RXhhbXBsZXM8 L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgIENvbnN0cnVjdCBhIEpTT04gZnJvbSB0aGUg cHJvdmlkZWQgdmFsdWVzIHZhcmlvdXMgdHlwZXM6CisgICAgIDwvcGFyYT4KKzxzY3JlZW4+ CitTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzLjQ1KTsKKyBqc29uX3NjYWxhcgorLS0tLS0tLS0t LS0tLQorIDEyMy40NQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9TQ0FMQVIoJzEyMycpOwor IGpzb25fc2NhbGFyCistLS0tLS0tLS0tLS0tCisgIjEyMyIKKygxIHJvdykKKworU0VMRUNU IEpTT05fU0NBTEFSKHRydWUpOworIGpzb25fc2NhbGFyCistLS0tLS0tLS0tLS0tCisgdHJ1 ZQorKDEgcm93KQorPC9zY3JlZW4+CisgICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+CisKKyAg IDxzZWN0NCBpZD0iZnVuY3Rpb25zLWpzb25vYmplY3QiPgorICAgIDx0aXRsZT48bGl0ZXJh bD5KU09OX09CSkVDVDwvbGl0ZXJhbD48L3RpdGxlPgorICAgIDxpbmRleHRlcm0+PHByaW1h cnk+anNvbl9vYmplY3Q8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisKKzxzeW5vcHNpcz4KKzxm dW5jdGlvbj5KU09OX09CSkVDVDwvZnVuY3Rpb24+ICgKKyAgPG9wdGlvbmFsPiB7IDxwYXJh bWV0ZXI+a2V5X2V4cHJlc3Npb248L3BhcmFtZXRlcj4geyBWQUxVRSB8ICc6JyB9CisgICAg ICA8cGFyYW1ldGVyPnZhbHVlX2V4cHJlc3Npb248L3BhcmFtZXRlcj4gPG9wdGlvbmFsPiBG T1JNQVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRp b25hbD4gfTxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgIDxvcHRp b25hbD4geyBOVUxMIHwgQUJTRU5UIH0gT04gTlVMTCA8L29wdGlvbmFsPgorICA8b3B0aW9u YWw+IHsgV0lUSCB8IFdJVEhPVVQgfSBVTklRVUUgPG9wdGlvbmFsPiBLRVlTIDwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4gUkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZP Uk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlv bmFsPiA8L29wdGlvbmFsPgorKQorPC9zeW5vcHNpcz4KKworICAgIDxzZWN0NT4KKyAgICAg PHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSA8 ZnVuY3Rpb24+SlNPTl9PQkpFQ1Q8L2Z1bmN0aW9uPiBmdW5jdGlvbiBnZW5lcmF0ZXMgYSA8 YWNyb255bT5KU09OPC9hY3JvbnltPgorICAgICAgb2JqZWN0IGZyb20gPGFjcm9ueW0+U1FM PC9hY3JvbnltPiBvciA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhLgorICAgICA8L3Bh cmE+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPlBhcmFtZXRl cnM8L3RpdGxlPgorICA8dmFyaWFibGVsaXN0PgorCisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPgorICAgICAgPGxpdGVyYWw+CisgICAgICAgPHBhcmFtZXRlcj5rZXlfZXhwcmVz c2lvbjwvcGFyYW1ldGVyPiB7IFZBTFVFIHwgJzonIH0KKyAgICAgICA8cGFyYW1ldGVyPnZh bHVlX2V4cHJlc3Npb248L3BhcmFtZXRlcj4gPG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8b3B0 aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgICAgIDwv bGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAg ICAgVGhlIGlucHV0IGNsYXVzZSB0aGF0IHByb3ZpZGVzIHRoZSBkYXRhIGZvciBjb25zdHJ1 Y3RpbmcgYSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3Q6CisgICAgPC9wYXJhPgor ICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICAgIDxwYXJhPgorICAgICAgICAgICAgICA8cGFyYW1ldGVyPmtleV9leHByZXNzaW9uPC9w YXJhbWV0ZXI+IGlzIGEgc2NhbGFyIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgZGVmaW5p bmcgdGhlIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IGtleSwgd2hpY2ggaXMgaW1wbGljaXRs eQorICAgICAgICAgICAgICBjb252ZXJ0ZWQgdG8gdGhlIDx0eXBlPnRleHQ8L3R5cGU+IHR5 cGUuCisgICAgICAgICAgICAgIFRoZSBwcm92aWRlZCBleHByZXNzaW9uIGNhbm5vdCBiZSA8 bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBvcgorICAgICAgICAgICAgICBiZWxvbmcgdG8gYSB0 eXBlIHRoYXQgaGFzIGEgY2FzdCB0byA8dHlwZT5qc29uPC90eXBlPi4KKyAgICAgICAgICAg IDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICA8cGFyYW1ldGVyPnZhbHVlX2V4 cHJlc3Npb248L3BhcmFtZXRlcj4gaXMgYW4gZXhwcmVzc2lvbgorICAgICAgICAgICAgICB0 aGF0IHByb3ZpZGVzIHRoZSBpbnB1dCBmb3IgdGhlIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+ IHZhbHVlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAg IFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+IGNsYXVzZSBpcyBwcm92 aWRlZCB0bworICAgICAgICAgICAgICBjb25mb3JtIHRvIHRoZSBTUUwvSlNPTiBzdGFuZGFy ZC4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAg ICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPHBhcmE+CisgICAgICAgIFlvdSBtdXN0 IHVzZSBhIGNvbG9uIG9yIHRoZSA8bGl0ZXJhbD5WQUxVRTwvbGl0ZXJhbD4ga2V5d29yZCBh cyBhCisgICAgICAgIGRlbGltaXRlciBiZXR3ZWVuIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZS4g TXVsdGlwbGUga2V5L3ZhbHVlIHBhaXJzIGFyZQorICAgICAgICBzZXBhcmF0ZWQgYnkgY29t bWFzLgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+eyBO VUxMIHwgQUJTRU5UIH0gT04gTlVMTDwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgIERlZmluZXMgd2hldGhlciA8bGl0ZXJh bD5OVUxMPC9saXRlcmFsPiB2YWx1ZXMgYXJlIGFsbG93ZWQgaW4gdGhlIGNvbnN0cnVjdGVk CisgICAgICAgIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IG9iamVjdDoKKyAgICAgICAgPC9w YXJhPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD48L3Rlcm0+CisgICAg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAg RGVmYXVsdC4gPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gdmFsdWVzIGFyZSBhbGxvd2VkLgor ICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAg ICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAg ICAgPHRlcm0+PGxpdGVyYWw+QUJTRU5UPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgSWYgdGhl IHZhbHVlIGlzIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+LAorICAgICAgICAgICAgICB0aGUg Y29ycmVzcG9uZGluZyBrZXkvdmFsdWUgcGFpciBpcyBvbWl0dGVkIGZyb20gdGhlIGdlbmVy YXRlZAorICAgICAgICAgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3QuCisg ICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAg ICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8L2xp c3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT4KKyAgICAgPGxpdGVyYWw+eyBXSVRIIHwgV0lUSE9VVCB9IFVOSVFVRSA8b3B0 aW9uYWw+IEtFWVMgPC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+RGVmaW5lcyB3aGV0aGVyIGR1cGxpY2F0ZSBrZXlzIGFy ZSBhbGxvd2VkOgorICAgICA8L3BhcmE+CisgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPldJVEhPVVQ8 L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAg PHBhcmE+CisgICAgICAgICAgICAgIERlZmF1bHQuIFRoZSBjb25zdHJ1Y3RlZAorICAgICAg ICAgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3QgY2FuIGNvbnRhaW4gZHVw bGljYXRlIGtleXMuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5XSVRIPC9saXRlcmFsPjwvdGVybT4K KyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAg ICAgICAgRHVwbGljYXRlIGtleXMgYXJlIG5vdCBhbGxvd2VkLgorICAgICAgICAgICAgICBJ ZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBkdXBsaWNhdGUga2V5cywgYW4gZXJyb3IgaXMg cmV0dXJuZWQuCisgICAgICAgICAgICAgIFRoaXMgY2hlY2sgaXMgcGVyZm9ybWVkIGJlZm9y ZSByZW1vdmluZyBKU09OIGl0ZW1zIHdpdGggTlVMTCB2YWx1ZXMuCisgICAgICAgICAgICAg PC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8cGFyYT4KKyAgICAgICBP cHRpb25hbGx5LCB5b3UgY2FuIGFkZCB0aGUgPGxpdGVyYWw+S0VZUzwvbGl0ZXJhbD4ga2V5 d29yZCBmb3Igc2VtYW50aWMgY2xhcml0eS4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKworICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PgorICAgICA8bGl0ZXJhbD5SRVRVUk5JTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gRk9STUFUIEpTT04gPG9w dGlvbmFsPiBFTkNPRElORyBVVEY4IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+PC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgIFRo ZSBvdXRwdXQgY2xhdXNlIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBnZW5lcmF0 ZWQgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0LgorICAgICAgIEZvciBkZXRhaWxz LCBzZWUgPHhyZWYgbGlua2VuZD0ic3FsanNvbi1vdXRwdXQtY2xhdXNlIi8+LgorICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8L3Zh cmlhYmxlbGlzdD4KKyAgICA8L3NlY3Q1PgorCisgPHNlY3Q1PgorICA8dGl0bGU+Tm90ZXM8 L3RpdGxlPgorICA8cGFyYT5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNvbnN0cnVjdCA8YWNy b255bT5KU09OPC9hY3JvbnltPiBvYmplY3RzIGJ5IHVzaW5nCisgIDxwcm9kdWN0bmFtZT5Q b3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4tc3BlY2lmaWMgPGZ1bmN0aW9uPmpzb25fYnVpbGRf b2JqZWN0KCk8L2Z1bmN0aW9uPi8KKyAgPGZ1bmN0aW9uPmpzb25iX2J1aWxkX29iamVjdCgp PC9mdW5jdGlvbj4gZnVuY3Rpb25zLgorICBTZWUgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25z LWpzb24tY3JlYXRpb24tdGFibGUiLz4gZm9yIGRldGFpbHMuCisgIDwvcGFyYT4KKyA8L3Nl Y3Q1PgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorICA8 cGFyYT4KKyAgIENvbnN0cnVjdCBhIEpTT04gb2JqZWN0IGZyb20gdGhlIHByb3ZpZGVkIGtl eS92YWx1ZSBwYWlycyBvZiB2YXJpb3VzIHR5cGVzOgorICA8L3BhcmE+Cis8c2NyZWVuPgor U0VMRUNUIEpTT05fT0JKRUNUKAorLS0gc2NhbGFyIEpTT04gdHlwZXMKKyAna2V5MSc6ICdz dHJpbmcnLAorICdrZXkyJzogJ1sxLCAyXScsCisgJ2tleTMnIFZBTFVFIDEyMywgLS0gYWx0 ZXJuYXRpdmUgc3ludGF4IGZvciBrZXktdmFsdWUgZGVsaW1pdGVyCisgJ2tleTQnOiBOVUxM LAorLS0gb3RoZXIgdHlwZXMKKyAna2V5NSc6IEFSUkFZWzEsIDIsIDNdLCAtLSBwb3N0Z3Jl cyBhcnJheQorICdrZXk2JzoganNvbmIgJ3siYSI6IFsiYiIsIDFdfScsIC0tIGNvbXBvc2l0 ZSBqc29uL2pzb25iCisgJ2tleTcnOiBkYXRlICcyMDE3LTA5LTMwJywgLS0gZGF0ZXRpbWUg dHlwZQorICdrZXk4Jzogcm93KDEsICdhJyksIC0tIHJvdyB0eXBlCisgJ2tleTknOiAnWzEs IDJdJyBGT1JNQVQgSlNPTiwgLS0gc2FtZSB2YWx1ZSBhcyBmb3Iga2V5MiwgYnV0IHdpdGgg Rk9STUFUCistLSBrZXkgY2FuIGJlIGFuIGV4cHJlc3Npb24KKyAgJ2tleScgfHwgJ2xhc3Qn IDogVFJVRQorQUJTRU5UIE9OIE5VTEwpIEFTIGpzb247CisgICAgICAgICAgICAgICAgICAg ICAgIGpzb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK3sia2V5MSIgOiAic3RyaW5nIiwgImtleTIiIDogIlsxLCAyXSIsICJrZXkz IiA6IDEyMywKKyAia2V5NSIgOiBbMSwyLDNdLCAia2V5NiIgOiB7ImEiOiBbImIiLCAxXX0s CisgImtleTciIDogIjIwMTctMDktMzAiLCAia2V5OCIgOiB7ImYxIjoxLCJmMiI6ImEifSwK KyAia2V5OSIgOiBbMSwgMl0sICJrZXlsYXN0IiA6IHRydWV9CisoMSByb3cpCis8L3NjcmVl bj4KKworICA8cGFyYT4KKyAgIEZyb20gdGhlIDxzdHJ1Y3RuYW1lPmZpbG1zPC9zdHJ1Y3Ru YW1lPiB0YWJsZSwgc2VsZWN0IHNvbWUgZGF0YQorICAgYWJvdXQgdGhlIGZpbG1zIGRpc3Ry aWJ1dGVkIGJ5IFBhcmFtb3VudCBQaWN0dXJlcworICAgKDxsaXRlcmFsPmRpZDwvbGl0ZXJh bD4gPSAxMDMpIGFuZCByZXR1cm4gSlNPTiBvYmplY3RzOgorICA8L3BhcmE+Cis8c2NyZWVu PgorU0VMRUNUCitKU09OX09CSkVDVCgKKyAnY29kZScgVkFMVUUgZi5jb2RlLAorICd0aXRs ZScgVkFMVUUgZi50aXRsZSwKKyAnZGlkJyBWQUxVRSBmLmRpZAorKSBBUyBwYXJhbW91bnQK K0ZST00gZmlsbXMgQVMgZgorV0hFUkUgZi5kaWQgPSAxMDM7CisgICAgICAgICAgICAgICAg ICAgIHBhcmFtb3VudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoreyJjb2RlIiA6ICJQXzMwMSIsICJ0aXRsZSIgOiAiVmVydGlnbyIs ICJkaWQiIDogMTAzfQoreyJjb2RlIiA6ICJQXzMwMiIsICJ0aXRsZSIgOiAiQmVja2V0Iiwg ImRpZCIgOiAxMDN9Cit7ImNvZGUiIDogIlBfMzAzIiwgInRpdGxlIiA6ICI0OCBIcnMiLCAi ZGlkIiA6IDEwM30KKygzIHJvd3MpCis8L3NjcmVlbj4KKyAgICA8L3NlY3Q1PgorICAgPC9z ZWN0ND4KKworICAgPHNlY3Q0IGlkPSJmdW5jdGlvbnMtanNvbm9iamVjdGFnZyI+CisgICA8 dGl0bGU+PGxpdGVyYWw+SlNPTl9PQkpFQ1RBR0c8L2xpdGVyYWw+PC90aXRsZT4KKyAgIDxp bmRleHRlcm0+PHByaW1hcnk+anNvbl9vYmplY3RhZ2c8L3ByaW1hcnk+PC9pbmRleHRlcm0+ CisgICAKKzxzeW5vcHNpcz4KKzxmdW5jdGlvbj5KU09OX09CSkVDVEFHRzwvZnVuY3Rpb24+ ICgKKyAgPG9wdGlvbmFsPiB7IDxwYXJhbWV0ZXI+a2V5X2V4cHJlc3Npb248L3BhcmFtZXRl cj4geyBWQUxVRSB8ICc6JyB9IDxwYXJhbWV0ZXI+dmFsdWVfZXhwcmVzc2lvbjwvcGFyYW1l dGVyPiB9IDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4geyBOVUxMIHwgQUJTRU5UIH0gT04g TlVMTCA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IHsgV0lUSCB8IFdJVEhPVVQgfSBVTklR VUUgPG9wdGlvbmFsPiBLRVlTIDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgIDxvcHRpb25h bD4gUkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJ TkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorKQorCis8L3N5 bm9wc2lzPgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxl PgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIDxmdW5jdGlvbj5KU09OX09CSkVDVEFHRzwv ZnVuY3Rpb24+IGZ1bmN0aW9uIGFnZ3JlZ2F0ZXMgdGhlIHByb3ZpZGVkIGRhdGEKKyAgICAg IGludG8gYSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3QuIFlvdSBjYW4gdXNlIHRo aXMgZnVuY3Rpb24gdG8gY29tYmluZSB2YWx1ZXMKKyAgICAgIHN0b3JlZCBpbiBkaWZmZXJl bnQgdGFibGUgY29sdW1ucyBpbnRvIHBhaXJzLiBJZiB5b3Ugc3BlY2lmeSBhIDxjb21tYW5k PkdST1VQIEJZPC9jb21tYW5kPgorICAgICAgb3IgYW4gPGNvbW1hbmQ+T1JERVIgQlk8L2Nv bW1hbmQ+IGNsYXVzZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgc2VwYXJhdGUgSlNPTiBv YmplY3QKKyAgICAgIGZvciBlYWNoIHRhYmxlIHJvdy4KKyAgICA8L3BhcmE+CisgICAgPC9z ZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgor CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAg ICA8bGl0ZXJhbD48cGFyYW1ldGVyPmtleV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+IHsgVkFM VUUgfCAnOicgfSA8cGFyYW1ldGVyPnZhbHVlX2V4cHJlc3Npb248L3BhcmFtZXRlcj48L2xp dGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAg ICAgVGhlIGlucHV0IGNsYXVzZSB0aGF0IHByb3ZpZGVzIHRoZSBkYXRhIHRvIGJlIGFnZ3Jl Z2F0ZWQgYXMgYSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3Q6CisgICAgPC9wYXJh PgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICA8cGFyYW1ldGVyPmtleV9leHByZXNzaW9u PC9wYXJhbWV0ZXI+IGlzIGEgc2NhbGFyIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgZGVm aW5pbmcgdGhlIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IGtleSwgd2hpY2ggaXMgaW1wbGlj aXRseQorICAgICAgICAgICAgICBjb252ZXJ0ZWQgdG8gdGhlIDx0eXBlPnRleHQ8L3R5cGU+ IHR5cGUuCisgICAgICAgICAgICAgIFRoZSBwcm92aWRlZCBleHByZXNzaW9uIGNhbm5vdCBi ZSA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBvcgorICAgICAgICAgICAgICBiZWxvbmcgdG8g YSB0eXBlIHRoYXQgaGFzIGEgY2FzdCB0byA8dHlwZT5qc29uPC90eXBlPi4KKyAgICAgICAg ICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICA8cGFyYW1ldGVyPnZhbHVl X2V4cHJlc3Npb248L3BhcmFtZXRlcj4gaXMgYW4gZXhwcmVzc2lvbiB0aGF0CisgICAgICAg ICAgICAgIHByb3ZpZGVzIHRoZSBpbnB1dCBmb3IgdGhlIDxhY3JvbnltPkpTT048L2Fjcm9u eW0+IHZhbHVlIHByZWNlZGVkCisgICAgICAgICAgICAgIGJ5IGl0cyB0eXBlLgorICAgICAg ICAgICAgICBGb3IgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gc2NhbGFyIHR5cGVzLCB5b3Ug Y2FuIG9taXQgdGhlIHR5cGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8 bm90ZT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGlucHV0 IHZhbHVlIG9mIHRoZSA8bGl0ZXJhbD5ieXRlYTwvbGl0ZXJhbD4gdHlwZSBtdXN0IGJlIHN0 b3JlZCBpbiA8bGl0ZXJhbD5VVEY4PC9saXRlcmFsPgorICAgICAgICAgICAgICAgIGFuZCBj b250YWluIGEgdmFsaWQgPGxpdGVyYWw+VVRGODwvbGl0ZXJhbD4gc3RyaW5nLiBPdGhlcndp c2UsIGFuIGVycm9yIG9jY3Vycy4KKyAgICAgICAgICAgICAgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+IGN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IDxsaXRlcmFs PlVURjg8L2xpdGVyYWw+LgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8 L25vdGU+CisgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwvaXRlbWl6ZWRs aXN0PgorICAgICAgPHBhcmE+CisgICAgICAgIFlvdSBtdXN0IHVzZSBhIGNvbG9uIG9yIHRo ZSA8bGl0ZXJhbD5WQUxVRTwvbGl0ZXJhbD4ga2V5d29yZCBhcyBhIGRlbGltaXRlciBiZXR3 ZWVuCisgICAgICAgIGtleXMgYW5kIHZhbHVlcy4gTXVsdGlwbGUga2V5L3ZhbHVlIHBhaXJz IGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT4KKyAgICAgPGxpdGVyYWw+eyBOVUxMIHwgQUJTRU5UIH0gT04gTlVMTDwvbGl0ZXJhbD4K KyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgIERl ZmluZXMgd2hldGhlciA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB2YWx1ZXMgYXJlIGFsbG93 ZWQgaW4gdGhlIGNvbnN0cnVjdGVkCisgICAgICAgIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+ IG9iamVjdDoKKyAgICAgICAgPC9wYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPk5VTEw8L2xp dGVyYWw+PC90ZXJtPgorICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBh cmE+CisgICAgICAgICAgICAgIERlZmF1bHQuIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHZh bHVlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPkFCU0VOVDwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBpcyA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiwK KyAgICAgICAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcga2V5L3ZhbHVlIHBhaXIgaXMgb21p dHRlZCBmcm9tIHRoZSBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgPGFjcm9ueW0+SlNPTjwv YWNyb255bT4gb2JqZWN0LgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwv bGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgIDwvdmFyaWFi bGVsaXN0PgorICAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPnsgV0lUSCB8IFdJ VEhPVVQgfSBVTklRVUUgPG9wdGlvbmFsPiBLRVlTIDwvb3B0aW9uYWw+PC9saXRlcmFsPgor ICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPkRlZmluZXMgd2hldGhl ciBkdXBsaWNhdGUga2V5cyBhcmUgYWxsb3dlZDoKKyAgICAgPC9wYXJhPgorICAgICAgICA8 dmFyaWFibGVsaXN0PgorICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgPHRl cm0+PGxpdGVyYWw+V0lUSE9VVDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgRGVmYXVsdC4gVGhl IGNvbnN0cnVjdGVkCisgICAgICAgICAgICAgIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IG9i amVjdCBjYW4gY29udGFpbiBkdXBsaWNhdGUga2V5cy4KKyAgICAgICAgICAgICA8L3BhcmE+ CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5Pgor ICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPldJ VEg8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAg ICAgIDxwYXJhPgorICAgICAgICAgICAgICBEdXBsaWNhdGUga2V5cyBhcmUgbm90IGFsbG93 ZWQuCisgICAgICAgICAgICAgIElmIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGR1cGxpY2F0 ZSBrZXlzLCBhbiBlcnJvciBpcyByZXR1cm5lZC4KKyAgICAgICAgICAgICAgVGhpcyBjaGVj ayBpcyBwZXJmb3JtZWQgYmVmb3JlIHJlbW92aW5nIEpTT04gaXRlbXMgd2l0aCBOVUxMIHZh bHVlcy4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAg ICAgIDxwYXJhPgorICAgICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCB0aGUgPGxpdGVy YWw+S0VZUzwvbGl0ZXJhbD4ga2V5d29yZCBmb3Igc2VtYW50aWMgY2xhcml0eS4KKyAgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKworICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5SRVRVUk5JTkcgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDxvcHRp b25hbD4gRk9STUFUIEpTT04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4IDwvb3B0aW9uYWw+ IDwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgIFRoZSBvdXRwdXQgY2xhdXNlIHRoYXQgc3BlY2lmaWVzIHRo ZSB0eXBlIG9mIHRoZSBnZW5lcmF0ZWQgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0 LgorICAgICAgIEZvciBkZXRhaWxzLCBzZWUgPHhyZWYgbGlua2VuZD0ic3FsanNvbi1vdXRw dXQtY2xhdXNlIi8+LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9zZWN0NT4KKworIDxz ZWN0NT4KKyAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgPHBhcmE+QWx0ZXJuYXRpdmVseSwg eW91IGNhbiBjcmVhdGUgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0cyBieSB1c2lu ZworICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+LXNwZWNpZmljIDxm dW5jdGlvbj5qc29uX29iamVjdF9hZ2coKTwvZnVuY3Rpb24+LworICA8ZnVuY3Rpb24+anNv bmJfb2JqZWN0X2FnZygpPC9mdW5jdGlvbj4gYWdncmVnYXRlIGZ1bmN0aW9ucy4KKyAgU2Vl IDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1hZ2dyZWdhdGUiLz4gZm9yIGRldGFpbHMuCisg IDwvcGFyYT4KKyA8L3NlY3Q1PgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RXhhbXBs ZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgIEZvciBmaWxtcyB3aXRoIDxsaXRlcmFsPmRp ZDwvbGl0ZXJhbD4gPSAxMDMsIGFnZ3JlZ2F0ZSBrZXkvdmFsdWUgcGFpcnMKKyAgICBvZiBm aWxtIGdlbnJlICg8bGl0ZXJhbD5mLmtpbmQ8L2xpdGVyYWw+KSBhbmQgdGl0bGUgKDxsaXRl cmFsPmYudGl0bGU8L2xpdGVyYWw+KQorICAgIGludG8gYSBzaW5nbGUgb2JqZWN0OgorICA8 L3BhcmE+Cis8c2NyZWVuPgorU0VMRUNUCitKU09OX09CSkVDVEFHRygKKyBmLmtpbmQgVkFM VUUgZi50aXRsZSkKKyBBUyBmaWxtc19saXN0CitGUk9NIGZpbG1zIEFTIGYKK3doZXJlIGYu ZGlkID0gMTAzOworICAgICAgICAgICAgICAgICBmaWxtc19saXN0CistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit7ICJBY3Rpb24iIDog IlZlcnRpZ28iLCAiRHJhbWEiIDogIkJlY2tldCIsICJBY3Rpb24iIDogIjQ4IEhycyIgfQor PC9zY3JlZW4+CisKKyAgPHBhcmE+CisgICAgUmV0dXJuIHRoZSBzYW1lIG9iamVjdCBhcyA8 dHlwZT5qc29uYjwvdHlwZT4uIE5vdGUgdGhhdCBvbmx5IGEgc2luZ2xlIGZpbG0gb2YKKyAg ICB0aGUgYWN0aW9uIGdlbnJlIGlzIGluY2x1ZGVkIGFzIHRoZSA8dHlwZT5qc29uYjwvdHlw ZT4gdHlwZSBkb2VzIG5vdCBhbGxvdyBkdXBsaWNhdGUga2V5cy4KKyAgPC9wYXJhPgorPHNj cmVlbj4KK1NFTEVDVAorSlNPTl9PQkpFQ1RBR0coCisgIGYua2luZCBWQUxVRSBmLnRpdGxl CisgIFJFVFVSTklORyBqc29uYikKK0FTIGZpbG1zX2xpc3QKK0ZST00gZmlsbXMgQVMgZgor d2hlcmUgZi5kaWQgPSAxMDM7CisgICAgICAgICAgICAgICAgIGZpbG1zX2xpc3QKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3siRHJh bWEiOiAiQmVja2V0IiwgIkFjdGlvbiI6ICI0OCBIcnMifQorPC9zY3JlZW4+CisKKyAgPHBh cmE+CisgICAgUmV0dXJuIG9iamVjdHMgb2YgZmlsbSB0aXRsZXMgYW5kIGxlbmd0aCwgZ3Jv dXBlZCBieSB0aGUgZmlsbSBnZW5yZToKKyAgPC9wYXJhPgorPHNjcmVlbj4KK1NFTEVDVAor ICBmLmtpbmQsCisgIEpTT05fT0JKRUNUQUdHKAorICAgIGYudGl0bGUgVkFMVUUgZi5sZW4K KykgQVMgZmlsbXNfbGlzdAorRlJPTSBmaWxtcyBBUyBmCitHUk9VUCBCWSBmLmtpbmQ7CisK KyAgICAga2luZCAgICB8ICAgICAgICBmaWxtc19saXN0CistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK011c2ljYWwgICAgICB8IHsgIldlc3Qg U2lkZSBTdG9yeSIgOiAiMDI6MzI6MDAiLCAiVGhlIEtpbmcgYW5kIEkiIDogIjAyOjEzOjAw IiwgIkJlZCBLbm9icyBhbmQgQnJvb21zdGlja3MiIDogIjAxOjU3OjAwIiB9CitSb21hbnRp YyAgICAgfCB7ICJUaGUgQWZyaWNhbiBRdWVlbiIgOiAiMDE6NDM6MDAiLCAiVW5lIEZlbW1l IGVzdCB1bmUgRmVtbWUiIDogIjAxOjI1OjAwIiwgIlN0b3JpYSBkaSB1bmEgZG9ubmEiIDog IjAxOjMwOjAwIiB9CitDb21lZHkgICAgICAgfCB7ICJCYW5hbmFzIiA6ICIwMToyMjowMCIs ICJUaGVyZSdzIGEgR2lybCBpbiBteSBTb3VwIiA6ICIwMTozNjowMCIgfQorRHJhbWEgICAg ICAgIHwgeyAiVGhlIFRoaXJkIE1hbiIgOiAiMDE6NDQ6MDAiLCAiQmVja2V0IiA6ICIwMjoy ODowMCIsICJXYXIgYW5kIFBlYWNlIiA6ICIwNTo1NzowMCIsICJZb2ppbWJvIiA6ICIwMTo1 MDowMCIsICJEYXMgQm9vdCIgOiAiMDI6Mjk6MDAiIH0KK0FjdGlvbiAgICAgICB8IHsgIlZl cnRpZ28iIDogIjAyOjA4OjAwIiwgIjQ4IEhycyIgOiAiMDE6Mzc6MDAiLCAiVGF4aSBEcml2 ZXIiIDogIjAxOjU0OjAwIiwgIkFic2VuY2Ugb2YgTWFsaWNlIiA6ICIwMTo1NTowMCIgfQor KDUgcm93cykKKzwvc2NyZWVuPgorICAgIDwvc2VjdDU+CisgICA8L3NlY3Q0PgorCisgICA8 c2VjdDQgaWQ9ImZ1bmN0aW9ucy1qc29uYXJyYXkiPgorICAgIDx0aXRsZT48bGl0ZXJhbD5K U09OX0FSUkFZPC9saXRlcmFsPjwvdGl0bGU+CisgICAgPGluZGV4dGVybT48cHJpbWFyeT5q c29uX2FycmF5PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorCis8c3lub3BzaXM+Cis8ZnVuY3Rp b24+SlNPTl9BUlJBWTwvZnVuY3Rpb24+ICgKKyAgPG9wdGlvbmFsPiB7IDxwYXJhbWV0ZXI+ dmFsdWVfZXhwcmVzc2lvbjwvcGFyYW1ldGVyPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDwv b3B0aW9uYWw+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAg PG9wdGlvbmFsPiB7IE5VTEwgfCBBQlNFTlQgfSBPTiBOVUxMIDwvb3B0aW9uYWw+CisgIDxv cHRpb25hbD4gUkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRh X3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4g RU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorKQor PC9zeW5vcHNpcz4KKzxzeW5vcHNpcz5KU09OX0FSUkFZICgKKyAgPG9wdGlvbmFsPiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVlcnlfZXhwcmVzc2lvbjwvcmVwbGFjZWFi bGU+IDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4gUkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZP Uk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlv bmFsPiA8L29wdGlvbmFsPgorKQorPC9zeW5vcHNpcz4KKworICAgIDxzZWN0NT4KKyAgICAg PHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSA8 ZnVuY3Rpb24+SlNPTl9BUlJBWTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSA8 YWNyb255bT5KU09OPC9hY3JvbnltPiBhcnJheSBmcm9tCisgICAgICB0aGUgcHJvdmlkZWQg PGFjcm9ueW0+U1FMPC9hY3JvbnltPiBvciA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRh LgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRp dGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgIDx0ZXJtPgorICAgICAgICA8bGl0ZXJhbD48cGFyYW1ldGVyPnZh bHVlX2V4cHJlc3Npb248L3BhcmFtZXRlcj48L2xpdGVyYWw+CisgICAgICA8L3Rlcm0+Cisg ICAgICA8bGlzdGl0ZW0+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGlucHV0 IGNsYXVzZSB0aGF0IHByb3ZpZGVzIHRoZSBkYXRhIGZvciBjb25zdHJ1Y3RpbmcgYSBKU09O IGFycmF5LgorICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dmFsdWVfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IGlzIGFuIGV4cHJlc3Npb24KKyAgICAg ICAgICB0aGF0IHByb3ZpZGVzIHRoZSBpbnB1dCBmb3IgdGhlIDxhY3JvbnltPkpTT048L2Fj cm9ueW0+IHZhbHVlIHByZWNlZGVkIGJ5IGl0cyB0eXBlLgorICAgICAgICAgIEZvciA8YWNy b255bT5KU09OPC9hY3JvbnltPiBzY2FsYXIgdHlwZXMsIHlvdSBjYW4gb21pdCB0aGUgdHlw ZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgIFRoZSBpbnB1dCB2YWx1ZSBvZiB0aGUgPGxpdGVyYWw+Ynl0ZWE8L2xp dGVyYWw+IHR5cGUgbXVzdCBiZSBzdG9yZWQgaW4gPGxpdGVyYWw+VVRGODwvbGl0ZXJhbD4K KyAgICAgICAgICAgIGFuZCBjb250YWluIGEgdmFsaWQgPGxpdGVyYWw+VVRGODwvbGl0ZXJh bD4gc3RyaW5nLiBPdGhlcndpc2UsIGFuIGVycm9yIG9jY3Vycy4KKyAgICAgICAgICAgIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gY3VycmVudGx5IHN1cHBvcnRz IG9ubHkgPGxpdGVyYWw+VVRGODwvbGl0ZXJhbD4uCisgICAgICAgICAgPC9wYXJhPgorICAg ICAgICA8L25vdGU+CisKKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK KyAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+CisgICAgICAgIDxsaXRlcmFsPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdWVyeV9leHByZXNzaW9uPC9yZXBsYWNl YWJsZT48L2xpdGVyYWw+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgIDxwYXJhPgorICAgICAgICAgIEFuIFNRTCBxdWVyeSB0aGF0IHByb3ZpZGVzIHRoZSBk YXRhIGZvciBjb25zdHJ1Y3RpbmcgYSBKU09OIGFycmF5LgorICAgICAgICAgIFRoZSBxdWVy eSBtdXN0IHJldHVybiBhIHNpbmdsZSBjb2x1bW4gdGhhdCBob2xkcyB0aGUgdmFsdWVzIHRv IGJlCisgICAgICAgICAgdXNlZCBpbiB0aGUgYXJyYXkuCisgICAgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IE5VTEwgfCBBQlNFTlQgfSBPTiBOVUxM PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4K KyAgICAgICAgRGVmaW5lcyB3aGV0aGVyIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHZhbHVl cyBhcmUgYWxsb3dlZCBpbiB0aGUgZ2VuZXJhdGVkIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+ IGFycmF5OgorICAgICAgPC9wYXJhPgorICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5OVUxMPC9saXRl cmFsPjwvdGVybT4KKyAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJh PgorICAgICAgICAgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB2YWx1ZXMgYXJlIGFs bG93ZWQuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5BQlNFTlQ8L2xpdGVyYWw+PC90ZXJtPgorICAg ICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAg ICBEZWZhdWx0LiBJZiB0aGUgdmFsdWUgaXMgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4sCisg ICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGtleS92YWx1ZSBwYWlyIGlzIG9taXR0 ZWQgZnJvbSB0aGUgZ2VuZXJhdGVkCisgICAgICAgICAgICAgIDxhY3JvbnltPkpTT048L2Fj cm9ueW0+IG9iamVjdC4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xp c3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8L3ZhcmlhYmxl bGlzdD4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBjbGF1c2UgaXMgb25seSBz dXBwb3J0ZWQgZm9yIGFycmF5cyBidWlsdCBmcm9tIGFuIGV4cGxpY2l0IGxpc3Qgb2YgdmFs dWVzLgorICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgYW4gU1FMIHF1ZXJ5IHRvIGdlbmVy YXRlIGFuIGFycmF5LCBOVUxMIHZhbHVlcyBhcmUgYWx3YXlzCisgICAgICAgICAgb21pdHRl ZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+ UkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3Jl cGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcg VVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgICBUaGUgb3V0cHV0IGNsYXVzZSB0 aGF0IHNwZWNpZmllcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGNvbnN0cnVjdGVkIDxhY3Jv bnltPkpTT048L2Fjcm9ueW0+IGFycmF5LgorICAgICAgIEZvciBkZXRhaWxzLCBzZWUgPHhy ZWYgbGlua2VuZD0ic3FsanNvbi1vdXRwdXQtY2xhdXNlIi8+LgorICAgICAgPC9wYXJhPgor ICAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKzwvdmFyaWFibGVsaXN0 PgorICAgIDwvc2VjdDU+CisKKyA8c2VjdDU+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+Cisg IDxwYXJhPkFsdGVybmF0aXZlbHksIHlvdSBjYW4gY3JlYXRlIDxhY3JvbnltPkpTT048L2Fj cm9ueW0+IGFycmF5cyBieSB1c2luZworICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+LXNwZWNpZmljIDxmdW5jdGlvbj5qc29uX2J1aWxkX2FycmF5KCk8L2Z1bmN0 aW9uPi8KKyAgPGZ1bmN0aW9uPmpzb25iX2J1aWxkX2FycmF5KCk8L2Z1bmN0aW9uPiBmdW5j dGlvbnMuCisgIFNlZSA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbiIvPiBmb3IgZGV0 YWlscy4KKyAgPC9wYXJhPgorIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRs ZT5FeGFtcGxlczwvdGl0bGU+CisgIDxwYXJhPgorICAgIEZyb20gdGhlIDxzdHJ1Y3RuYW1l PmZpbG1zPC9zdHJ1Y3RuYW1lPiB0YWJsZSwgc2VsZWN0IHNvbWUgZGF0YQorICAgIGFib3V0 IHRoZSBmaWxtcyBkaXN0cmlidXRlZCBieSBQYXJhbW91bnQgUGljdHVyZXMKKyAgICAoPGxp dGVyYWw+ZGlkPC9saXRlcmFsPiA9IDEwMykgYW5kIHJldHVybiBKU09OIGFycmF5czoKKyAg PC9wYXJhPgorPHNjcmVlbj4KK1NFTEVDVAorSlNPTl9BUlJBWSgKKyAgZi5jb2RlLAorICBm LnRpdGxlLAorICBmLmRpZAorKSBBUyBmaWxtcworRlJPTSBmaWxtcyBBUyBmCitXSEVSRSBm LmRpZCA9IDEwMzsKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsbXMKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1siY29kZSIgOiAi UF8zMDEiLCAidGl0bGUiIDogIlZlcnRpZ28iLCAiZGlkIiA6IDEwM10KK1siY29kZSIgOiAi UF8zMDIiLCAidGl0bGUiIDogIkJlY2tldCIsICJkaWQiIDogMTAzXQorWyJjb2RlIiA6ICJQ XzMwMyIsICJ0aXRsZSIgOiAiNDggSHJzIiwgImRpZCIgOiAxMDNdCisoMyByb3dzKQorPC9z Y3JlZW4+CisgIDxwYXJhPgorICAgIENvbnN0cnVjdCBhIEpTT04gYXJyYXkgZnJvbSB0aGUg bGlzdCBvZiBmaWxtIHRpdGxlcyByZXR1cm5lZCBmcm9tIHRoZQorICAgIDxzdHJ1Y3RuYW1l PmZpbG1zPC9zdHJ1Y3RuYW1lPiB0YWJsZSBieSBhIHN1YnF1ZXJ5OgorICA8L3BhcmE+Cis8 c2NyZWVuPgorU0VMRUNUCitKU09OX0FSUkFZKAorICBTRUxFQ1QKKyAgZi50aXRsZQorRlJP TSBmaWxtcyBBUyBmCit3aGVyZSBmLmRpZCA9IDEwMykKK0FTIGZpbG1fdGl0bGVzOworICAg ICAgICAgICAgICAgICAgICBmaWxtX3RpdGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWyJWZXJ0aWdvIiwgIkJlY2tldCIsICI0 OCBIcnMiXQorKDEgcm93KQorPC9zY3JlZW4+CisgICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+ CisKKyAgIDxzZWN0NCBpZD0iZnVuY3Rpb25zLWpzb25hcnJheWFnZyI+CisgICAgPHRpdGxl PjxsaXRlcmFsPkpTT05fQVJSQVlBR0c8L2xpdGVyYWw+PC90aXRsZT4KKyAgICA8aW5kZXh0 ZXJtPjxwcmltYXJ5Pmpzb25fYXJyYXlhZ2c8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisKKzxz eW5vcHNpcz4KKzxmdW5jdGlvbj5KU09OX0FSUkFZQUdHPC9mdW5jdGlvbj4gKAorICA8b3B0 aW9uYWw+IDxwYXJhbWV0ZXI+dmFsdWVfZXhwcmVzc2lvbjwvcGFyYW1ldGVyPiA8L29wdGlv bmFsPgorICA8b3B0aW9uYWw+IE9SREVSIEJZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zb3J0X2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorICA8b3B0 aW9uYWw+IHsgTlVMTCB8IEFCU0VOVCB9IE9OIE5VTEwgPC9vcHRpb25hbD4KKyAgPG9wdGlv bmFsPiBSRVRVUk5JTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlw ZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gRk9STUFUIEpTT04gPG9wdGlvbmFsPiBFTkNP RElORyBVVEY4IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CispCisKKzwv c3lub3BzaXM+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0 bGU+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGZ1bmN0aW9uPkpTT05fQVJSQVlBR0c8 L2Z1bmN0aW9uPiBmdW5jdGlvbiBhZ2dyZWdhdGVzIHRoZSBwcm92aWRlZCA8YWNyb255bT5T UUw8L2Fjcm9ueW0+CisgICAgICBvciA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhIGlu dG8gYSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBhcnJheS4KKyAgICAgPC9wYXJhPgorICAg IDwvc2VjdDU+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRs ZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVy bT4KKyAgICAgICAgPGxpdGVyYWw+PHBhcmFtZXRlcj52YWx1ZV9leHByZXNzaW9uPC9wYXJh bWV0ZXI+PC9saXRlcmFsPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorCisg ICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBpbnB1dCBjbGF1c2UgdGhhdCBwcm92aWRl cyB0aGUgaW5wdXQgZGF0YSB0byBiZSBhZ2dyZWdhdGVkIGFzCisgICAgICAgICAgYSA8YWNy b255bT5KU09OPC9hY3JvbnltPiBhcnJheS4KKyAgICAgICAgICBUaGUgPHBhcmFtZXRlcj52 YWx1ZV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+IGNhbiBiZSBhIHZhbHVlIG9yIGEgcXVlcnkK KyAgICAgICAgICByZXR1cm5pbmcgdGhlIHZhbHVlcyB0byBiZSB1c2VkIGFzIGlucHV0IGlu IGFycmF5IGNvbnN0cnVjdGlvbi4KKyAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgbXVsdGlw bGUgaW5wdXQgdmFsdWVzIHNlcGFyYXRlZCBieSBjb21tYXMuCisgICAgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKzx2YXJsaXN0ZW50cnk+ CisgICAgICA8dGVybT4KKyAgICAgICAgPGxpdGVyYWw+T1JERVIgQlk8L2xpdGVyYWw+Cisg ICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgIFNvcnRzIHRoZSBpbnB1dCBkYXRhIHRvIGJlIGFnZ3JlZ2F0ZWQgYXMgYSA8YWNyb255 bT5KU09OPC9hY3JvbnltPiBhcnJheS4KKyAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUg ZXhhY3Qgc3ludGF4IG9mIHRoZSA8bGl0ZXJhbD5PUkRFUiBCWTwvbGl0ZXJhbD4gY2xhdXNl LCBzZWUgPHhyZWYgbGlua2VuZD0ic3FsLW9yZGVyYnkiLz4uCisgICAgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IE5VTEwgfCBBQlNFTlQgfSBPTiBO VUxMPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFy YT4KKyAgICAgICAgRGVmaW5lcyB3aGV0aGVyIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHZh bHVlcyBhcmUgYWxsb3dlZCBpbiB0aGUgY29uc3RydWN0ZWQgYXJyYXk6CisgICAgICAgICAg PGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAg PHBhcmE+CisgICAgICAgICAgICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gJm1kYXNo OyA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB2YWx1ZXMgYXJlIGFsbG93ZWQuCisgICAgICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxsaXRl cmFsPkFCU0VOVDwvbGl0ZXJhbD4gKGRlZmF1bHQpICZtZGFzaDsgPGxpdGVyYWw+TlVMTDwv bGl0ZXJhbD4KKyAgICAgICAgICAgICAgICB2YWx1ZXMgYXJlIG9taXR0ZWQgZnJvbSB0aGUg Z2VuZXJhdGVkIGFycmF5LgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+ CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5SRVRVUk5JTkcgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25h bD4gRk9STUFUIEpTT04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4IDwvb3B0aW9uYWw+IDwv b3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgIFRoZSBvdXRwdXQgY2xhdXNlIHRoYXQgc3BlY2lmaWVzIHRoZSBy ZXR1cm4gdHlwZSBvZiB0aGUgY29uc3RydWN0ZWQgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4g YXJyYXkuCisgICAgICAgRm9yIGRldGFpbHMsIHNlZSA8eHJlZiBsaW5rZW5kPSJzcWxqc29u LW91dHB1dC1jbGF1c2UiLz4uCisgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCis8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3NlY3Q1PgorCis8 c2VjdDU+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisgIDxwYXJhPkFsdGVybmF0aXZlbHks IHlvdSBjYW4gY3JlYXRlIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IGFycmF5cyBieSB1c2lu ZworICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+LXNwZWNpZmljIDxm dW5jdGlvbj5qc29uX2FnZygpPC9mdW5jdGlvbj4vCisgIDxmdW5jdGlvbj5qc29uYl9hZ2co KTwvZnVuY3Rpb24+IGZ1bmN0aW9ucy4KKyAgU2VlIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9u cy1hZ2dyZWdhdGUiLz4gZm9yIGRldGFpbHMuCisgIDwvcGFyYT4KKyA8L3NlY3Q1PgorCisg ICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorICAgICA8cGFyYT4K KyAgICAgICBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgZmlsbSB0aXRsZXMgc29ydGVkIGluIGFs cGhhYmV0aWNhbCBvcmRlcjoKKyAgICAgPC9wYXJhPgorPHNjcmVlbj4KK1NFTEVDVAorSlNP Tl9BUlJBWUFHRygKKyAgZi50aXRsZQorT1JERVIgQlkgZi50aXRsZSBBU0MpIEFTIGZpbG1f dGl0bGVzCitGUk9NIGZpbG1zIEFTIGY7CisgICAgICAgICAgICAgICAgICAgIGZpbG1fdGl0 bGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitbIjQ4IEhycyIsICJBYnNlbmNlIG9mIE1hbGljZSIsICJCYW5hbmFzIiwgIkJlY2tl dCIsICJCZWQgS25vYnMgYW5kIEJyb29tc3RpY2tzIiwgIkRhcyBCb290IiwgIlN0b3JpYSBk aSB1bmEgZG9ubmEiLCAiVGF4aSBEcml2ZXIiLCAiVGhlIEFmcmljYW4gUXVlZW4iLCAiVGhl IEtpbmcgYW5kIEkiLCAiVGhlcmUncyBhIEdpcmwgaW4gbXkgU291cCIsICJUaGUgVGhpcmQg TWFuIiwgIlVuZSBGZW1tZSBlc3QgdW5lIEZlbW1lIiwgIlZlcnRpZ28iLCAiV2FyIGFuZCBQ ZWFjZSIsICJXZXN0IFNpZGUgU3RvcnkiLCAiWW9qaW1ibyJdCisoMSByb3cpCis8L3NjcmVl bj4KKyAgICA8L3NlY3Q1PgorICAgPC9zZWN0ND4KKyAgPC9zZWN0Mz4KKworICA8c2VjdDMg aWQ9ImZ1bmN0aW9ucy1zcWxqc29uLXF1ZXJ5aW5nIj4KKyAgIDx0aXRsZT5RdWVyeWluZyBK U09OPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgU1FML0pTT04gcXVlcnkgZnVuY3Rpb25z IGV2YWx1YXRlIFNRTC9KU09OIHBhdGggbGFuZ3VhZ2UgZXhwcmVzc2lvbnMKKyAgICBhZ2Fp bnN0IEpTT04gdmFsdWVzLCBwcm9kdWNpbmcgdmFsdWVzIG9mIFNRTC9KU09OIHR5cGVzLCB3 aGljaCBhcmUKKyAgICBjb252ZXJ0ZWQgdG8gU1FMIHR5cGVzLiBBbGwgU1FML0pTT04gcXVl cnkgZnVuY3Rpb25zIGFjY2VwdCBzZXZlcmFsCisgICAgY29tbW9uIGNsYXVzZXMgZGVzY3Jp YmVkIGluIDx4cmVmIGxpbmtlbmQ9InNxbGpzb24tY29tbW9uLWNsYXVzZXMiLz4uCisgICAg Rm9yIGRldGFpbHMgb24gdGhlIFNRTC9KU09OIHBhdGggbGFuZ3VhZ2UsCisgICAgc2VlIDx4 cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1zcWxqc29uLXBhdGgiLz4uCisgICA8L3BhcmE+CisK KyAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtaXNqc29uLXByZWRpY2F0ZSI+PGxpdGVyYWw+ SVMgSlNPTjwvbGl0ZXJhbD48L2xpbms+CisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICA8bGluayBsaW5rZW5k PSJmdW5jdGlvbnMtanNvbmV4aXN0cyI+PGxpdGVyYWw+SlNPTl9FWElTVFM8L2xpdGVyYWw+ PC9saW5rPgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVt PgorICAgICAgPHBhcmE+CisgICAgICAgPGxpbmsgbGlua2VuZD0iZnVuY3Rpb25zLWpzb252 YWx1ZSI+PGxpdGVyYWw+SlNPTl9WQUxVRTwvbGl0ZXJhbD48L2xpbms+CisgICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAg ICAgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbnF1ZXJ5Ij48bGl0ZXJhbD5KU09O X1FVRVJZPC9saXRlcmFsPjwvbGluaz4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICA8L2l0ZW1pemVkbGlzdD4KKworICA8cGFyYT4KKyAgICAgSW4gc29tZSB1c2FnZSBl eGFtcGxlcyBmb3IgdGhlc2UgZnVuY3Rpb25zLAorICAgICB0aGUgZm9sbG93aW5nIHNtYWxs IHRhYmxlIHN0b3Jpbmcgc29tZSBKU09OIGRhdGEgd2lsbCBiZSB1c2VkOgorPHByb2dyYW1s aXN0aW5nPgorQ1JFQVRFIFRBQkxFIG15X2ZpbG1zICgKKyAganMgICAgICAgdGV4dCApOwor CitJTlNFUlQgSU5UTyBteV9maWxtcyBWQUxVRVMgKAorJ3sgImZhdm9yaXRlcyIgOiBbCisg ICB7ICJraW5kIiA6ICJjb21lZHkiLCAiZmlsbXMiIDogWworICAgICB7ICJ0aXRsZSIgOiAi QmFuYW5hcyIsCisgICAgICAgImRpcmVjdG9yIiA6ICJXb29keSBBbGxlbiJ9LAorICAgICB7 ICJ0aXRsZSIgOiAiVGhlIERpbm5lciBHYW1lIiwKKyAgICAgICAiZGlyZWN0b3IiIDogIkZy YW5jaXMgVmViZXIiIH0gXSB9LAorICAgeyAia2luZCIgOiAiaG9ycm9yIiwgImZpbG1zIiA6 IFsKKyAgICAgeyAidGl0bGUiIDogIlBzeWNobyIsCisgICAgICAgImRpcmVjdG9yIiA6ICJB bGZyZWQgSGl0Y2hjb2NrIiB9IF0gfSwKKyAgIHsgImtpbmQiIDogInRocmlsbGVyIiwgImZp bG1zIiA6IFsKKyAgICAgeyAidGl0bGUiIDogIlZlcnRpZ28iLAorICAgICAgICJkaXJlY3Rv ciIgOiAiQWxmcmVkIEhpdGNoY29jayIgfSBdIH0sCisgICB7ICJraW5kIiA6ICJkcmFtYSIs ICJmaWxtcyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJZb2ppbWJvIiwKKyAgICAgICAiZGly ZWN0b3IiIDogIkFraXJhIEt1cm9zYXdhIiB9IF0gfQorICBdIH0nKTsKKzwvcHJvZ3JhbWxp c3Rpbmc+CisgICAgIDwvcGFyYT4KKworICAgPHNlY3Q0IGlkPSJmdW5jdGlvbnMtanNvbmV4 aXN0cyI+CisgICAgPHRpdGxlPjxsaXRlcmFsPkpTT05fRVhJU1RTPC9saXRlcmFsPjwvdGl0 bGU+CisgICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29uX2V4aXN0czwvcHJpbWFyeT48L2lu ZGV4dGVybT4KKworPHN5bm9wc2lzPgorPGZ1bmN0aW9uPkpTT05fRVhJU1RTPC9mdW5jdGlv bj4gKAorICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBs YWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IFBBU1NJ TkcgeyA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+ dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29w dGlvbmFsPgorICA8b3B0aW9uYWw+IFJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgPG9wdGlv bmFsPiB7IFRSVUUgfCBGQUxTRSB8IFVOS05PV04gfCBFUlJPUiB9IE9OIEVSUk9SIDwvb3B0 aW9uYWw+CispCis8L3N5bm9wc2lzPgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RGVz Y3JpcHRpb248L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAgPGZ1bmN0aW9uPkpTT05f RVhJU1RTPC9mdW5jdGlvbj4gZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVk CisgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBwYXRoIGV4cHJlc3Npb24gY2FuIHJl dHVybiBhbnkgPGFjcm9ueW0+U1FML0pTT048L2Fjcm9ueW0+IGl0ZW1zLgorICAgICA8L3Bh cmE+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPlBhcmFtZXRl cnM8L3RpdGxlPgorICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT4KKyAgICAgPGxpdGVyYWw+PHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFj ZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9w dGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMg PHJlcGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwv b3B0aW9uYWw+PC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKworICAgIDxwYXJhPgorICAgICBUaGUgaW5wdXQgZGF0YSB0byBxdWVyeSwgdGhl IEpTT04gcGF0aCBleHByZXNzaW9uIGRlZmluaW5nIHRoZSBxdWVyeSwgYW5kIGFuIG9wdGlv bmFsIDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IGNsYXVzZS4KKyAgICAgU2VlIDx4cmVm IGxpbmtlbmQ9InNxbGpzb24taW5wdXQtY2xhdXNlIi8+IGZvciBkZXRhaWxzLgorICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlJFVFVSTklORyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT48L2xpdGVy YWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICAg VGhlIG91dHB1dCBjbGF1c2UgdGhhdCBzcGVjaWZpZXMgdGhlIGRhdGEgdHlwZSBvZiB0aGUg cmV0dXJuZWQgdmFsdWUuCisgICAgICAgVGhlIHNwZWNpZmllZCBkYXRhIHR5cGUgc2hvdWxk IGhhdmUgYSBjYXN0IGZyb20gYSA8bGl0ZXJhbD5ib29sZWFuPC9saXRlcmFsPgorICAgICAg IHR5cGUsIHdoaWNoIGlzIHJldHVybmVkIGJ5IGRlZmF1bHQuCisgICAgIDwvcGFyYT4KKyAg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPnsgVFJVRSB8IEZBTFNFIHwgVU5LTk9XTiB8 IEVSUk9SIH0gT04gRVJST1I8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICAgRGVmaW5lcyB0aGUgcmV0dXJuIHZhbHVlIGlmIGFu IGVycm9yIG9jY3Vycy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+RkFMU0U8L2xp dGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0 NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgICBDaGVj ayB3aGV0aGVyIHRoZSBwcm92aWRlZCA8dHlwZT5qc29uYjwvdHlwZT4gZGF0YSBjb250YWlu cyBhCisgICAga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgPGxpdGVyYWw+a2V5MTwvbGl0ZXJh bD4ga2V5LCBhbmQgaXRzIHZhbHVlCisgICAgY29udGFpbnMgYW4gYXJyYXkgd2l0aCBvbmUg b3IgbW9yZSBlbGVtZW50cyBiaWdnZXIgdGhhbiAyOgorICA8L3BhcmE+Cis8c2NyZWVuPgor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImtleTEiOiBbMSwyLDNdfScsICdzdHJpY3Qg JC5rZXkxWypdID8gKEAgPiAyKScpOworIGpzb25fZXhpc3RzCistLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorPC9zY3JlZW4+CisKKyAgPHBhcmE+CisgICBOb3RlIHRoZSBkaWZmZXJl bmNlIGJldHdlZW4gc3RyaWN0IGFuZCBsYXggbW9kZXMKKyAgIGlmIHRoZSByZXF1aXJlZCBp dGVtIGRvZXMgbm90IGV4aXN0OgorICA8L3BhcmE+Cis8c2NyZWVuPgorLS0gU3RyaWN0IG1v ZGUgd2l0aCBFUlJPUiBvbiBFUlJPUiBjbGF1c2UKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAneyJhIjogWzEsMiwzXX0nLCAnc3RyaWN0ICQuYVs1XScgRVJST1IgT04gRVJST1IpOwor RVJST1I6IEludmFsaWQgU1FML0pTT04gc3Vic2NyaXB0CisoMSByb3cpCis8L3NjcmVlbj4K KworPHNjcmVlbj4KKy0tIExheCBtb2RlCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3si YSI6IFsxLDIsM119JywgJ2xheCAkLmFbNV0nIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX2V4 aXN0cworLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKzwvc2NyZWVuPgorCis8c2NyZWVu PgorLS0gU3RyaWN0IG1vZGUgdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBPTiBF UlJPUiBjbGF1c2UKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogWzEsMiwzXX0n LCAnc3RyaWN0ICQuYVs1XScpOworIGpzb25fZXhpc3RzCistLS0tLS0tLS0tLS0tCisgZgor KDEgcm93KQorPC9zY3JlZW4+CisKKyAgICA8L3NlY3Q1PgorICAgPC9zZWN0ND4KKworICAg PHNlY3Q0IGlkPSJmdW5jdGlvbnMtanNvbnZhbHVlIj4KKyAgICA8dGl0bGU+PGxpdGVyYWw+ SlNPTl9WQUxVRTwvbGl0ZXJhbD48L3RpdGxlPgorICAgIDxpbmRleHRlcm0+PHByaW1hcnk+ anNvbl92YWx1ZTwvcHJpbWFyeT48L2luZGV4dGVybT4KKworPHN5bm9wc2lzPgorPGZ1bmN0 aW9uPkpTT05fVkFMVUU8L2Z1bmN0aW9uPiAoCisgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0 ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFj ZWFibGU+IDxvcHRpb25hbD4gUEFTU0lORyB7IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFj ZWFibGU+IEFTIDxyZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9u YWw+LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4gUkVUVVJOSU5H IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxl PiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IHsgRVJST1IgfCBOVUxMIHwgREVGQVVMVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IH0gT04gRU1QVFkgPC9vcHRpb25hbD4KKyAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8 IERFRkFVTFQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiB9IE9OIEVSUk9SIDwvb3B0aW9uYWw+CispCisgIDwvc3lub3BzaXM+CisK KyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBh cmE+CisgICA8ZnVuY3Rpb24+SlNPTl9WQUxVRTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGV4dHJh Y3RzIGEgdmFsdWUgZnJvbSB0aGUgcHJvdmlkZWQKKyAgIDxhY3JvbnltPkpTT048L2Fjcm9u eW0+IGRhdGEgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIDxhY3JvbnltPlNRTDwvYWNyb255bT4g c2NhbGFyLgorICAgSWYgdGhlIHNwZWNpZmllZCBKU09OIHBhdGggZXhwcmVzc2lvbiByZXR1 cm5zIG1vcmUgdGhhbiBvbmUKKyAgIDxhY3JvbnltPlNRTC9KU09OPC9hY3JvbnltPiBpdGVt LCBhbiBlcnJvciBvY2N1cnMuIFRvIGV4dHJhY3QKKyAgIGFuIDxhY3JvbnltPlNRTC9KU09O PC9hY3JvbnltPiBhcnJheSBvciBvYmplY3QsIHVzZSA8eHJlZiBsaW5rZW5kPSJmdW5jdGlv bnMtanNvbnF1ZXJ5Ii8+LgorICA8L3BhcmE+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0 NT4KKyAgICAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBs YWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhf ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFTU0lORyB7IDxyZXBsYWNl YWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBs YWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+PC9saXRl cmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAg VGhlIGlucHV0IGRhdGEgdG8gcXVlcnksIHRoZSBKU09OIHBhdGggZXhwcmVzc2lvbiBkZWZp bmluZyB0aGUgcXVlcnksIGFuZCBhbiBvcHRpb25hbCA8bGl0ZXJhbD5QQVNTSU5HPC9saXRl cmFsPiBjbGF1c2UuCisgICAgIEZvciBkZXRhaWxzLCBzZWUgPHhyZWYgbGlua2VuZD0iZnVu Y3Rpb25zLXNxbGpzb24tcGF0aCIvPi4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+Cisg ICAgIDxsaXRlcmFsPlJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICAgVGhlIG91dHB1dCBjbGF1c2UgdGhhdCBz cGVjaWZpZXMgdGhlIGRhdGEgdHlwZSBvZiB0aGUgcmV0dXJuZWQgdmFsdWUuCisgICAgICAg T3V0IG9mIHRoZSBib3gsIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4K KyAgICAgICBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHR5cGVzOiA8bGl0ZXJhbD5qc29uPC9s aXRlcmFsPiwgPGxpdGVyYWw+anNvbmI8L2xpdGVyYWw+LAorICAgICAgIDxsaXRlcmFsPmJ5 dGVhPC9saXRlcmFsPiwgYW5kIGNoYXJhY3RlciBzdHJpbmcgdHlwZXMgKDxsaXRlcmFsPnRl eHQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jaGFyPC9saXRlcmFsPiwKKyAgICAgICA8bGl0ZXJh bD52YXJjaGFyPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPm5jaGFyPC9saXRlcmFsPikuCisg ICAgICAgVGhlIGV4dHJhY3RlZCB2YWx1ZSBtdXN0IGJlIGEgc2luZ2xlIDxhY3JvbnltPlNR TC9KU09OPC9hY3JvbnltPiBzY2FsYXIgaXRlbQorICAgICAgIGFuZCBoYXZlIGEgY2FzdCB0 byB0aGUgc3BlY2lmaWVkIHR5cGUuIE90aGVyd2lzZSwgYW4gZXJyb3Igb2NjdXJzLgorICAg ICAgIEJ5IGRlZmF1bHQsIDxmdW5jdGlvbj5KU09OX1ZBTFVFPC9mdW5jdGlvbj4gcmV0dXJu cyBhIHN0cmluZworICAgICAgIG9mIHRoZSA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPiB0eXBl LgorICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KworICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IEVSUk9S IHwgTlVMTCB8IERFRkFVTFQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJl c3Npb248L3JlcGxhY2VhYmxlPiB9IE9OIEVNUFRZPC9saXRlcmFsPgorICAgIDwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgIERlZmluZXMgdGhlIHJldHVy biB2YWx1ZSBpZiBubyBKU09OIHZhbHVlIGlzIGZvdW5kLiBUaGUgZGVmYXVsdCBpcworICAg ICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+LiBJZiB5b3UgdXNlCisgICAgICAgPGxpdGVy YWw+REVGQVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+PC9saXRlcmFsPiwKKyAgICAgICB0aGUgcHJvdmlkZWQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBpcworICAg ICAgIGV2YWx1YXRlZCBhbmQgY2FzdCB0byB0aGUgdHlwZSBzcGVjaWZpZWQgaW4gdGhlIDxj b21tYW5kPlJFVFVSTklORzwvY29tbWFuZD4gY2xhdXNlLgorICAgICA8L3BhcmE+CisgICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IEVSUk9SIHwgTlVMTCB8IERFRkFVTFQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxl PiB9IE9OIEVSUk9SPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgIERlZmluZXMgdGhlIHJldHVybiB2YWx1ZSBpZiBhbiB1bmhh bmRsZWQgZXJyb3Igb2NjdXJzLiBUaGUgZGVmYXVsdCBpcworICAgICAgIDxsaXRlcmFsPk5V TEw8L2xpdGVyYWw+LiBJZiB5b3UgdXNlCisgICAgICAgPGxpdGVyYWw+REVGQVVMVCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+PC9s aXRlcmFsPiwKKyAgICAgICB0aGUgcHJvdmlkZWQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBpcworICAgICAgIGV2YWx1YXRlZCBh bmQgY2FzdCB0byB0aGUgdHlwZSBzcGVjaWZpZWQgaW4gdGhlIDxjb21tYW5kPlJFVFVSTklO RzwvY29tbWFuZD4gY2xhdXNlLgorICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9zZWN0NT4K KworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICAgICA8 cGFyYT4KKyAgICAgIEV4dHJhY3QgYW4gU1FML0pTT04gdmFsdWUgYW5kIHJldHVybiBpdCBh cyBhbiBTUUwKKyAgICAgIHNjYWxhciBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuIE5vdGUgdGhh dAorICAgICAgPGNvbW1hbmQ+SlNPTl9WQUxVRTwvY29tbWFuZD4gY2FuIG9ubHkgcmV0dXJu IGEKKyAgICAgIHNpbmdsZSBzY2FsYXIsIGFuZCB0aGUgcmV0dXJuZWQgdmFsdWUgbXVzdCBo YXZlIGEKKyAgICAgIGNhc3QgdG8gdGhlIHNwZWNpZmllZCByZXR1cm4gdHlwZToKKyAgICAg PC9wYXJhPgorCis8c2NyZWVuPgorU0VMRUNUIEpTT05fVkFMVUUoJyIxMjMuNDUiJywgJyQn IFJFVFVSTklORyBmbG9hdCk7CisganNvbl92YWx1ZQorLS0tLS0tLS0tLS0tCisgICAgIDEy My40NQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRSgnMTIzLjQ1JywgJyQnIFJFVFVS TklORyBpbnQgRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUKKy0tLS0tLS0tLS0tLQor ICAgICAgICAxMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoJyIwMzowNCAyMDE1 LTAyLTAxIicsICckLmRhdGV0aW1lKCJISDI0Ok1JIFlZWVktTU0tREQiKScgUkVUVVJOSU5H IGRhdGUpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAyMDE1LTAyLTAxCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKCciMTIzLjQ1IicsICckJyBSRVRVUk5JTkcgaW50 IEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIGlu dGVnZXI6ICIxMjMuNDUiCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMV0nLCAnc3Ry aWN0ICQnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiBTUUwvSlNPTiBzY2FsYXIgcmVxdWly ZWQKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJ3N0cmljdCAkWypdJyBF UlJPUiBPTiBFUlJPUik7CitFUlJPUjogbW9yZSB0aGFuIG9uZSBTUUwvSlNPTiBpdGVtCis8 L3NjcmVlbj4KKworICAgICA8cGFyYT4KKyAgICAgICBJZiB0aGUgcGF0aCBleHByZXNzaW9u IHJldHVybnMgYW4gYXJyYXksIGFuIG9iamVjdCwgb3IKKyAgICAgICBtdWx0aXBsZSBTUUwv SlNPTiBpdGVtcywgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIGFzIHNwZWNpZmllZAorICAgICAg IGluIHRoZSA8Y29tbWFuZD5PTiBFUlJPUjwvY29tbWFuZD4gY2xhdXNlOgorICAgICA8L3Bh cmE+Cis8c2NyZWVuPgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxXScsICdzdHJpY3Qg JCcgRVJST1IgT04gRVJST1IpOworRVJST1I6IFNRTC9KU09OIHNjYWxhciByZXF1aXJlZAor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAneyJhIjogMX0nLCAnc3RyaWN0ICQnIEVSUk9S IE9OIEVSUk9SKTsKK0VSUk9SOiBTUUwvSlNPTiBzY2FsYXIgcmVxdWlyZWQKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJ3N0cmljdCAkWypdJyBFUlJPUiBPTiBFUlJP Uik7CitFUlJPUjogbW9yZSB0aGFuIG9uZSBTUUwvSlNPTiBpdGVtCisKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICdbMSwyXScsICdzdHJpY3QgJFsqXScgREVGQVVMVCAxIE9OIEVSUk9S KTsKKzEKKzwvc2NyZWVuPgorCisgICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+CisKKyAgIDxz ZWN0NCBpZD0iZnVuY3Rpb25zLWpzb25xdWVyeSI+CisgICAgPHRpdGxlPjxsaXRlcmFsPkpT T05fUVVFUlk8L2xpdGVyYWw+PC90aXRsZT4KKyAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5Pmpz b25fcXVlcnk8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisKKzxzeW5vcHNpcz4KKzxmdW5jdGlv bj5KU09OX1FVRVJZPC9mdW5jdGlvbj4gKAorICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVt PC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2Vh YmxlPiA8b3B0aW9uYWw+IFBBU1NJTkcgeyA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2Vh YmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFs PiwgLi4uPC9vcHRpb25hbD48L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IFJFVFVSTklORyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4g PG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRp b25hbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgPG9wdGlvbmFsPiB7IFdJVEhPVVQg fCBXSVRIIHsgQ09ORElUSU9OQUwgfCA8b3B0aW9uYWw+VU5DT05ESVRJT05BTDwvb3B0aW9u YWw+IH0gfSA8b3B0aW9uYWw+IEFSUkFZIDwvb3B0aW9uYWw+IFdSQVBQRVIgPC9vcHRpb25h bD4KKyAgPG9wdGlvbmFsPiB7IEtFRVAgfCBPTUlUIH0gUVVPVEVTIDxvcHRpb25hbD4gT04g U0NBTEFSIFNUUklORyA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IHsg RVJST1IgfCBOVUxMIHwgRU1QVFkgeyA8b3B0aW9uYWw+IEFSUkFZIDwvb3B0aW9uYWw+IHwg T0JKRUNUIH0gfCBERUZBVUxUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWSA8L29wdGlvbmFsPgorICA8b3B0aW9u YWw+IHsgRVJST1IgfCBOVUxMIHwgRU1QVFkgeyA8b3B0aW9uYWw+IEFSUkFZIDwvb3B0aW9u YWw+IHwgT0JKRUNUIH0gfCBERUZBVUxUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorKQor ICA8L3N5bm9wc2lzPgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RGVzY3JpcHRpb248 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGZ1bmN0aW9uPkpTT05fUVVFUlk8L2Z1bmN0aW9u PiBmdW5jdGlvbiBleHRyYWN0cyBhbiA8YWNyb255bT5TUUwvSlNPTjwvYWNyb255bT4KKyAg IGFycmF5IG9yIG9iamVjdCBmcm9tIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IGRhdGEuIFRo aXMgZnVuY3Rpb24gbXVzdCByZXR1cm4KKyAgIGEgSlNPTiBzdHJpbmcsIHNvIGlmIHRoZSBw YXRoIGV4cHJlc3Npb24gcmV0dXJucyBhIHNjYWxhciBvciBtdWx0aXBsZSBTUUwvSlNPTgor ICAgaXRlbXMsIHlvdSBtdXN0IHdyYXAgdGhlIHJlc3VsdCB1c2luZyB0aGUgPGxpdGVyYWw+ V0lUSCBXUkFQUEVSPC9saXRlcmFsPiBjbGF1c2UuCisgICBUbyBleHRyYWN0IGEgc2luZ2xl IDxhY3JvbnltPlNRTC9KU09OPC9hY3JvbnltPiB2YWx1ZSwgeW91IGNhbiB1c2UgPHhyZWYg bGlua2VuZD0iZnVuY3Rpb25zLWpzb252YWx1ZSIvPi4KKyAgPC9wYXJhPgorICAgIDwvc2Vj dDU+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKwor ICAgPHZhcmlhYmxlbGlzdD4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAg ICAgPGxpdGVyYWw+PHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8 cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBQ QVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2Vh YmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ PC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKwor ICAgIDxwYXJhPgorICAgICBUaGUgaW5wdXQgZGF0YSB0byBxdWVyeSwgdGhlIEpTT04gcGF0 aCBleHByZXNzaW9uIGRlZmluaW5nIHRoZSBxdWVyeSwgYW5kIGFuIG9wdGlvbmFsIDxsaXRl cmFsPlBBU1NJTkc8L2xpdGVyYWw+IGNsYXVzZS4KKyAgICAgRm9yIGRldGFpbHMsIHNlZSA8 eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtc3FsanNvbi1wYXRoIi8+LgorICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+UkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZP Uk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlv bmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgICBUaGUgb3V0cHV0IGNsYXVzZSB0aGF0IHNwZWNpZmllcyB0aGUgZGF0YSB0 eXBlIG9mIHRoZSByZXR1cm5lZCB2YWx1ZS4KKyAgICAgICBGb3IgZGV0YWlscywgc2VlIDx4 cmVmIGxpbmtlbmQ9InNxbGpzb24tb3V0cHV0LWNsYXVzZSIvPi4KKyAgICAgPC9wYXJhPgor ICAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPnsgV0lUSE9VVCB8IFdJVEggeyBDT05E SVRJT05BTCB8IDxvcHRpb25hbD5VTkNPTkRJVElPTkFMPC9vcHRpb25hbD4gfSB9IDxvcHRp b25hbD4gQVJSQVkgPC9vcHRpb25hbD4gV1JBUFBFUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgICBEZWZpbmVzIHdoZXRoZXIg dG8gd3JhcCBhIHJldHVybmVkIHNlcXVlbmNlIG9mIDxhY3JvbnltPlNRTC9KU09OPC9hY3Jv bnltPgorICAgICAgIGl0ZW1zIGludG8gYSA8YWNyb255bT5TUUwvSlNPTjwvYWNyb255bT4g YXJyYXkuCisgICAgIDwvcGFyYT4KKyAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICA8 dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5XSVRIT1VUIFdSQVBQRVI8 L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+ CisgICAgICAgICAgICBEbyBub3Qgd3JhcCB0aGUgcmVzdWx0LgorICAgICAgICAgICAgVGhp cyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvciBpZiB0aGUgPGxpdGVyYWw+V1JBUFBFUjwvbGl0 ZXJhbD4KKyAgICAgICAgICAgIGNsYXVzZSBpcyBvbWl0dGVkLgorICAgICAgICAgIDwvcGFy YT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPldJVEggPG9wdGlv bmFsPlVOQ09ORElUSU9OQUw8L29wdGlvbmFsPiBXUkFQUEVSPC9saXRlcmFsPjwvdGVybT4K KyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWx3 YXlzIHdyYXAgdGhlIHJlc3VsdC4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5XSVRIIENPTkRJVElPTkFMIFdSQVBQRVI8L2xp dGVyYWw+PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICBXcmFwIHRoZSByZXN1bHQgaWYgdGhlIHBhdGgKKyAgICAgICAgICAgIGV4 cHJlc3Npb24gcmV0dXJucyBhbnl0aGluZyBvdGhlciB0aGFuIGEgc2luZ2xlCisgICAgICAg ICAgICA8YWNyb255bT5TUUwvSlNPTjwvYWNyb255bT4gYXJyYXkgb3Igb2JqZWN0LgorICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0 ZW50cnk+CisgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgIDxwYXJhPgorICAgICAgIE9w dGlvbmFsbHksIHlvdSBjYW4gYWRkIHRoZSA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4ga2V5 d29yZCBmb3Igc2VtYW50aWMgY2xhcml0eS4KKyAgICAgPC9wYXJhPgorICAgICA8aW1wb3J0 YW50PgorICAgICAgPHBhcmE+WW91IGNhbm5vdCB1c2UgdGhpcyBjbGF1c2UgdG9nZXRoZXIg d2l0aCB0aGUgPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IGNsYXVzZS4KKyAgICAgIDwv cGFyYT4KKyAgICAgPC9pbXBvcnRhbnQ+CisgICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVy YWw+eyBLRUVQIHwgT01JVCB9IFFVT1RFUyA8b3B0aW9uYWw+IE9OIFNDQUxBUiBTVFJJTkcg PC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICAgRGVmaW5lcyB3aGV0aGVyIHRvIGtlZXAgb3Igb21pdCBxdW90 ZXMgaWYgYSBzY2FsYXIgc3RyaW5nIGlzIHJldHVybmVkLgorICAgICAgIEJ5IGRlZmF1bHQs IHNjYWxhciBzdHJpbmdzIGFyZSByZXR1cm5lZCB3aXRoIHF1b3Rlcy4gVXNpbmcgdGhpcwor ICAgICAgIGNsYXVzZSB0b2dldGhlciB3aXRoIHRoZSA8Y29tbWFuZD5XSVRIIFdSQVBQRVI8 L2NvbW1hbmQ+IGNsYXVzZSBpcyBub3QgYWxsb3dlZC4KKyAgICAgPC9wYXJhPgorICAgICA8 cGFyYT4KKyAgICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCB0aGUgPGxpdGVyYWw+T04g U0NBTEFSIFNUUklORzwvbGl0ZXJhbD4ga2V5d29yZHMgZm9yIHNlbWFudGljIGNsYXJpdHku CisgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPnsgRVJST1Ig fCBOVUxMIHwgRU1QVFkgeyA8b3B0aW9uYWw+IEFSUkFZIDwvb3B0aW9uYWw+IHwgT0JKRUNU IH0gfCBERUZBVUxUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9u PC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWTwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgICBEZWZpbmVzIHRoZSByZXR1cm4gdmFs dWUgaWYgbm8gSlNPTiB2YWx1ZSBpcyBmb3VuZC4gVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ TlVMTDwvbGl0ZXJhbD4uCisgICAgICAgSWYgeW91IHVzZSA8bGl0ZXJhbD5FTVBUWSA8b3B0 aW9uYWw+QVJSQVk8L29wdGlvbmFsPjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+RU1QVFkgT0JK RUNUPC9saXRlcmFsPiwKKyAgICAgICBhbiBlbXB0eSBKU09OIGFycmF5IFtdIG9yIG9iamVj dCB7fSBpcyByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LgorICAgICAgIElmIHlvdSB1c2UgPGxp dGVyYWw+REVGQVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+PC9saXRlcmFsPiwKKyAgICAgICB0aGUgcHJvdmlkZWQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBpcyBl dmFsdWF0ZWQgYW5kIGNhc3QKKyAgICAgICB0byB0aGUgdHlwZSBzcGVjaWZpZWQgaW4gdGhl IDxjb21tYW5kPlJFVFVSTklORzwvY29tbWFuZD4gY2xhdXNlLgorICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoaXMgY2xhdXNlIHRvZ2V0aGVy IHdpdGggdGhlIDxsaXRlcmFsPldSQVBQRVI8L2xpdGVyYWw+IGNsYXVzZS4KKyAgICAgPC9w YXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+eyBFUlJPUiB8IE5VTEwg fCBFTVBUWSB7IDxvcHRpb25hbD4gQVJSQVkgPC9vcHRpb25hbD4gfCBPQkpFQ1QgfSB8IERF RkFVTFQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiB9IE9OIEVSUk9SPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgIERlZmluZXMgdGhlIHJldHVybiB2YWx1ZSBpZiBh biB1bmhhbmRsZWQgZXJyb3Igb2NjdXJzLiBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5OVUxM PC9saXRlcmFsPi4KKyAgICAgICBJZiB5b3UgdXNlIDxsaXRlcmFsPkVNUFRZIDxvcHRpb25h bD5BUlJBWTwvb3B0aW9uYWw+PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5FTVBUWSBPQkpFQ1Q8 L2xpdGVyYWw+LAorICAgICAgIGFuIGVtcHR5IEpTT04gYXJyYXkgPGxpdGVyYWw+W108L2xp dGVyYWw+IG9yIG9iamVjdCA8bGl0ZXJhbD57fTwvbGl0ZXJhbD4gYXJlIHJldHVybmVkLCBy ZXNwZWN0aXZlbHkuCisgICAgICAgSWYgeW91IHVzZSA8bGl0ZXJhbD5ERUZBVUxUIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT48L2xp dGVyYWw+LAorICAgICAgIHRoZSBwcm92aWRlZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IGlzIGV2YWx1YXRlZCBhbmQgY2FzdAor ICAgICAgIHRvIHRoZSB0eXBlIHNwZWNpZmllZCBpbiB0aGUgPGNvbW1hbmQ+UkVUVVJOSU5H PC9jb21tYW5kPiBjbGF1c2UuCisgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3NlY3Q1Pgor CisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgICAgIDxw YXJhPgorICAgICAgRXh0cmFjdCBhbGwgZmlsbSBnZW5yZXMgbGlzdGVkIGluIHRoZSA8c3Ry dWN0bmFtZT5teV9maWxtczwvc3RydWN0bmFtZT4gdGFibGU6CisgICAgIDwvcGFyYT4KKyAg ICAgPHNjcmVlbj4KK1NFTEVDVAorICAgIEpTT05fUVVFUlkoanMsICckLmZhdm9yaXRlc1sq XS5raW5kJyBXSVRIIFdSQVBQRVIgRVJST1IgT04gRVJST1IpCitGUk9NIG15X2ZpbG1zOwor IGpzb25fcXVlcnkKKy0tLS0tLS0tLS0tLQorIFsiY29tZWR5IiwgImhvcnJvciIsICJ0aHJp bGxlciIsICJkcmFtYSJdCisoMSByb3cpCis8L3NjcmVlbj4KKworICAgICA8cGFyYT4KKyAg ICAgIE5vdGUgdGhhdCB0aGUgc2FtZSBxdWVyeSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciBp ZiB5b3Ugb21pdCB0aGUKKyAgICAgIDxjb21tYW5kPldJVEggV1JBUFBFUjwvY29tbWFuZD4g Y2xhdXNlLCBhcyBpdCByZXR1cm5zIG11bHRpcGxlIFNRTC9KU09OIGl0ZW1zOgorICAgICA8 L3BhcmE+CisgICAgIDxzY3JlZW4+CitTRUxFQ1QKKyAgICBKU09OX1FVRVJZKGpzLCAnJC5m YXZvcml0ZXNbKl0ua2luZCcgRVJST1IgT04gRVJST1IpCitGUk9NIG15X2ZpbG1zOworRVJS T1I6IG1vcmUgdGhhbiBvbmUgU1FML0pTT04gaXRlbSAKKzwvc2NyZWVuPgorCisgICAgIDxw YXJhPgorICAgICAgIENvbXBhcmUgdGhlIGVmZmVjdCBvZiBkaWZmZXJlbnQgPGxpdGVyYWw+ V1JBUFBFUjwvbGl0ZXJhbD4gY2xhdXNlczoKKyAgICAgPC9wYXJhPgorICAgICA8c2NyZWVu PgorU0VMRUNUCisgICAganMsCisgICAgSlNPTl9RVUVSWShqcywgJ2xheCAkWypdJykgQVMg IndpdGhvdXQiLAorICAgIEpTT05fUVVFUlkoanMsICdsYXggJFsqXScgV0lUSCBXUkFQUEVS KSAgQVMgIndpdGggdW5jb25kIiwKKyAgICBKU09OX1FVRVJZKGpzLCAnbGF4ICRbKl0nIFdJ VEggQ09ORElUSU9OQUwgV1JBUFBFUikgQVMgIndpdGggY29uZCIKK0ZST00KKyAgICAoVkFM VUVTIChqc29uYiAnW10nKSwgKCdbMV0nKSwgKCdbWzEsMiwzXV0nKSwgICgnW3siYSI6IDF9 XScpLCAoJ1sxLCBudWxsLCAiMiJdJykpIGZvbyhqcyk7CisgICAgICAganMgICAgICAgfCAg d2l0aG91dCAgfCAgd2l0aCB1bmNvbmQgICB8ICAgd2l0aCBjb25kCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIFtd ICAgICAgICAgICAgIHwgKG51bGwpICAgIHwgKG51bGwpICAgICAgICAgfCAobnVsbCkKKyBb MV0gICAgICAgICAgICB8IDEgICAgICAgICB8IFsxXSAgICAgICAgICAgIHwgWzFdCisgW1sx LCAyLCAzXV0gICAgfCBbMSwgMiwgM10gfCBbWzEsIDIsIDNdXSAgICB8IFsxLCAyLCAzXQor IFt7ImEiOiAxfV0gICAgIHwgeyJhIjogMX0gIHwgW3siYSI6IDF9XSAgICAgfCB7ImEiOiAx fQorIFsxLCBudWxsLCAiMiJdIHwgKG51bGwpICAgIHwgWzEsIG51bGwsICIyIl0gfCBbMSwg bnVsbCwgIjIiXQorKDUgcm93cykKKzwvc2NyZWVuPgorCis8cGFyYT5Db21wYXJlIHF1b3Rl IGhhbmRsaW5nIGZvciBzY2FsYXIgdHlwZXMgd2l0aCBhbmQgd2l0aG91dCB0aGUgPGNvbW1h bmQ+T01JVCBRVU9URVM8L2NvbW1hbmQ+IGNsYXVzZToKKzwvcGFyYT4KKyAgICAgPHNjcmVl bj4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4 dCk7CisganNvbl9xdWVyeQorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQg UVVPVEVTKTsKKyBqc29uX3F1ZXJ5CistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKzwv c2NyZWVuPgorICAgIDwvc2VjdDU+CisgICA8L3NlY3Q0PgorCisgICA8c2VjdDQgaWQ9ImZ1 bmN0aW9ucy1pc2pzb24tcHJlZGljYXRlIj4KKyAgICA8dGl0bGU+PGxpdGVyYWw+SVMgSlNP TjwvbGl0ZXJhbD48L3RpdGxlPgorICAgIDxpbmRleHRlcm0+PHByaW1hcnk+aXNfanNvbjwv cHJpbWFyeT48L2luZGV4dGVybT4KKworPHN5bm9wc2lzPgorPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPgorICBJUyA8b3B0aW9uYWw+ IE5PVCA8L29wdGlvbmFsPiBKU09OIAorICA8b3B0aW9uYWw+IHsgVkFMVUUgfCBTQ0FMQVIg fCBBUlJBWSB8IE9CSkVDVCB9IDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4geyBXSVRIIHwg V0lUSE9VVCB9IFVOSVFVRSA8b3B0aW9uYWw+IEtFWVMgPC9vcHRpb25hbD4gPC9vcHRpb25h bD4KKzwvc3lub3BzaXM+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5EZXNjcmlwdGlv bjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+SVMgSlNPTjwvY29tbWFu ZD4gcHJlZGljYXRlIHRlc3RzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIHZhbGlk CisgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhLiBJZiB5b3UgcHJvdmlkZSBhIHNw ZWNpZmljIEpTT04gZGF0YSB0eXBlIGFzIGEgcGFyYW1ldGVyLAorICAgeW91IGNhbiBjaGVj ayB3aGV0aGVyIHRoZSB2YWx1ZSBiZWxvbmdzIHRvIHRoaXMgdHlwZS4KKyAgIFlvdSBjYW4g YWxzbyB1c2UgdGhpcyBwcmVkaWNhdGUgaW4gdGhlIDxjb21tYW5kPklTIE5PVCBKU09OPC9j b21tYW5kPiBmb3JtLgorICAgVGhlIHJldHVybiB2YWx1ZXMgYXJlOgorICAgPGl0ZW1pemVk bGlzdD4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+ dDwvbGl0ZXJhbD4gaWYgdGhlIHZhbHVlIHNhdGlzZmllcyB0aGUgc3BlY2lmaWVkIGNvbmRp dGlvbi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5mPC9saXRlcmFsPiBpZiB0aGUgdmFs dWUgZG9lcyBub3Qgc2F0aXNmeSB0aGUgc3BlY2lmaWVkIGNvbmRpdGlvbi4KKyAgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC9pdGVtaXplZGxpc3Q+CisgIDwvcGFyYT4K KyAgICA8L3NlY3Q1PgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+UGFyYW1ldGVyczwv dGl0bGU+CisKKzx2YXJpYWJsZWxpc3Q+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKworICAgIDxwYXJhPgorICAgICAgVGhlIGlucHV0IGNsYXVzZSBkZWZpbmluZyB0 aGUgdmFsdWUgdG8gdGVzdC4gWW91IGNhbiBwcm92aWRlIHRoZSB2YWx1ZXMKKyAgICAgIG9m IDxsaXRlcmFsPmpzb248L2xpdGVyYWw+LCA8bGl0ZXJhbD5qc29uYjwvbGl0ZXJhbD4sCisg ICAgICA8bGl0ZXJhbD5ieXRlYTwvbGl0ZXJhbD4sIG9yIGNoYXJhY3RlciBzdHJpbmcgdHlw ZXMuCisgICAgPC9wYXJhPgorICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+Cisg ICAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlZBTFVF IHwgU0NBTEFSIHwgQVJSQVkgfCBPQkpFQ1Q8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICAgU3BlY2lmaWVzIHRoZSA8YWNyb255 bT5KU09OPC9hY3JvbnltPiBkYXRhIHR5cGUgdG8gdGVzdCBmb3I6CisgICAgICA8aXRlbWl6 ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgICA8bGl0ZXJhbD5WQUxVRTwvbGl0ZXJhbD4gKGRlZmF1bHQpICZtZGFzaDsgYW55IDxh Y3JvbnltPkpTT048L2Fjcm9ueW0+IHR5cGUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICA8bGl0ZXJhbD5TQ0FMQVI8L2xpdGVyYWw+ICZtZGFzaDsgPGFjcm9ueW0+ SlNPTjwvYWNyb255bT4gbnVtYmVyLCBzdHJpbmcsIG9yIGJvb2xlYW4uCisgICAgICAgICAg PC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgICAgPHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gJm1k YXNoOyA8YWNyb255bT5KU09OPC9hY3JvbnltPiBhcnJheS4KKyAgICAgICAgICA8L3BhcmE+ CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsPk9CSkVDVDwvbGl0ZXJhbD4gJm1kYXNoOyA8 YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3QuCisgICAgICAgICAgPC9wYXJhPgorICAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPnsgV0lUSCB8IFdJVEhPVVQgfSBVTklR VUUgPG9wdGlvbmFsPiBLRVlTIDwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPkRlZmluZXMgd2hldGhlciBkdXBsaWNhdGUg a2V5cyBhcmUgYWxsb3dlZDoKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsPldJVEhPVVQ8 L2xpdGVyYWw+IChkZWZhdWx0KSAmbWRhc2g7IHRoZQorICAgICAgICAgICAgPGFjcm9ueW0+ SlNPTjwvYWNyb255bT4gb2JqZWN0IGNhbiBjb250YWluIGR1cGxpY2F0ZSBrZXlzLgorICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGxpdGVyYWw+V0lUSDwvbGl0ZXJh bD4gJm1kYXNoOyBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGFsbG93ZWQuCisgICAgICAgICAg ICBJZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBkdXBsaWNhdGUga2V5cywgaXQgaXMgY29u c2lkZXJlZCB0byBiZSBpbnZhbGlkIEpTT04uCisgICAgICAgICAgPC9wYXJhPgorICAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBPcHRpb25hbGx5 LCB5b3UgY2FuIGFkZCB0aGUgPGxpdGVyYWw+S0VZUzwvbGl0ZXJhbD4ga2V5d29yZCBmb3Ig c2VtYW50aWMgY2xhcml0eS4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8 L3Zhcmxpc3RlbnRyeT4KKyAgIDwvdmFyaWFibGVsaXN0PgorCisgICAgPC9zZWN0NT4KKwor ICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICAgICA8cGFy YT4KKyAgICAgIENvbXBhcmUgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgPGZ1bmN0aW9u PklTIEpTT048L2Z1bmN0aW9uPgorICAgICAgcHJlZGljYXRlIGZvciBkaWZmZXJlbnQgZGF0 YSB0eXBlczoKKyAgICAgPC9wYXJhPgorICAgICA8c2NyZWVuPgorU0VMRUNUCisgICAganMs IAorICAgIGpzIElTIEpTT04gImlzIGpzb24iLCAKKyAgICBqcyBJUyBOT1QgSlNPTiAiaXMg bm90IGpzb24iLAorICAgIGpzIElTIEpTT04gU0NBTEFSICJpcyBzY2FsYXIiLAorICAgIGpz IElTIEpTT04gT0JKRUNUICJpcyBvYmplY3QiLAorICAgIGpzIElTIEpTT04gQVJSQVkgImlz IGFycmF5IgorRlJPTSAKKyAgICAoVkFMVUVTICgnMTIzJyksICgnImFiYyInKSwgKCd7ImEi OiAiYiJ9JyksICgnWzEsMl0nKSwgKCdhYmMnKSkgZm9vKGpzKTsKKworICAgICBqcyAgICAg fCBpcyBqc29uIHwgaXMgbm90IGpzb24gfCBpcyBzY2FsYXIgfCBpcyBvYmplY3QgfCBpcyBh cnJheSAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tCisgMTIzICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgICB8IGYKKyAiYWJjIiAgICAgIHwg dCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgIHwgZgorIHsi YSI6ICJiIn0gfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAg ICAgfCBmCisgWzEsMl0gICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IGYgICAgICAg ICB8IGYgICAgICAgICB8IHQKKyBhYmMgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICAg IHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgorKDUgcm93cykKKzwvc2NyZWVuPgorICAg IDwvc2VjdDU+CisgICA8L3NlY3Q0PgorCisKKyAgPC9zZWN0Mz4KKworICA8c2VjdDMgaWQ9 ImZ1bmN0aW9ucy1zcWxqc29uLXNlcmlhbGl6aW5nIj4KKyAgIDx0aXRsZT5TZXJpYWxpemlu ZyBKU09OIGRhdGE8L3RpdGxlPgorICAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbnNl cmlhbGl6ZSI+PGxpdGVyYWw+SlNPTl9TRVJJQUxJWkU8L2xpdGVyYWw+PC9saW5rPgorICAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L2l0ZW1pemVkbGlzdD4KKworICAg PHNlY3Q0IGlkPSJmdW5jdGlvbnMtanNvbnNlcmlhbGl6ZSI+CisgICAgPHRpdGxlPjxsaXRl cmFsPkpTT05fU0VSSUFMQUlaRTwvbGl0ZXJhbD48L3RpdGxlPgorICAgIDxpbmRleHRlcm0+ PHByaW1hcnk+anNvbl9zZXJpYWxpemU8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisKKzxzeW5v cHNpcz4KK0pTT05fU0VSSUFMSVpFICgKKyAgPHBhcmFtZXRlcj5leHByZXNzaW9uPC9wYXJh bWV0ZXI+IDxvcHRpb25hbD4gRk9STUFUIEpTT04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4 IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4gUkVUVVJOSU5HIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0 aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFs PiA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorKQorPC9zeW5vcHNpcz4KKworICAgIDxzZWN0 NT4KKyAgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAg ICAgIDxmdW5jdGlvbj5KU09OX1NFUklBTElaRTwvZnVuY3Rpb24+IGZ1bmN0aW9uIHRyYW5z Zm9ybXMgYSBTUUwvSlNPTiB2YWx1ZQorICAgICAgaW50byBhIGNoYXJhY3RlciBvciBiaW5h cnkgc3RyaW5nLgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4K KyAgICAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorICAgICAgPHZhcmlhYmxlbGlzdD4K KyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAgIDxsaXRl cmFsPjxwYXJhbWV0ZXI+ZXhwcmVzc2lvbjwvcGFyYW1ldGVyPiA8b3B0aW9uYWw+IEZPUk1B VCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFs PjwvbGl0ZXJhbD4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiB0eXBlZCBl eHByZXNzaW9uIHRoYXQgcHJvdmlkZXMgYSBkYXRhIGZvcgorICAgICAgICAgIHNlcmlhbGl6 YXRpb24uICBBY2NlcHRlZCBKU09OIHR5cGVzICg8dHlwZT5qc29uPC90eXBlPiBhbmQKKyAg ICAgICAgICA8dHlwZT5qc29uYjwvdHlwZT4pLCBhbnkgY2hhcmFjdGVyIHN0cmluZyB0eXBl cyAoPHR5cGU+dGV4dDwvdHlwZT4sCisgICAgICAgICAgPHR5cGU+Y2hhcjwvdHlwZT4sIGV0 Yy4pLCBiaW5hcnkgc3RyaW5ncyAoPHR5cGU+Ynl0ZWE8L3R5cGU+KSBpbgorICAgICAgICAg IFVURjggZW5jb2RpbmcuCisgICAgICAgICAgRm9yIG51bGwgaW5wdXQsIG51bGwgdmFsdWUg aXMgcmV0dXJuZWQuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPkZPUk1BVDwvbGl0ZXJhbD4gY2xhdXNlIGlz IHByb3ZpZGVkIHRvIGNvbmZvcm0KKyAgICAgICAgICAgdG8gdGhlIFNRTC9KU09OIHN0YW5k YXJkLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwv dmFybGlzdGVudHJ5PgorICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgor ICAgICAgICAgPGxpdGVyYWw+UkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxv cHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFsPjwvbGl0ZXJh bD4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJh PgorICAgICAgICAgVGhlIG91dHB1dCBjbGF1c2UgdGhhdCBzcGVjaWZpZXMgdGhlIHRhcmdl dCBjaGFyYWN0ZXIgb3IgYmluYXJ5IHN0cmluZworICAgICAgICAgdHlwZSAoPHR5cGU+dGV4 dDwvdHlwZT4sIDx0eXBlPmNoYXI8L3R5cGU+LCA8dHlwZT5ieXRlYTwvdHlwZT4sIGV0Yy4p LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlz dGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3NlY3Q1PgorCisgICAgPHNl Y3Q1PgorICAgICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgIEFs dGVybmF0aXZlbHksIHlvdSBjYW4gY29uc3RydWN0IDxhY3JvbnltPkpTT048L2Fjcm9ueW0+ IHZhbHVlcyBzaW1wbHkKKyAgICAgIHVzaW5nIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9w cm9kdWN0bmFtZT4tc3BlY2lmaWMgY2FzdHMgdG8gCisgICAgICA8dHlwZT5qc29uPC90eXBl PiBhbmQgPHR5cGU+anNvbmI8L3R5cGU+IHR5cGVzLgorICAgICA8L3BhcmE+CisgICAgPC9z ZWN0NT4KKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisgICAg IDxwYXJhPgorICAgICAgQ29uc3RydWN0IGEgSlNPTiB0aGUgcHJvdmlkZWQgc3RyaW5nczoK KyAgICAgPC9wYXJhPgorPHNjcmVlbj4KK1NFTEVDVCBKU09OX1NFUklBTElaRShKU09OX1ND QUxBUignZm9vJykpOworIGpzb25fc2VyaWFsaXplIAorLS0tLS0tLS0tLS0tLS0tLQorICJm b28iCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NFUklBTElaRSgneyJmb28iOiAiYmFyIiwg ImJheiI6IFsxLCAyLCAzXX0nIFJFVFVSTklORyBieXRlYSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICBqc29uX3NlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBceDdiMjI2NjZmNmYyMjNhMjAyMjYyNjE3MjIyMmMyMDIyNjI2 MTdhMjIzYTIwNWIzMTJjMjAzMjJjMjAzMzVkN2QKKygxIHJvdykKKworPC9zY3JlZW4+Cisg ICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+CisKKyAgPC9zZWN0Mz4KKyAKKyAgPHNlY3QzIGlk PSJzcWxqc29uLWNvbW1vbi1jbGF1c2VzIj4KKyAgIDx0aXRsZT5TUUwvSlNPTiBDb21tb24g Q2xhdXNlczwvdGl0bGU+CisKKyAgIDxzZWN0NCBpZD0ic3FsanNvbi1pbnB1dC1jbGF1c2Ui PgorICAgIDx0aXRsZT5TUUwvSlNPTiBJbnB1dCBDbGF1c2U8L3RpdGxlPgorCisgICAgPHZh cmlhYmxlbGlzdD4KKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVy YWw+PHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFi bGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzxvcHRpb25hbD4gUEFTU0lORyB7 IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT52YXJu YW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0aW9u YWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgIFRoZSBpbnB1dCBjbGF1c2Ugc3BlY2lmaWVzIHRoZSBKU09OIGRhdGEgdG8g cXVlcnkgYW5kCisgICAgICAgdGhlIGV4YWN0IHF1ZXJ5IHBhdGggdG8gYmUgcGFzc2VkIHRv IFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9uczoKKyAgICAgPC9wYXJhPgorICAgIDxpdGVtaXpl ZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8cmVw bGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4gaXMgdGhlIEpTT04gZGF0YSB0 byBxdWVyeS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3Rp dGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJl c3Npb248L3JlcGxhY2VhYmxlPiBpcyBhbiBTUUwvSlNPTiBwYXRoCisgICAgICAgZXhwcmVz c2lvbiB0aGF0IHNwZWNpZmllcyB0aGUgaXRlbXMgdG8gYmUgcmV0cmlldmVkIGZyb20gdGhl IEpTT04KKyAgICAgICBkYXRhLiBGb3IgZGV0YWlscyBvbiBwYXRoIGV4cHJlc3Npb24gc3lu dGF4LCBzZWUKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtc3FsanNvbi1wYXRo Ii8+LgorICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBvcHRpb25hbCA8Y29tbWFuZD5QQVNTSU5H PC9jb21tYW5kPiBjbGF1c2UgcHJvdmlkZXMgdGhlIHZhbHVlcyBmb3IKKyAgICAgICB0aGUg bmFtZWQgdmFyaWFibGVzIHVzZWQgaW4gdGhlIFNRTC9KU09OIHBhdGggZXhwcmVzc2lvbi4K KyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4K KyAgICA8cGFyYT4KKyAgICAgVGhlIGlucHV0IGNsYXVzZSBpcyBjb21tb24gZm9yIGFsbCBT UUwvSlNPTiBxdWVyeSBmdW5jdGlvbnMuCisgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisKKyAgIDwvc2Vj dDQ+CisKKyAgIDxzZWN0NCBpZD0ic3FsanNvbi1vdXRwdXQtY2xhdXNlIj4KKyAgICA8dGl0 bGU+U1FML0pTT04gT3V0cHV0IENsYXVzZTwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0 PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5SRVRVUk5J TkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFi bGU+IDxvcHRpb25hbD4gRk9STUFUIEpTT04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4IDwv b3B0aW9uYWw+IDwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgIFRoZSBvdXRwdXQgY2xhdXNlIHRoYXQgc3Bl Y2lmaWVzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZ2VuZXJhdGVkCisgICAgICAgPGFjcm9u eW0+SlNPTjwvYWNyb255bT4gb2JqZWN0LiBPdXQgb2YgdGhlIGJveCwgPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgorICAgICAgIHN1cHBvcnRzIHRoZSBmb2xsb3dp bmcgdHlwZXM6IDx0eXBlPmpzb248L3R5cGU+LCA8dHlwZT5qc29uYjwvdHlwZT4sCisgICAg ICAgPHR5cGU+Ynl0ZWE8L3R5cGU+LCBhbmQgY2hhcmFjdGVyIHN0cmluZyB0eXBlcyAoPHR5 cGU+dGV4dDwvdHlwZT4sIDx0eXBlPmNoYXI8L3R5cGU+LAorICAgICAgIDx0eXBlPnZhcmNo YXI8L3R5cGU+LCBhbmQgPHR5cGU+bmNoYXI8L3R5cGU+KS4KKyAgICAgICBUbyB1c2Ugb3Ro ZXIgdHlwZXMsIHlvdSBtdXN0IGNyZWF0ZSB0aGUgPGxpdGVyYWw+Q0FTVDwvbGl0ZXJhbD4g ZnJvbSA8dHlwZT5qc29uPC90eXBlPiBmb3IgdGhpcyB0eXBlLgorICAgICAgIEJ5IGRlZmF1 bHQsIHRoZSA8dHlwZT5qc29uPC90eXBlPiB0eXBlIGlzIHJldHVybmVkLgorICAgICA8L3Bh cmE+CisgICAgIDxwYXJhPgorICAgICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5GT1JNQVQ8 L2xpdGVyYWw+IGNsYXVzZSBpcyBwcm92aWRlZCB0byBjb25mb3JtIHRvIHRoZSBTUUwvSlNP TiBzdGFuZGFyZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICAgVGhlIG91 dHB1dCBjbGF1c2UgaXMgY29tbW9uIGZvciBib3RoIGNvbnN0cnVjdG9yIGFuZCBxdWVyeSBT UUwvSlNPTiBmdW5jdGlvbnMuCisgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorCisgICA8L3NlY3Q0Pgor ICA8L3NlY3QzPgorICA8L3NlY3QyPgorCiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0iZnVu Y3Rpb25zLXNlcXVlbmNlIj4KQEAgLTE5NzE5LDYgKzIxNjM3LDExNSBAQCBTRUxFQ1QgTlVM TElGKHZhbHVlLCAnKG5vbmUpJykgLi4uCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAg ICAgPGVudHJ5Pk5vPC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgCisgICAgICA8cm93 PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJm dW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFy eT5qc29uX2FnZ19zdHJpY3Q8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAg ICAgICA8ZnVuY3Rpb24+anNvbl9hZ2dfc3RyaWN0PC9mdW5jdGlvbj4gKCA8dHlwZT5hbnll bGVtZW50PC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5qc29uPC9yZXR1cm52YWx1 ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUi PgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+anNvbmJfYWdnX3N0 cmljdDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlv bj5qc29uYl9hZ2dfc3RyaWN0PC9mdW5jdGlvbj4gKCA8dHlwZT5hbnllbGVtZW50PC90eXBl PiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5qc29uYjwvcmV0dXJudmFsdWU+CisgICAgICAg PC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBDb2xsZWN0cyBhbGwgdGhlIGlucHV0 IHZhbHVlcywgc2tpcHBpbmcgbnVsbHMsIGludG8gYSBKU09OIGFycmF5LgorICAgICAgICBW YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byBKU09OIGFzIHBlciA8ZnVuY3Rpb24+dG9fanNvbjwv ZnVuY3Rpb24+CisgICAgICAgIG9yIDxmdW5jdGlvbj50b19qc29uYjwvZnVuY3Rpb24+Lgor ICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5ObzwvZW50cnk+CisgICAg ICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0 ZXJtPgorICAgICAgICAgPHByaW1hcnk+anNvbl9vYmplY3RfYWdnX3N0cmljdDwvcHJpbWFy eT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29uX29iamVj dF9hZ2dfc3RyaWN0PC9mdW5jdGlvbj4gKAorICAgICAgICAgPHBhcmFtZXRlcj5rZXk8L3Bh cmFtZXRlcj4gPHR5cGU+ImFueSI8L3R5cGU+LAorICAgICAgICAgPHBhcmFtZXRlcj52YWx1 ZTwvcGFyYW1ldGVyPiA8dHlwZT4iYW55IjwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFs dWU+anNvbjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhIHJv bGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxw cmltYXJ5Pmpzb25iX29iamVjdF9hZ2dfc3RyaWN0PC9wcmltYXJ5PgorICAgICAgICA8L2lu ZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPmpzb25iX29iamVjdF9hZ2dfc3RyaWN0PC9m dW5jdGlvbj4gKAorICAgICAgICAgPHBhcmFtZXRlcj5rZXk8L3BhcmFtZXRlcj4gPHR5cGU+ ImFueSI8L3R5cGU+LAorICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8 dHlwZT4iYW55IjwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+anNvbmI8L3JldHVy bnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQ29sbGVj dHMgYWxsIHRoZSBrZXkvdmFsdWUgcGFpcnMgaW50byBhIEpTT04gb2JqZWN0LiAgS2V5IGFy Z3VtZW50cworICAgICAgICBhcmUgY29lcmNlZCB0byB0ZXh0OyB2YWx1ZSBhcmd1bWVudHMg YXJlIGNvbnZlcnRlZCBhcworICAgICAgICBwZXIgPGZ1bmN0aW9uPnRvX2pzb248L2Z1bmN0 aW9uPiBvciA8ZnVuY3Rpb24+dG9fanNvbmI8L2Z1bmN0aW9uPi4KKyAgICAgICAgTnVsbCB2 YWx1ZXMgYXJlIHNraXBwZWQsIGtleXMgY2FuIG5vdCBiZSBudWxsLgorICAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5ObzwvZW50cnk+CisgICAgICA8L3Jvdz4KKwor ICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAg ICAgPHByaW1hcnk+anNvbl9vYmplY3RfYWdnX3VuaXF1ZTwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29uX29iamVjdF9hZ2dfdW5pcXVl PC9mdW5jdGlvbj4gKAorICAgICAgICAgPHBhcmFtZXRlcj5rZXk8L3BhcmFtZXRlcj4gPHR5 cGU+ImFueSI8L3R5cGU+LAorICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVy PiA8dHlwZT4iYW55IjwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+anNvbjwvcmV0 dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhIHJvbGU9ImZ1bmNfc2ln bmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pmpzb25i X29iamVjdF9hZ2dfdW5pcXVlPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAg ICAgICAgPGZ1bmN0aW9uPmpzb25iX29iamVjdF9hZ2dfdW5pcXVlPC9mdW5jdGlvbj4gKAor ICAgICAgICAgPHBhcmFtZXRlcj5rZXk8L3BhcmFtZXRlcj4gPHR5cGU+ImFueSI8L3R5cGU+ LAorICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8dHlwZT4iYW55Ijwv dHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+anNvbmI8L3JldHVybnZhbHVlPgorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQ29sbGVjdHMgYWxsIHRoZSBr ZXkvdmFsdWUgcGFpcnMgaW50byBhIEpTT04gb2JqZWN0LiAgS2V5IGFyZ3VtZW50cworICAg ICAgICBhcmUgY29lcmNlZCB0byB0ZXh0OyB2YWx1ZSBhcmd1bWVudHMgYXJlIGNvbnZlcnRl ZCBhcworICAgICAgICBwZXIgPGZ1bmN0aW9uPnRvX2pzb248L2Z1bmN0aW9uPiBvciA8ZnVu Y3Rpb24+dG9fanNvbmI8L2Z1bmN0aW9uPi4KKyAgICAgICAgVmFsdWVzIGNhbiBiZSBudWxs LCBidXQgbm90IGtleXMuCisgICAgICAgIEluIGNhc2Ugb2YgZHVwbGljYXRlIGtleXMgZXJy b3IgaXMgdGhyb3duLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5O bzwvZW50cnk+CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkg cm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgor ICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+anNvbl9vYmplY3RfYWdn X3VuaXF1ZV9zdHJpY3Q8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAg ICA8ZnVuY3Rpb24+anNvbl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3Q8L2Z1bmN0aW9uPiAo CisgICAgICAgICA8cGFyYW1ldGVyPmtleTwvcGFyYW1ldGVyPiA8dHlwZT4iYW55IjwvdHlw ZT4sCisgICAgICAgICA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPiJhbnki PC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5qc29uPC9yZXR1cm52YWx1ZT4KKyAg ICAgICA8L3BhcmE+CisgICAgICAgPHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAg ICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+anNvbmJfb2JqZWN0X2FnZ191 bmlxdWVfc3RyaWN0PC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAg PGZ1bmN0aW9uPmpzb25iX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdDwvZnVuY3Rpb24+ICgK KyAgICAgICAgIDxwYXJhbWV0ZXI+a2V5PC9wYXJhbWV0ZXI+IDx0eXBlPiJhbnkiPC90eXBl PiwKKyAgICAgICAgIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+ImFueSI8 L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmpzb25iPC9yZXR1cm52YWx1ZT4KKyAg ICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIENvbGxlY3RzIGFsbCB0aGUg a2V5L3ZhbHVlIHBhaXJzIGludG8gYSBKU09OIG9iamVjdC4gIEtleSBhcmd1bWVudHMKKyAg ICAgICAgYXJlIGNvZXJjZWQgdG8gdGV4dDsgdmFsdWUgYXJndW1lbnRzIGFyZSBjb252ZXJ0 ZWQgYXMKKyAgICAgICAgcGVyIDxmdW5jdGlvbj50b19qc29uPC9mdW5jdGlvbj4gb3IgPGZ1 bmN0aW9uPnRvX2pzb25iPC9mdW5jdGlvbj4uCisgICAgICAgIE51bGwgdmFsdWVzIGFyZSBz a2lwcGVkLCBrZXlzIGNhbiBub3QgYmUgbnVsbC4KKyAgICAgICAgSW4gY2FzZSBvZiBkdXBs aWNhdGUga2V5cyBlcnJvciBpcyB0aHJvd24uCisgICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgICAgPGVudHJ5Pk5vPC9lbnRyeT4KKyAgICAgIDwvcm93PgogCiAgICAgICA8cm93Pgog ICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5j X3NpZ25hdHVyZSI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwva2V5d29yZHMvc3FsMjAx Ni0wMi1yZXNlcnZlZC50eHQgYi9kb2Mvc3JjL3NnbWwva2V5d29yZHMvc3FsMjAxNi0wMi1y ZXNlcnZlZC50eHQKaW5kZXggYWUxMTAxMjM4OC4uN2JhNDIwODM5OCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2tleXdvcmRzL3NxbDIwMTYtMDItcmVzZXJ2ZWQudHh0CisrKyBiL2Rv Yy9zcmMvc2dtbC9rZXl3b3Jkcy9zcWwyMDE2LTAyLXJlc2VydmVkLnR4dApAQCAtMTU2LDEy ICsxNTYsMTUgQEAgSU5URVJWQUwKIElOVE8KIElTCiBKT0lOCitKU09OCiBKU09OX0FSUkFZ CiBKU09OX0FSUkFZQUdHCiBKU09OX0VYSVNUUwogSlNPTl9PQkpFQ1QKIEpTT05fT0JKRUNU QUdHCiBKU09OX1FVRVJZCitKU09OX1NDQUxBUgorSlNPTl9TRVJJQUxJWkUKIEpTT05fVEFC TEUKIEpTT05fVEFCTEVfUFJJTUlUSVZFCiBKU09OX1ZBTFVFCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHIuYwppbmRleCA4NDczNTdiZjgwLi4yNTI1M2Y1Mzc3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHByLmMKQEAgLTQ3LDYgKzQ3LDkgQEAKICNpbmNsdWRlICJ1dGlscy9hcnJheS5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0u aCIKKyNpbmNsdWRlICJ1dGlscy9qc29uLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIK KyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKQEAgLTg1LDYgKzg4LDQwIEBA IHN0YXRpYyB2b2lkIEV4ZWNCdWlsZEFnZ1RyYW5zQ2FsbChFeHByU3RhdGUgKnN0YXRlLCBB Z2dTdGF0ZSAqYWdnc3RhdGUsCiAJCQkJCQkJCSAgYm9vbCBudWxsY2hlY2spOwogCiAKK3N0 YXRpYyBFeHByU3RhdGUgKgorRXhlY0luaXRFeHBySW50ZXJuYWwoRXhwciAqbm9kZSwgUGxh blN0YXRlICpwYXJlbnQsIFBhcmFtTGlzdEluZm8gZXh0X3BhcmFtcywKKwkJCQkJIERhdHVt ICpjYXNldmFsLCBib29sICpjYXNlbnVsbCkKK3sKKwlFeHByU3RhdGUgICpzdGF0ZTsKKwlF eHByRXZhbFN0ZXAgc2NyYXRjaCA9IHswfTsKKworCS8qIFNwZWNpYWwgY2FzZTogTlVMTCBl eHByZXNzaW9uIHByb2R1Y2VzIGEgTlVMTCBFeHByU3RhdGUgcG9pbnRlciAqLworCWlmIChu b2RlID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJLyogSW5pdGlhbGl6ZSBFeHByU3Rh dGUgd2l0aCBlbXB0eSBzdGVwIGxpc3QgKi8KKwlzdGF0ZSA9IG1ha2VOb2RlKEV4cHJTdGF0 ZSk7CisJc3RhdGUtPmV4cHIgPSBub2RlOworCXN0YXRlLT5wYXJlbnQgPSBwYXJlbnQ7CisJ c3RhdGUtPmV4dF9wYXJhbXMgPSBleHRfcGFyYW1zOworCXN0YXRlLT5pbm5lcm1vc3RfY2Fz ZXZhbCA9IGNhc2V2YWw7CisJc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbCA9IGNhc2VudWxs OworCisJLyogSW5zZXJ0IEVFT1BfKl9GRVRDSFNPTUUgc3RlcHMgYXMgbmVlZGVkICovCisJ RXhlY0luaXRFeHByU2xvdHMoc3RhdGUsIChOb2RlICopIG5vZGUpOworCisJLyogQ29tcGls ZSB0aGUgZXhwcmVzc2lvbiBwcm9wZXIgKi8KKwlFeGVjSW5pdEV4cHJSZWMobm9kZSwgc3Rh dGUsICZzdGF0ZS0+cmVzdmFsdWUsICZzdGF0ZS0+cmVzbnVsbCk7CisKKwkvKiBGaW5hbGx5 LCBhcHBlbmQgYSBET05FIHN0ZXAgKi8KKwlzY3JhdGNoLm9wY29kZSA9IEVFT1BfRE9ORTsK KwlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisKKwlFeGVjUmVhZHlFeHBy KHN0YXRlKTsKKworCXJldHVybiBzdGF0ZTsKK30KKwogLyoKICAqIEV4ZWNJbml0RXhwcjog cHJlcGFyZSBhbiBleHByZXNzaW9uIHRyZWUgZm9yIGV4ZWN1dGlvbgogICoKQEAgLTEyMiwz MiArMTU5LDcgQEAgc3RhdGljIHZvaWQgRXhlY0J1aWxkQWdnVHJhbnNDYWxsKEV4cHJTdGF0 ZSAqc3RhdGUsIEFnZ1N0YXRlICphZ2dzdGF0ZSwKIEV4cHJTdGF0ZSAqCiBFeGVjSW5pdEV4 cHIoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQpCiB7Ci0JRXhwclN0YXRlICAqc3Rh dGU7Ci0JRXhwckV2YWxTdGVwIHNjcmF0Y2ggPSB7MH07Ci0KLQkvKiBTcGVjaWFsIGNhc2U6 IE5VTEwgZXhwcmVzc2lvbiBwcm9kdWNlcyBhIE5VTEwgRXhwclN0YXRlIHBvaW50ZXIgKi8K LQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gTlVMTDsKLQotCS8qIEluaXRpYWxpemUg RXhwclN0YXRlIHdpdGggZW1wdHkgc3RlcCBsaXN0ICovCi0Jc3RhdGUgPSBtYWtlTm9kZShF eHByU3RhdGUpOwotCXN0YXRlLT5leHByID0gbm9kZTsKLQlzdGF0ZS0+cGFyZW50ID0gcGFy ZW50OwotCXN0YXRlLT5leHRfcGFyYW1zID0gTlVMTDsKLQotCS8qIEluc2VydCBFRU9QXypf RkVUQ0hTT01FIHN0ZXBzIGFzIG5lZWRlZCAqLwotCUV4ZWNJbml0RXhwclNsb3RzKHN0YXRl LCAoTm9kZSAqKSBub2RlKTsKLQotCS8qIENvbXBpbGUgdGhlIGV4cHJlc3Npb24gcHJvcGVy ICovCi0JRXhlY0luaXRFeHByUmVjKG5vZGUsIHN0YXRlLCAmc3RhdGUtPnJlc3ZhbHVlLCAm c3RhdGUtPnJlc251bGwpOwotCi0JLyogRmluYWxseSwgYXBwZW5kIGEgRE9ORSBzdGVwICov Ci0Jc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0RPTkU7Ci0JRXhwckV2YWxQdXNoU3RlcChzdGF0 ZSwgJnNjcmF0Y2gpOwotCi0JRXhlY1JlYWR5RXhwcihzdGF0ZSk7Ci0KLQlyZXR1cm4gc3Rh dGU7CisJcmV0dXJuIEV4ZWNJbml0RXhwckludGVybmFsKG5vZGUsIHBhcmVudCwgTlVMTCwg TlVMTCwgTlVMTCk7CiB9CiAKIC8qCkBAIC0xNTksMzIgKzE3MSwyMCBAQCBFeGVjSW5pdEV4 cHIoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQpCiBFeHByU3RhdGUgKgogRXhlY0lu aXRFeHByV2l0aFBhcmFtcyhFeHByICpub2RlLCBQYXJhbUxpc3RJbmZvIGV4dF9wYXJhbXMp CiB7Ci0JRXhwclN0YXRlICAqc3RhdGU7Ci0JRXhwckV2YWxTdGVwIHNjcmF0Y2ggPSB7MH07 Ci0KLQkvKiBTcGVjaWFsIGNhc2U6IE5VTEwgZXhwcmVzc2lvbiBwcm9kdWNlcyBhIE5VTEwg RXhwclN0YXRlIHBvaW50ZXIgKi8KLQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gTlVM TDsKLQotCS8qIEluaXRpYWxpemUgRXhwclN0YXRlIHdpdGggZW1wdHkgc3RlcCBsaXN0ICov Ci0Jc3RhdGUgPSBtYWtlTm9kZShFeHByU3RhdGUpOwotCXN0YXRlLT5leHByID0gbm9kZTsK LQlzdGF0ZS0+cGFyZW50ID0gTlVMTDsKLQlzdGF0ZS0+ZXh0X3BhcmFtcyA9IGV4dF9wYXJh bXM7Ci0KLQkvKiBJbnNlcnQgRUVPUF8qX0ZFVENIU09NRSBzdGVwcyBhcyBuZWVkZWQgKi8K LQlFeGVjSW5pdEV4cHJTbG90cyhzdGF0ZSwgKE5vZGUgKikgbm9kZSk7Ci0KLQkvKiBDb21w aWxlIHRoZSBleHByZXNzaW9uIHByb3BlciAqLwotCUV4ZWNJbml0RXhwclJlYyhub2RlLCBz dGF0ZSwgJnN0YXRlLT5yZXN2YWx1ZSwgJnN0YXRlLT5yZXNudWxsKTsKLQotCS8qIEZpbmFs bHksIGFwcGVuZCBhIERPTkUgc3RlcCAqLwotCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9ET05F OwotCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKLQotCUV4ZWNSZWFkeUV4 cHIoc3RhdGUpOworCXJldHVybiBFeGVjSW5pdEV4cHJJbnRlcm5hbChub2RlLCBOVUxMLCBl eHRfcGFyYW1zLCBOVUxMLCBOVUxMKTsKK30KIAotCXJldHVybiBzdGF0ZTsKKy8qCisgKiBF eGVjSW5pdEV4cHJXaXRoQ2FzZVZhbHVlOiBwcmVwYXJlIGFuIGV4cHJlc3Npb24gdHJlZSBm b3IgZXhlY3V0aW9uCisgKgorICogVGhpcyBpcyB0aGUgc2FtZSBhcyBFeGVjSW5pdEV4cHIs IGV4Y2VwdCB0aGF0IGEgcG9pbnRlciB0byB0aGUgdmFsdWUgZm9yCisgKiBDYXNUZXN0RXhw ciBpcyBwYXNzZWQgaGVyZS4KKyAqLworRXhwclN0YXRlICoKK0V4ZWNJbml0RXhwcldpdGhD YXNlVmFsdWUoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQsCisJCQkJCQkgIERhdHVt ICpjYXNldmFsLCBib29sICpjYXNlbnVsbCkKK3sKKwlyZXR1cm4gRXhlY0luaXRFeHBySW50 ZXJuYWwobm9kZSwgcGFyZW50LCBOVUxMLCBjYXNldmFsLCBjYXNlbnVsbCk7CiB9CiAKIC8q CkBAIC0yNDI4LDYgKzI0MjgsMjUzIEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBF eHByU3RhdGUgKnN0YXRlLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9Kc29uVmFs dWVFeHByOgorCQkJeworCQkJCUpzb25WYWx1ZUV4cHIgKmp2ZSA9IChKc29uVmFsdWVFeHBy ICopIG5vZGU7CisKKwkJCQlFeGVjSW5pdEV4cHJSZWMoanZlLT5yYXdfZXhwciwgc3RhdGUs IHJlc3YsIHJlc251bGwpOworCisJCQkJaWYgKGp2ZS0+Zm9ybWF0dGVkX2V4cHIpCisJCQkJ eworCQkJCQlEYXR1bQkgICAqaW5uZXJtb3N0X2Nhc2V2YWwgPSBzdGF0ZS0+aW5uZXJtb3N0 X2Nhc2V2YWw7CisJCQkJCWJvb2wJICAgKmlubmVybW9zdF9pc251bGwgPSBzdGF0ZS0+aW5u ZXJtb3N0X2Nhc2VudWxsOworCisJCQkJCXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9IHJl c3Y7CisJCQkJCXN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSByZXNudWxsOworCisJCQkJ CUV4ZWNJbml0RXhwclJlYyhqdmUtPmZvcm1hdHRlZF9leHByLCBzdGF0ZSwgcmVzdiwgcmVz bnVsbCk7CisKKwkJCQkJc3RhdGUtPmlubmVybW9zdF9jYXNldmFsID0gaW5uZXJtb3N0X2Nh c2V2YWw7CisJCQkJCXN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSBpbm5lcm1vc3RfaXNu dWxsOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKworCQljYXNlIFRfSnNvbkNvbnN0cnVj dG9yRXhwcjoKKwkJCXsKKwkJCQlKc29uQ29uc3RydWN0b3JFeHByICpjdG9yID0gKEpzb25D b25zdHJ1Y3RvckV4cHIgKikgbm9kZTsKKwkJCQlMaXN0CSAgICphcmdzID0gY3Rvci0+YXJn czsKKwkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQlpbnQJCQluYXJncyA9IGxpc3RfbGVuZ3Ro KGFyZ3MpOworCQkJCWludAkJCWFyZ25vID0gMDsKKworCQkJCWlmIChjdG9yLT5mdW5jKQor CQkJCXsKKwkJCQkJRXhlY0luaXRFeHByUmVjKGN0b3ItPmZ1bmMsIHN0YXRlLCByZXN2LCBy ZXNudWxsKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoKGN0b3ItPnR5cGUgPT0gSlNDVE9SX0pT T05fUEFSU0UgJiYgIWN0b3ItPnVuaXF1ZSkgfHwKKwkJCQkJCSBjdG9yLT50eXBlID09IEpT Q1RPUl9KU09OX1NFUklBTElaRSkKKwkJCQl7CisJCQkJCS8qIFVzZSB0aGUgdmFsdWUgb2Yg dGhlIGZpcnN0IGFyZ3VtZW50IGFzIGEgcmVzdWx0ICovCisJCQkJCUV4ZWNJbml0RXhwclJl YyhsaW5pdGlhbChhcmdzKSwgc3RhdGUsIHJlc3YsIHJlc251bGwpOworCQkJCX0KKwkJCQll bHNlCisJCQkJeworCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSlNPTl9DT05TVFJVQ1RP UjsKKwkJCQkJc2NyYXRjaC5kLmpzb25fY29uc3RydWN0b3IuY29uc3RydWN0b3IgPSBjdG9y OworCQkJCQlzY3JhdGNoLmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfdmFsdWVzID0gcGFsbG9j KHNpemVvZihEYXR1bSkgKiBuYXJncyk7CisJCQkJCXNjcmF0Y2guZC5qc29uX2NvbnN0cnVj dG9yLmFyZ19udWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkgKiBuYXJncyk7CisJCQkJCXNj cmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLmFyZ190eXBlcyA9IHBhbGxvYyhzaXplb2YoT2lk KSAqIG5hcmdzKTsKKwkJCQkJc2NyYXRjaC5kLmpzb25fY29uc3RydWN0b3IubmFyZ3MgPSBu YXJnczsKKworCQkJCQlmb3JlYWNoKGxjLCBhcmdzKQorCQkJCQl7CisJCQkJCQlFeHByCSAg ICphcmcgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCQkJCQlzY3JhdGNoLmQuanNvbl9j b25zdHJ1Y3Rvci5hcmdfdHlwZXNbYXJnbm9dID0gZXhwclR5cGUoKE5vZGUgKikgYXJnKTsK KworCQkJCQkJaWYgKElzQShhcmcsIENvbnN0KSkKKwkJCQkJCXsKKwkJCQkJCQkvKiBEb24n dCBldmFsdWF0ZSBjb25zdCBhcmd1bWVudHMgZXZlcnkgcm91bmQgKi8KKwkJCQkJCQlDb25z dAkgICAqY29uID0gKENvbnN0ICopIGFyZzsKKworCQkJCQkJCXNjcmF0Y2guZC5qc29uX2Nv bnN0cnVjdG9yLmFyZ192YWx1ZXNbYXJnbm9dID0gY29uLT5jb25zdHZhbHVlOworCQkJCQkJ CXNjcmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLmFyZ19udWxsc1thcmdub10gPSBjb24tPmNv bnN0aXNudWxsOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJCUV4ZWNJ bml0RXhwclJlYyhhcmcsIHN0YXRlLAorCQkJCQkJCQkJCQkmc2NyYXRjaC5kLmpzb25fY29u c3RydWN0b3IuYXJnX3ZhbHVlc1thcmdub10sCisJCQkJCQkJCQkJCSZzY3JhdGNoLmQuanNv bl9jb25zdHJ1Y3Rvci5hcmdfbnVsbHNbYXJnbm9dKTsKKwkJCQkJCX0KKwkJCQkJCWFyZ25v Kys7CisJCQkJCX0KKworCQkJCQkvKiBwcmVwYXJlIHR5cGUgY2FjaGUgZm9yIGRhdHVtX3Rv X2pzb25bYl0oKSAqLworCQkJCQlpZiAoY3Rvci0+dHlwZSA9PSBKU0NUT1JfSlNPTl9TQ0FM QVIpCisJCQkJCXsKKwkJCQkJCWJvb2wJCWlzX2pzb25iID0KKwkJCQkJCQljdG9yLT5yZXR1 cm5pbmctPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0pTT05COworCisJCQkJ CQlzY3JhdGNoLmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfdHlwZV9jYWNoZSA9CisJCQkJCQkJ cGFsbG9jKHNpemVvZigqc2NyYXRjaC5kLmpzb25fY29uc3RydWN0b3IuYXJnX3R5cGVfY2Fj aGUpICogbmFyZ3MpOworCisJCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyBpKysp CisJCQkJCQl7CisJCQkJCQkJaW50CQkJY2F0ZWdvcnk7CisJCQkJCQkJT2lkCQkJb3V0ZnVu Y2lkOworCQkJCQkJCU9pZAkJCXR5cGlkID0gc2NyYXRjaC5kLmpzb25fY29uc3RydWN0b3Iu YXJnX3R5cGVzW2ldOworCisJCQkJCQkJaWYgKGlzX2pzb25iKQorCQkJCQkJCXsKKwkJCQkJ CQkJSnNvbmJUeXBlQ2F0ZWdvcnkgamJjYXQ7CisKKwkJCQkJCQkJanNvbmJfY2F0ZWdvcml6 ZV90eXBlKHR5cGlkLCAmamJjYXQsICZvdXRmdW5jaWQpOworCisJCQkJCQkJCWNhdGVnb3J5 ID0gKGludCkgamJjYXQ7CisJCQkJCQkJfQorCQkJCQkJCWVsc2UKKwkJCQkJCQl7CisJCQkJ CQkJCUpzb25UeXBlQ2F0ZWdvcnkganNjYXQ7CisKKwkJCQkJCQkJanNvbl9jYXRlZ29yaXpl X3R5cGUodHlwaWQsICZqc2NhdCwgJm91dGZ1bmNpZCk7CisKKwkJCQkJCQkJY2F0ZWdvcnkg PSAoaW50KSBqc2NhdDsKKwkJCQkJCQl9CisKKwkJCQkJCQlzY3JhdGNoLmQuanNvbl9jb25z dHJ1Y3Rvci5hcmdfdHlwZV9jYWNoZVtpXS5vdXRmdW5jaWQgPSBvdXRmdW5jaWQ7CisJCQkJ CQkJc2NyYXRjaC5kLmpzb25fY29uc3RydWN0b3IuYXJnX3R5cGVfY2FjaGVbaV0uY2F0ZWdv cnkgPSBjYXRlZ29yeTsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCUV4cHJFdmFsUHVzaFN0 ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQl9CisKKwkJCQlpZiAoY3Rvci0+Y29lcmNpb24p CisJCQkJeworCQkJCQlEYXR1bQkgICAqaW5uZXJtb3N0X2Nhc2V2YWwgPSBzdGF0ZS0+aW5u ZXJtb3N0X2Nhc2V2YWw7CisJCQkJCWJvb2wJICAgKmlubmVybW9zdF9pc251bGwgPSBzdGF0 ZS0+aW5uZXJtb3N0X2Nhc2VudWxsOworCisJCQkJCXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZh bCA9IHJlc3Y7CisJCQkJCXN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSByZXNudWxsOwor CisJCQkJCUV4ZWNJbml0RXhwclJlYyhjdG9yLT5jb2VyY2lvbiwgc3RhdGUsIHJlc3YsIHJl c251bGwpOworCisJCQkJCXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9IGlubmVybW9zdF9j YXNldmFsOworCQkJCQlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gaW5uZXJtb3N0X2lz bnVsbDsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFRfSnNvbklzUHJlZGlj YXRlOgorCQkJeworCQkJCUpzb25Jc1ByZWRpY2F0ZSAqcHJlZCA9IChKc29uSXNQcmVkaWNh dGUgKikgbm9kZTsKKworCQkJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBwcmVkLT5leHBy LCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1Bf SVNfSlNPTjsKKwkJCQlzY3JhdGNoLmQuaXNfanNvbi5wcmVkID0gcHJlZDsKKworCQkJCUV4 cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQlicmVhazsKKwkJCX0KKwor CQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAqamV4cHIgPSBjYXN0 Tm9kZShKc29uRXhwciwgbm9kZSk7CisJCQkJTGlzdENlbGwgICAqYXJnZXhwcmxjOworCQkJ CUxpc3RDZWxsICAgKmFyZ25hbWVsYzsKKworCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9K U09ORVhQUjsKKwkJCQlzY3JhdGNoLmQuanNvbmV4cHIuanNleHByID0gamV4cHI7CisKKwkJ CQlzY3JhdGNoLmQuanNvbmV4cHIuZm9ybWF0dGVkX2V4cHIgPQorCQkJCQlwYWxsb2Moc2l6 ZW9mKCpzY3JhdGNoLmQuanNvbmV4cHIuZm9ybWF0dGVkX2V4cHIpKTsKKworCQkJCUV4ZWNJ bml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+Zm9ybWF0dGVkX2V4cHIsIHN0YXRlLAorCQkJ CQkJCQkmc2NyYXRjaC5kLmpzb25leHByLmZvcm1hdHRlZF9leHByLT52YWx1ZSwKKwkJCQkJ CQkJJnNjcmF0Y2guZC5qc29uZXhwci5mb3JtYXR0ZWRfZXhwci0+aXNudWxsKTsKKworCQkJ CXNjcmF0Y2guZC5qc29uZXhwci5wYXRoc3BlYyA9CisJCQkJCXBhbGxvYyhzaXplb2YoKnNj cmF0Y2guZC5qc29uZXhwci5wYXRoc3BlYykpOworCisJCQkJRXhlY0luaXRFeHByUmVjKChF eHByICopIGpleHByLT5wYXRoX3NwZWMsIHN0YXRlLAorCQkJCQkJCQkmc2NyYXRjaC5kLmpz b25leHByLnBhdGhzcGVjLT52YWx1ZSwKKwkJCQkJCQkJJnNjcmF0Y2guZC5qc29uZXhwci5w YXRoc3BlYy0+aXNudWxsKTsKKworCQkJCXNjcmF0Y2guZC5qc29uZXhwci5yZXNfZXhwciA9 CisJCQkJCXBhbGxvYyhzaXplb2YoKnNjcmF0Y2guZC5qc29uZXhwci5yZXNfZXhwcikpOwor CisJCQkJc2NyYXRjaC5kLmpzb25leHByLnJlc3VsdF9leHByID0gamV4cHItPnJlc3VsdF9j b2VyY2lvbgorCQkJCQk/IEV4ZWNJbml0RXhwcldpdGhDYXNlVmFsdWUoKEV4cHIgKikgamV4 cHItPnJlc3VsdF9jb2VyY2lvbi0+ZXhwciwKKwkJCQkJCQkJCQkJCXN0YXRlLT5wYXJlbnQs CisJCQkJCQkJCQkJCQkmc2NyYXRjaC5kLmpzb25leHByLnJlc19leHByLT52YWx1ZSwKKwkJ CQkJCQkJCQkJCSZzY3JhdGNoLmQuanNvbmV4cHIucmVzX2V4cHItPmlzbnVsbCkKKwkJCQkJ OiBOVUxMOworCisJCQkJc2NyYXRjaC5kLmpzb25leHByLmRlZmF1bHRfb25fZW1wdHkgPSAh amV4cHItPm9uX2VtcHR5ID8gTlVMTCA6CisJCQkJCUV4ZWNJbml0RXhwcigoRXhwciAqKSBq ZXhwci0+b25fZW1wdHktPmRlZmF1bHRfZXhwciwKKwkJCQkJCQkJIHN0YXRlLT5wYXJlbnQp OworCisJCQkJc2NyYXRjaC5kLmpzb25leHByLmRlZmF1bHRfb25fZXJyb3IgPQorCQkJCQlF eGVjSW5pdEV4cHIoKEV4cHIgKikgamV4cHItPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIsCisJ CQkJCQkJCSBzdGF0ZS0+cGFyZW50KTsKKworCQkJCWlmIChqZXhwci0+b21pdF9xdW90ZXMg fHwKKwkJCQkJKGpleHByLT5yZXN1bHRfY29lcmNpb24gJiYgamV4cHItPnJlc3VsdF9jb2Vy Y2lvbi0+dmlhX2lvKSkKKwkJCQl7CisJCQkJCU9pZAkJCXR5cGlucHV0OworCisJCQkJCS8q IGxvb2t1cCB0aGUgcmVzdWx0IHR5cGUncyBpbnB1dCBmdW5jdGlvbiAqLworCQkJCQlnZXRU eXBlSW5wdXRJbmZvKGpleHByLT5yZXR1cm5pbmctPnR5cGlkLCAmdHlwaW5wdXQsCisJCQkJ CQkJCQkgJnNjcmF0Y2guZC5qc29uZXhwci5pbnB1dC50eXBpb3BhcmFtKTsKKwkJCQkJZm1n cl9pbmZvKHR5cGlucHV0LCAmc2NyYXRjaC5kLmpzb25leHByLmlucHV0LmZ1bmMpOworCQkJ CX0KKworCQkJCXNjcmF0Y2guZC5qc29uZXhwci5hcmdzID0gTklMOworCisJCQkJZm9yYm90 aChhcmdleHBybGMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcywKKwkJCQkJCWFyZ25hbWVsYywg amV4cHItPnBhc3NpbmdfbmFtZXMpCisJCQkJeworCQkJCQlFeHByCSAgICphcmdleHByID0g KEV4cHIgKikgbGZpcnN0KGFyZ2V4cHJsYyk7CisJCQkJCVN0cmluZwkgICAqYXJnbmFtZSA9 IGxmaXJzdF9ub2RlKFN0cmluZywgYXJnbmFtZWxjKTsKKwkJCQkJSnNvblBhdGhWYXJpYWJs ZUV2YWxDb250ZXh0ICp2YXIgPSBwYWxsb2Moc2l6ZW9mKCp2YXIpKTsKKworCQkJCQl2YXIt Pm5hbWUgPSBwc3RyZHVwKGFyZ25hbWUtPnN2YWwpOworCQkJCQl2YXItPnR5cGlkID0gZXhw clR5cGUoKE5vZGUgKikgYXJnZXhwcik7CisJCQkJCXZhci0+dHlwbW9kID0gZXhwclR5cG1v ZCgoTm9kZSAqKSBhcmdleHByKTsKKwkJCQkJdmFyLT5lc3RhdGUgPSBFeGVjSW5pdEV4cHIo YXJnZXhwciwgc3RhdGUtPnBhcmVudCk7CisJCQkJCXZhci0+ZWNvbnRleHQgPSBOVUxMOwor CQkJCQl2YXItPmV2YWx1YXRlZCA9IGZhbHNlOworCQkJCQl2YXItPnZhbHVlID0gKERhdHVt KSAwOworCQkJCQl2YXItPmlzbnVsbCA9IHRydWU7CisKKwkJCQkJc2NyYXRjaC5kLmpzb25l eHByLmFyZ3MgPQorCQkJCQkJbGFwcGVuZChzY3JhdGNoLmQuanNvbmV4cHIuYXJncywgdmFy KTsKKwkJCQl9CisKKwkJCQlzY3JhdGNoLmQuanNvbmV4cHIuY2FjaGUgPSBOVUxMOworCisJ CQkJaWYgKGpleHByLT5jb2VyY2lvbnMpCisJCQkJeworCQkJCQlKc29uQ29lcmNpb24gKipj b2VyY2lvbjsKKwkJCQkJc3RydWN0IEpzb25Db2VyY2lvblN0YXRlICpjc3RhdGU7CisJCQkJ CURhdHVtCSAgICpjYXNldmFsOworCQkJCQlib29sCSAgICpjYXNlbnVsbDsKKworCQkJCQlz Y3JhdGNoLmQuanNvbmV4cHIuY29lcmNpb25fZXhwciA9CisJCQkJCQlwYWxsb2Moc2l6ZW9m KCpzY3JhdGNoLmQuanNvbmV4cHIuY29lcmNpb25fZXhwcikpOworCisJCQkJCWNhc2V2YWwg PSAmc2NyYXRjaC5kLmpzb25leHByLmNvZXJjaW9uX2V4cHItPnZhbHVlOworCQkJCQljYXNl bnVsbCA9ICZzY3JhdGNoLmQuanNvbmV4cHIuY29lcmNpb25fZXhwci0+aXNudWxsOworCisJ CQkJCWZvciAoY3N0YXRlID0gJnNjcmF0Y2guZC5qc29uZXhwci5jb2VyY2lvbnMubnVsbCwK KwkJCQkJCSBjb2VyY2lvbiA9ICZqZXhwci0+Y29lcmNpb25zLT5udWxsOworCQkJCQkJIGNv ZXJjaW9uIDw9ICZqZXhwci0+Y29lcmNpb25zLT5jb21wb3NpdGU7CisJCQkJCQkgY29lcmNp b24rKywgY3N0YXRlKyspCisJCQkJCXsKKwkJCQkJCWNzdGF0ZS0+Y29lcmNpb24gPSAqY29l cmNpb247CisJCQkJCQljc3RhdGUtPmVzdGF0ZSA9ICpjb2VyY2lvbiA/CisJCQkJCQkJRXhl Y0luaXRFeHByV2l0aENhc2VWYWx1ZSgoRXhwciAqKSgqY29lcmNpb24pLT5leHByLAorCQkJ CQkJCQkJCQkJCSAgc3RhdGUtPnBhcmVudCwKKwkJCQkJCQkJCQkJCQkgIGNhc2V2YWwsIGNh c2VudWxsKSA6IE5VTEw7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlFeHByRXZhbFB1c2hTdGVw KHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQp IG5vZGVUYWcobm9kZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMK aW5kZXggZDZmN2Q3YzJkNy4uMDQ4MzI3OWY5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jCkBAIC01NywyMiArNTcsMzEgQEAKICNpbmNsdWRlICJwb3N0Z3Jl cy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgorI2luY2x1ZGUgImFjY2Vz cy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJw bGFuLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgor I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5j cy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKKyNpbmNsdWRlICJwYXJzZXIv cGFyc2VfZXhwci5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInV0aWxzL2Fy cmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9k YXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9leHBh bmRlZHJlY29yZC5oIgorI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKKyNpbmNsdWRlICJ1dGls cy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25mdW5jcy5oIgorI2luY2x1ZGUgInV0 aWxzL2pzb25wYXRoLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogI2lu Y2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCkBAIC00NzcsNiArNDg2LDkgQEAgRXhlY0ludGVy cEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICpp c251bGwpCiAJCSYmQ0FTRV9FRU9QX0dST1VQSU5HX0ZVTkMsCiAJCSYmQ0FTRV9FRU9QX1dJ TkRPV19GVU5DLAogCQkmJkNBU0VfRUVPUF9TVUJQTEFOLAorCQkmJkNBU0VfRUVPUF9KU09O X0NPTlNUUlVDVE9SLAorCQkmJkNBU0VfRUVPUF9JU19KU09OLAorCQkmJkNBU0VfRUVPUF9K U09ORVhQUiwKIAkJJiZDQVNFX0VFT1BfQUdHX1NUUklDVF9ERVNFUklBTElaRSwKIAkJJiZD QVNFX0VFT1BfQUdHX0RFU0VSSUFMSVpFLAogCQkmJkNBU0VfRUVPUF9BR0dfU1RSSUNUX0lO UFVUX0NIRUNLX0FSR1MsCkBAIC0xNzg2LDcgKzE3OTgsMjcgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwp CiAJCXsKIAkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24g Ki8KIAkJCUV4ZWNFdmFsQWdnT3JkZXJlZFRyYW5zVHVwbGUoc3RhdGUsIG9wLCBlY29udGV4 dCk7CisJCQlFRU9fTkVYVCgpOworCQl9CisKKwkJRUVPX0NBU0UoRUVPUF9KU09OX0NPTlNU UlVDVE9SKQorCQl7CisJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxlbWVu dGF0aW9uICovCisJCQlFeGVjRXZhbEpzb25Db25zdHJ1Y3RvcihzdGF0ZSwgb3AsIGVjb250 ZXh0KTsKKwkJCUVFT19ORVhUKCk7CisJCX0KIAorCQlFRU9fQ0FTRShFRU9QX0lTX0pTT04p CisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24g Ki8KKwkJCUV4ZWNFdmFsSnNvbklzUHJlZGljYXRlKHN0YXRlLCBvcCk7CisJCQlFRU9fTkVY VCgpOworCQl9CisKKwkJRUVPX0NBU0UoRUVPUF9KU09ORVhQUikKKwkJeworCQkJLyogdG9v IGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLworCQkJRXhlY0V2YWxK c29uKHN0YXRlLCBvcCwgZWNvbnRleHQpOwogCQkJRUVPX05FWFQoKTsKIAkJfQogCkBAIC0z OTAwLDYgKzM5MzIsOTEgQEAgRXhlY0V2YWxYbWxFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4 cHJFdmFsU3RlcCAqb3ApCiAJfQogfQogCit2b2lkCitFeGVjRXZhbEpzb25Jc1ByZWRpY2F0 ZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQoreworCUpzb25Jc1ByZWRp Y2F0ZSAqcHJlZCA9IG9wLT5kLmlzX2pzb24ucHJlZDsKKwlEYXR1bQkJanMgPSAqb3AtPnJl c3ZhbHVlOworCU9pZAkJCWV4cHJ0eXBlOworCWJvb2wJCXJlczsKKworCWlmICgqb3AtPnJl c251bGwpCisJeworCQkqb3AtPnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKwkJ cmV0dXJuOworCX0KKworCWV4cHJ0eXBlID0gZXhwclR5cGUocHJlZC0+ZXhwcik7CisKKwlp ZiAoZXhwcnR5cGUgPT0gVEVYVE9JRCB8fCBleHBydHlwZSA9PSBKU09OT0lEKQorCXsKKwkJ dGV4dAkgICAqanNvbiA9IERhdHVtR2V0VGV4dFAoanMpOworCisJCWlmIChwcmVkLT52YWx1 ZV90eXBlID09IEpTX1RZUEVfQU5ZKQorCQkJcmVzID0gdHJ1ZTsKKwkJZWxzZQorCQl7CisJ CQlzd2l0Y2ggKGpzb25fZ2V0X2ZpcnN0X3Rva2VuKGpzb24sIGZhbHNlKSkKKwkJCXsKKwkJ CQljYXNlIEpTT05fVE9LRU5fT0JKRUNUX1NUQVJUOgorCQkJCQlyZXMgPSBwcmVkLT52YWx1 ZV90eXBlID09IEpTX1RZUEVfT0JKRUNUOworCQkJCQlicmVhazsKKwkJCQljYXNlIEpTT05f VE9LRU5fQVJSQVlfU1RBUlQ6CisJCQkJCXJlcyA9IHByZWQtPnZhbHVlX3R5cGUgPT0gSlNf VFlQRV9BUlJBWTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBKU09OX1RPS0VOX1NUUklORzoK KwkJCQljYXNlIEpTT05fVE9LRU5fTlVNQkVSOgorCQkJCWNhc2UgSlNPTl9UT0tFTl9UUlVF OgorCQkJCWNhc2UgSlNPTl9UT0tFTl9GQUxTRToKKwkJCQljYXNlIEpTT05fVE9LRU5fTlVM TDoKKwkJCQkJcmVzID0gcHJlZC0+dmFsdWVfdHlwZSA9PSBKU19UWVBFX1NDQUxBUjsKKwkJ CQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJcmVzID0gZmFsc2U7CisJCQkJCWJyZWFr OworCQkJfQorCQl9CisKKwkJLyoKKwkJICogRG8gZnVsbCBwYXJzaW5nIHBhc3Mgb25seSBm b3IgdW5pcXVlbmVzcyBjaGVjayBvciBmb3IKKwkJICogSlNPTiB0ZXh0IHZhbGlkYXRpb24u CisJCSAqLworCQlpZiAocmVzICYmIChwcmVkLT51bmlxdWVfa2V5cyB8fCBleHBydHlwZSA9 PSBURVhUT0lEKSkKKwkJCXJlcyA9IGpzb25fdmFsaWRhdGUoanNvbiwgcHJlZC0+dW5pcXVl X2tleXMsIGZhbHNlKTsKKwl9CisJZWxzZSBpZiAoZXhwcnR5cGUgPT0gSlNPTkJPSUQpCisJ eworCQlpZiAocHJlZC0+dmFsdWVfdHlwZSA9PSBKU19UWVBFX0FOWSkKKwkJCXJlcyA9IHRy dWU7CisJCWVsc2UKKwkJeworCQkJSnNvbmIJICAgKmpiID0gRGF0dW1HZXRKc29uYlAoanMp OworCisJCQlzd2l0Y2ggKHByZWQtPnZhbHVlX3R5cGUpCisJCQl7CisJCQkJY2FzZSBKU19U WVBFX09CSkVDVDoKKwkJCQkJcmVzID0gSkJfUk9PVF9JU19PQkpFQ1QoamIpOworCQkJCQli cmVhazsKKwkJCQljYXNlIEpTX1RZUEVfQVJSQVk6CisJCQkJCXJlcyA9IEpCX1JPT1RfSVNf QVJSQVkoamIpICYmICFKQl9ST09UX0lTX1NDQUxBUihqYik7CisJCQkJCWJyZWFrOworCQkJ CWNhc2UgSlNfVFlQRV9TQ0FMQVI6CisJCQkJCXJlcyA9IEpCX1JPT1RfSVNfQVJSQVkoamIp ICYmIEpCX1JPT1RfSVNfU0NBTEFSKGpiKTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoK KwkJCQkJcmVzID0gZmFsc2U7CisJCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJLyogS2V5 IHVuaXF1ZW5lc3MgY2hlY2sgaXMgcmVkdW5kYW50IGZvciBqc29uYiAqLworCX0KKwllbHNl CisJCXJlcyA9IGZhbHNlOworCisJKm9wLT5yZXN2YWx1ZSA9IEJvb2xHZXREYXR1bShyZXMp OworfQorCiAvKgogICogRXhlY0V2YWxHcm91cGluZ0Z1bmMKICAqCkBAIC00Mzg2LDMgKzQ1 MDMsNjEyIEBAIEV4ZWNBZ2dQbGFpblRyYW5zQnlSZWYoQWdnU3RhdGUgKmFnZ3N0YXRlLCBB Z2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zLAogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZENvbnRleHQpOwogfQorCisvKgorICogRXZhbHVhdGUgYSBKU09OIGNvbnN0cnVjdG9yIGV4 cHJlc3Npb24uCisgKi8KK3ZvaWQKK0V4ZWNFdmFsSnNvbkNvbnN0cnVjdG9yKEV4cHJTdGF0 ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRl eHQpCit7CisJRGF0dW0JCXJlczsKKwlKc29uQ29uc3RydWN0b3JFeHByICpjdG9yID0gb3At PmQuanNvbl9jb25zdHJ1Y3Rvci5jb25zdHJ1Y3RvcjsKKwlib29sCQlpc19qc29uYiA9IGN0 b3ItPnJldHVybmluZy0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfSlNPTkI7 CisJYm9vbAkJaXNudWxsID0gZmFsc2U7CisKKwlpZiAoY3Rvci0+dHlwZSA9PSBKU0NUT1Jf SlNPTl9BUlJBWSkKKwkJcmVzID0gKGlzX2pzb25iID8KKwkJCSAgIGpzb25iX2J1aWxkX2Fy cmF5X3dvcmtlciA6CisJCQkgICBqc29uX2J1aWxkX2FycmF5X3dvcmtlcikob3AtPmQuanNv bl9jb25zdHJ1Y3Rvci5uYXJncywKKwkJCQkJCQkJCQlvcC0+ZC5qc29uX2NvbnN0cnVjdG9y LmFyZ192YWx1ZXMsCisJCQkJCQkJCQkJb3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfbnVs bHMsCisJCQkJCQkJCQkJb3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfdHlwZXMsCisJCQkJ CQkJCQkJb3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5jb25zdHJ1Y3Rvci0+YWJzZW50X29uX251 bGwpOworCWVsc2UgaWYgKGN0b3ItPnR5cGUgPT0gSlNDVE9SX0pTT05fT0JKRUNUKQorCQly ZXMgPSAoaXNfanNvbmIgPworCQkJICAganNvbmJfYnVpbGRfb2JqZWN0X3dvcmtlciA6CisJ CQkgICBqc29uX2J1aWxkX29iamVjdF93b3JrZXIpKG9wLT5kLmpzb25fY29uc3RydWN0b3Iu bmFyZ3MsCisJCQkJCQkJCQkJIG9wLT5kLmpzb25fY29uc3RydWN0b3IuYXJnX3ZhbHVlcywK KwkJCQkJCQkJCQkgb3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfbnVsbHMsCisJCQkJCQkJ CQkJIG9wLT5kLmpzb25fY29uc3RydWN0b3IuYXJnX3R5cGVzLAorCQkJCQkJCQkJCSBvcC0+ ZC5qc29uX2NvbnN0cnVjdG9yLmNvbnN0cnVjdG9yLT5hYnNlbnRfb25fbnVsbCwKKwkJCQkJ CQkJCQkgb3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5jb25zdHJ1Y3Rvci0+dW5pcXVlKTsKKwll bHNlIGlmIChjdG9yLT50eXBlID09IEpTQ1RPUl9KU09OX1NDQUxBUikKKwl7CisJCWlmIChv cC0+ZC5qc29uX2NvbnN0cnVjdG9yLmFyZ19udWxsc1swXSkKKwkJeworCQkJcmVzID0gKERh dHVtKSAwOworCQkJaXNudWxsID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCURhdHVt CQl2YWx1ZSA9IG9wLT5kLmpzb25fY29uc3RydWN0b3IuYXJnX3ZhbHVlc1swXTsKKwkJCWlu dAkJCWNhdGVnb3J5ID0gb3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfdHlwZV9jYWNoZVsw XS5jYXRlZ29yeTsKKwkJCU9pZAkJCW91dGZ1bmNpZCA9IG9wLT5kLmpzb25fY29uc3RydWN0 b3IuYXJnX3R5cGVfY2FjaGVbMF0ub3V0ZnVuY2lkOworCisJCQlpZiAoaXNfanNvbmIpCisJ CQkJcmVzID0gdG9fanNvbmJfd29ya2VyKHZhbHVlLCBjYXRlZ29yeSwgb3V0ZnVuY2lkKTsK KwkJCWVsc2UKKwkJCQlyZXMgPSB0b19qc29uX3dvcmtlcih2YWx1ZSwgY2F0ZWdvcnksIG91 dGZ1bmNpZCk7CisJCX0KKwl9CisJZWxzZSBpZiAoY3Rvci0+dHlwZSA9PSBKU0NUT1JfSlNP Tl9QQVJTRSkKKwl7CisJCWlmIChvcC0+ZC5qc29uX2NvbnN0cnVjdG9yLmFyZ19udWxsc1sw XSkKKwkJeworCQkJcmVzID0gKERhdHVtKSAwOworCQkJaXNudWxsID0gdHJ1ZTsKKwkJfQor CQllbHNlCisJCXsKKwkJCURhdHVtCQl2YWx1ZSA9IG9wLT5kLmpzb25fY29uc3RydWN0b3Iu YXJnX3ZhbHVlc1swXTsKKwkJCXRleHQJICAgKmpzID0gRGF0dW1HZXRUZXh0UCh2YWx1ZSk7 CisKKwkJCWlmIChpc19qc29uYikKKwkJCQlyZXMgPSBqc29uYl9mcm9tX3RleHQoanMsIHRy dWUpOworCQkJZWxzZQorCQkJeworCQkJCSh2b2lkKSBqc29uX3ZhbGlkYXRlKGpzLCB0cnVl LCB0cnVlKTsKKwkJCQlyZXMgPSB2YWx1ZTsKKwkJCX0KKwkJfQorCX0KKwllbHNlCisJewor CQlyZXMgPSAoRGF0dW0pIDA7CisJCWVsb2coRVJST1IsICJpbnZhbGlkIEpzb25Db25zdHJ1 Y3RvckV4cHIgdHlwZSAlZCIsIGN0b3ItPnR5cGUpOworCX0KKworCSpvcC0+cmVzdmFsdWUg PSByZXM7CisJKm9wLT5yZXNudWxsID0gaXNudWxsOworfQorCisvKgorICogRXZhbHVhdGUg YSBKU09OIGVycm9yL2VtcHR5IGJlaGF2aW9yIHJlc3VsdC4KKyAqLworc3RhdGljIERhdHVt CitFeGVjRXZhbEpzb25CZWhhdmlvcihFeHByQ29udGV4dCAqZWNvbnRleHQsIEpzb25CZWhh dmlvciAqYmVoYXZpb3IsCisJCQkJCSBFeHByU3RhdGUgKmRlZmF1bHRfZXN0YXRlLCBib29s ICppc19udWxsKQoreworCSppc19udWxsID0gZmFsc2U7CisKKwlzd2l0Y2ggKGJlaGF2aW9y LT5idHlwZSkKKwl7CisJCWNhc2UgSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWToKKwkJCXJl dHVybiBKc29uYlBHZXREYXR1bShKc29uYk1ha2VFbXB0eUFycmF5KCkpOworCisJCWNhc2Ug SlNPTl9CRUhBVklPUl9FTVBUWV9PQkpFQ1Q6CisJCQlyZXR1cm4gSnNvbmJQR2V0RGF0dW0o SnNvbmJNYWtlRW1wdHlPYmplY3QoKSk7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX1RSVUU6 CisJCQlyZXR1cm4gQm9vbEdldERhdHVtKHRydWUpOworCisJCWNhc2UgSlNPTl9CRUhBVklP Ul9GQUxTRToKKwkJCXJldHVybiBCb29sR2V0RGF0dW0oZmFsc2UpOworCisJCWNhc2UgSlNP Tl9CRUhBVklPUl9OVUxMOgorCQljYXNlIEpTT05fQkVIQVZJT1JfVU5LTk9XTjoKKwkJCSpp c19udWxsID0gdHJ1ZTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CisKKwkJY2FzZSBKU09OX0JF SEFWSU9SX0RFRkFVTFQ6CisJCQlyZXR1cm4gRXhlY0V2YWxFeHByKGRlZmF1bHRfZXN0YXRl LCBlY29udGV4dCwgaXNfbnVsbCk7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgU1FML0pTT04gYmVoYXZpb3IgJWQiLCBiZWhhdmlvci0+YnR5cGUpOwor CQkJcmV0dXJuIChEYXR1bSkgMDsKKwl9Cit9CisKKy8qCisgKiBFdmFsdWF0ZSBhIGNvZXJj aW9uIG9mIGEgSlNPTiBpdGVtIHRvIHRoZSB0YXJnZXQgdHlwZS4KKyAqLworc3RhdGljIERh dHVtCitFeGVjRXZhbEpzb25FeHByQ29lcmNpb24oRXhwckV2YWxTdGVwICpvcCwgRXhwckNv bnRleHQgKmVjb250ZXh0LAorCQkJCQkJIERhdHVtIHJlcywgYm9vbCAqaXNOdWxsLCB2b2lk ICpwLCBib29sICplcnJvcikKK3sKKwlFeHByU3RhdGUgKmVzdGF0ZSA9IHA7CisKKwlpZiAo ZXN0YXRlKQkJLyogY29lcmNlIHVzaW5nIHNwZWNpZmllZCBleHByZXNzaW9uICovCisJCXJl dHVybiBFeGVjRXZhbEV4cHIoZXN0YXRlLCBlY29udGV4dCwgaXNOdWxsKTsKKworCWlmIChv cC0+ZC5qc29uZXhwci5qc2V4cHItPm9wICE9IElTX0pTT05fRVhJU1RTKQorCXsKKwkJSnNv bkNvZXJjaW9uICpjb2VyY2lvbiA9IG9wLT5kLmpzb25leHByLmpzZXhwci0+cmVzdWx0X2Nv ZXJjaW9uOworCQlKc29uRXhwciAgICpqZXhwciA9IG9wLT5kLmpzb25leHByLmpzZXhwcjsK KwkJSnNvbmIJICAgKmpiID0gKmlzTnVsbCA/IE5VTEwgOiBEYXR1bUdldEpzb25iUChyZXMp OworCisJCWlmICgoY29lcmNpb24gJiYgY29lcmNpb24tPnZpYV9pbykgfHwKKwkJCShqZXhw ci0+b21pdF9xdW90ZXMgJiYgISppc051bGwgJiYKKwkJCSBKQl9ST09UX0lTX1NDQUxBUihq YikpKQorCQl7CisJCQkvKiBzdHJpcCBxdW90ZXMgYW5kIGNhbGwgdHlwaW5wdXQgZnVuY3Rp b24gKi8KKwkJCWNoYXIJICAgKnN0ciA9ICppc051bGwgPyBOVUxMIDogSnNvbmJVbnF1b3Rl KGpiKTsKKworCQkJcmV0dXJuIElucHV0RnVuY3Rpb25DYWxsKCZvcC0+ZC5qc29uZXhwci5p bnB1dC5mdW5jLCBzdHIsCisJCQkJCQkJCQkgb3AtPmQuanNvbmV4cHIuaW5wdXQudHlwaW9w YXJhbSwKKwkJCQkJCQkJCSBqZXhwci0+cmV0dXJuaW5nLT50eXBtb2QpOworCQl9CisJCWVs c2UgaWYgKGNvZXJjaW9uICYmIGNvZXJjaW9uLT52aWFfcG9wdWxhdGUpCisJCQlyZXR1cm4g anNvbl9wb3B1bGF0ZV90eXBlKHJlcywgSlNPTkJPSUQsCisJCQkJCQkJCQkgIGpleHByLT5y ZXR1cm5pbmctPnR5cGlkLAorCQkJCQkJCQkJICBqZXhwci0+cmV0dXJuaW5nLT50eXBtb2Qs CisJCQkJCQkJCQkgICZvcC0+ZC5qc29uZXhwci5jYWNoZSwKKwkJCQkJCQkJCSAgZWNvbnRl eHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeSwKKwkJCQkJCQkJCSAgaXNOdWxsKTsKKwl9CisK KwlpZiAob3AtPmQuanNvbmV4cHIucmVzdWx0X2V4cHIpCisJeworCQlvcC0+ZC5qc29uZXhw ci5yZXNfZXhwci0+dmFsdWUgPSByZXM7CisJCW9wLT5kLmpzb25leHByLnJlc19leHByLT5p c251bGwgPSAqaXNOdWxsOworCisJCXJlcyA9IEV4ZWNFdmFsRXhwcihvcC0+ZC5qc29uZXhw ci5yZXN1bHRfZXhwciwgZWNvbnRleHQsIGlzTnVsbCk7CisJfQorCisJcmV0dXJuIHJlczsK K30KKworLyoKKyAqIEV2YWx1YXRlIGEgSlNPTiBwYXRoIHZhcmlhYmxlIGNhY2hpbmcgY29t cHV0ZWQgdmFsdWUuCisgKi8KK2ludAorRXZhbEpzb25QYXRoVmFyKHZvaWQgKmN4dCwgY2hh ciAqdmFyTmFtZSwgaW50IHZhck5hbWVMZW4sCisJCQkJSnNvbmJWYWx1ZSAqdmFsLCBKc29u YlZhbHVlICpiYXNlT2JqZWN0KQoreworCUpzb25QYXRoVmFyaWFibGVFdmFsQ29udGV4dCAq dmFyID0gTlVMTDsKKwlMaXN0CSAgICp2YXJzID0gY3h0OworCUxpc3RDZWxsICAgKmxjOwor CWludAkJCWlkID0gMTsKKworCWlmICghdmFyTmFtZSkKKwkJcmV0dXJuIGxpc3RfbGVuZ3Ro KHZhcnMpOworCisJZm9yZWFjaChsYywgdmFycykKKwl7CisJCXZhciA9IGxmaXJzdChsYyk7 CisKKwkJaWYgKCFzdHJuY21wKHZhci0+bmFtZSwgdmFyTmFtZSwgdmFyTmFtZUxlbikpCisJ CQlicmVhazsKKworCQl2YXIgPSBOVUxMOworCQlpZCsrOworCX0KKworCWlmICghdmFyKQor CQlyZXR1cm4gLTE7CisKKwlpZiAoIXZhci0+ZXZhbHVhdGVkKQorCXsKKwkJdmFyLT52YWx1 ZSA9IEV4ZWNFdmFsRXhwcih2YXItPmVzdGF0ZSwgdmFyLT5lY29udGV4dCwgJnZhci0+aXNu dWxsKTsKKwkJdmFyLT5ldmFsdWF0ZWQgPSB0cnVlOworCX0KKworCWlmICh2YXItPmlzbnVs bCkKKwl7CisJCXZhbC0+dHlwZSA9IGpidk51bGw7CisJCXJldHVybiAwOworCX0KKworCUpz b25JdGVtRnJvbURhdHVtKHZhci0+dmFsdWUsIHZhci0+dHlwaWQsIHZhci0+dHlwbW9kLCB2 YWwpOworCisJKmJhc2VPYmplY3QgPSAqdmFsOworCXJldHVybiBpZDsKK30KKworLyoKKyAq IFByZXBhcmUgU1FML0pTT04gaXRlbSBjb2VyY2lvbiB0byB0aGUgb3V0cHV0IHR5cGUuIFJl dHVybmVkIGEgZGF0dW0gb2YgdGhlCisgKiBjb3JyZXNwb25kaW5nIFNRTCB0eXBlIGFuZCBh IHBvaW50ZXIgdG8gdGhlIGNvZXJjaW9uIHN0YXRlLgorICovCitEYXR1bQorRXhlY1ByZXBh cmVKc29uSXRlbUNvZXJjaW9uKEpzb25iVmFsdWUgKml0ZW0sCisJCQkJCQkJSnNvblJldHVy bmluZyAqcmV0dXJuaW5nLAorCQkJCQkJCXN0cnVjdCBKc29uQ29lcmNpb25zU3RhdGUgKmNv ZXJjaW9ucywKKwkJCQkJCQlzdHJ1Y3QgSnNvbkNvZXJjaW9uU3RhdGUgKipwY29lcmNpb24p Cit7CisJc3RydWN0IEpzb25Db2VyY2lvblN0YXRlICpjb2VyY2lvbjsKKwlEYXR1bQkJcmVz OworCUpzb25iVmFsdWUJYnVmOworCisJaWYgKGl0ZW0tPnR5cGUgPT0gamJ2QmluYXJ5ICYm CisJCUpzb25Db250YWluZXJJc1NjYWxhcihpdGVtLT52YWwuYmluYXJ5LmRhdGEpKQorCXsK KwkJYm9vbAkJcmVzIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQlyZXMgPSBKc29u YkV4dHJhY3RTY2FsYXIoaXRlbS0+dmFsLmJpbmFyeS5kYXRhLCAmYnVmKTsKKwkJaXRlbSA9 ICZidWY7CisJCUFzc2VydChyZXMpOworCX0KKworCS8qIGdldCBjb2VyY2lvbiBzdGF0ZSBy ZWZlcmVuY2UgYW5kIGRhdHVtIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNRTCB0eXBlICovCisJ c3dpdGNoIChpdGVtLT50eXBlKQorCXsKKwkJY2FzZSBqYnZOdWxsOgorCQkJY29lcmNpb24g PSAmY29lcmNpb25zLT5udWxsOworCQkJcmVzID0gKERhdHVtKSAwOworCQkJYnJlYWs7CisK KwkJY2FzZSBqYnZTdHJpbmc6CisJCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPnN0cmluZzsK KwkJCXJlcyA9IFBvaW50ZXJHZXREYXR1bSgKKwkJCQljc3RyaW5nX3RvX3RleHRfd2l0aF9s ZW4oaXRlbS0+dmFsLnN0cmluZy52YWwsCisJCQkJCQkJCQkJIGl0ZW0tPnZhbC5zdHJpbmcu bGVuKSk7CisJCQlicmVhazsKKworCQljYXNlIGpidk51bWVyaWM6CisJCQljb2VyY2lvbiA9 ICZjb2VyY2lvbnMtPm51bWVyaWM7CisJCQlyZXMgPSBOdW1lcmljR2V0RGF0dW0oaXRlbS0+ dmFsLm51bWVyaWMpOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZCb29sOgorCQkJY29lcmNp b24gPSAmY29lcmNpb25zLT5ib29sZWFuOworCQkJcmVzID0gQm9vbEdldERhdHVtKGl0ZW0t PnZhbC5ib29sZWFuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgamJ2RGF0ZXRpbWU6CisJCQly ZXMgPSBpdGVtLT52YWwuZGF0ZXRpbWUudmFsdWU7CisJCQlzd2l0Y2ggKGl0ZW0tPnZhbC5k YXRldGltZS50eXBpZCkKKwkJCXsKKwkJCQljYXNlIERBVEVPSUQ6CisJCQkJCWNvZXJjaW9u ID0gJmNvZXJjaW9ucy0+ZGF0ZTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FT0lEOgor CQkJCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPnRpbWU7CisJCQkJCWJyZWFrOworCQkJCWNh c2UgVElNRVRaT0lEOgorCQkJCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPnRpbWV0ejsKKwkJ CQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCQkJCWNvZXJjaW9uID0gJmNv ZXJjaW9ucy0+dGltZXN0YW1wOworCQkJCQlicmVhazsKKwkJCQljYXNlIFRJTUVTVEFNUFRa T0lEOgorCQkJCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPnRpbWVzdGFtcHR6OworCQkJCQli cmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBqc29u YiBkYXRldGltZSB0eXBlIG9pZCAlZCIsCisJCQkJCQkgaXRlbS0+dmFsLmRhdGV0aW1lLnR5 cGlkKTsKKwkJCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNh c2UgamJ2QXJyYXk6CisJCWNhc2UgamJ2T2JqZWN0OgorCQljYXNlIGpidkJpbmFyeToKKwkJ CWNvZXJjaW9uID0gJmNvZXJjaW9ucy0+Y29tcG9zaXRlOworCQkJcmVzID0gSnNvbmJQR2V0 RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIoaXRlbSkpOworCQkJYnJlYWs7CisKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGpzb25iIHZhbHVlIHR5cGUgJWQiLCBp dGVtLT50eXBlKTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CisJfQorCisJKnBjb2VyY2lvbiA9 IGNvZXJjaW9uOworCisJcmV0dXJuIHJlczsKK30KKwordHlwZWRlZiBEYXR1bSAoKkpzb25G dW5jKShFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkg IERhdHVtIGl0ZW0sIGJvb2wgKnJlc251bGwsIHZvaWQgKnAsIGJvb2wgKmVycm9yKTsKKwor c3RhdGljIERhdHVtCitFeGVjRXZhbEpzb25FeHByU3VidHJhbnMoSnNvbkZ1bmMgZnVuYywg RXhwckV2YWxTdGVwICpvcCwKKwkJCQkJCSBFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJ CQkgRGF0dW0gcmVzLCBib29sICpyZXNudWxsLAorCQkJCQkJIHZvaWQgKnAsIGJvb2wgKmVy cm9yLCBib29sIHN1YnRyYW5zKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlS ZXNvdXJjZU93bmVyIG9sZG93bmVyOworCisJaWYgKCFzdWJ0cmFucykKKwkJLyogTm8gbmVl ZCB0byB1c2Ugc3VidHJhbnNhY3Rpb25zLiAqLworCQlyZXR1cm4gZnVuYyhvcCwgZWNvbnRl eHQsIHJlcywgcmVzbnVsbCwgcCwgZXJyb3IpOworCisJLyoKKwkgKiBXZSBzaG91bGQgY2F0 Y2ggZXhjZXB0aW9ucyBvZiBjYXRlZ29yeSBFUlJDT0RFX0RBVEFfRVhDRVBUSU9OCisJICog YW5kIGV4ZWN1dGUgdGhlIGNvcnJlc3BvbmRpbmcgT04gRVJST1IgYmVoYXZpb3IgdGhlbi4K KwkgKi8KKwlvbGRjb250ZXh0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CisJb2xkb3duZXIg PSBDdXJyZW50UmVzb3VyY2VPd25lcjsKKworCUFzc2VydChlcnJvcik7CisKKwlCZWdpbklu dGVybmFsU3ViVHJhbnNhY3Rpb24oTlVMTCk7CisJLyogV2FudCB0byBleGVjdXRlIGV4cHJl c3Npb25zIGluc2lkZSBmdW5jdGlvbidzIG1lbW9yeSBjb250ZXh0ICovCisJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJUEdfVFJZKCk7CisJeworCQlyZXMgPSBm dW5jKG9wLCBlY29udGV4dCwgcmVzLCByZXNudWxsLCBwLCBlcnJvcik7CisKKwkJLyogQ29t bWl0IHRoZSBpbm5lciB0cmFuc2FjdGlvbiwgcmV0dXJuIHRvIG91dGVyIHhhY3QgY29udGV4 dCAqLworCQlSZWxlYXNlQ3VycmVudFN1YlRyYW5zYWN0aW9uKCk7CisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJQ3VycmVudFJlc291cmNlT3duZXIgPSBvbGRv d25lcjsKKwl9CisJUEdfQ0FUQ0goKTsKKwl7CisJCUVycm9yRGF0YSAgKmVkYXRhOworCisJ CS8qIFNhdmUgZXJyb3IgaW5mbyBpbiBvbGRjb250ZXh0ICovCisJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJZWRhdGEgPSBDb3B5RXJyb3JEYXRhKCk7CisJCUZs dXNoRXJyb3JTdGF0ZSgpOworCisJCS8qIEFib3J0IHRoZSBpbm5lciB0cmFuc2FjdGlvbiAq LworCQlSb2xsYmFja0FuZFJlbGVhc2VDdXJyZW50U3ViVHJhbnNhY3Rpb24oKTsKKwkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlDdXJyZW50UmVzb3VyY2VPd25l ciA9IG9sZG93bmVyOworCisJCWlmIChFUlJDT0RFX1RPX0NBVEVHT1JZKGVkYXRhLT5zcWxl cnJjb2RlKSAhPQorCQkJRVJSQ09ERV9EQVRBX0VYQ0VQVElPTikKKwkJCVJlVGhyb3dFcnJv cihlZGF0YSk7CisKKwkJcmVzID0gKERhdHVtKSAwOworCQkqZXJyb3IgPSB0cnVlOworCX0K KwlQR19FTkRfVFJZKCk7CisKKwlyZXR1cm4gcmVzOworfQorCisKK3R5cGVkZWYgc3RydWN0 Cit7CisJSnNvblBhdGggICAqcGF0aDsKKwlib29sCSAgICplcnJvcjsKKwlib29sCQljb2Vy Y2lvbkluU3VidHJhbnM7Cit9IEV4ZWNFdmFsSnNvbkV4cHJDb250ZXh0OworCitzdGF0aWMg RGF0dW0KK0V4ZWNFdmFsSnNvbkV4cHIoRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQg KmVjb250ZXh0LAorCQkJCSBEYXR1bSBpdGVtLCBib29sICpyZXNudWxsLCB2b2lkICpwY3h0 LAorCQkJCSBib29sICplcnJvcikKK3sKKwlFeGVjRXZhbEpzb25FeHByQ29udGV4dCAqY3h0 ID0gcGN4dDsKKwlKc29uUGF0aCAgICpwYXRoID0gY3h0LT5wYXRoOworCUpzb25FeHByICAg KmpleHByID0gb3AtPmQuanNvbmV4cHIuanNleHByOworCUV4cHJTdGF0ZSAgKmVzdGF0ZSA9 IE5VTEw7CisJYm9vbAkJZW1wdHkgPSBmYWxzZTsKKwlEYXR1bQkJcmVzID0gKERhdHVtKSAw OworCisJc3dpdGNoIChqZXhwci0+b3ApCisJeworCQljYXNlIElTX0pTT05fUVVFUlk6CisJ CQlyZXMgPSBKc29uUGF0aFF1ZXJ5KGl0ZW0sIHBhdGgsIGpleHByLT53cmFwcGVyLCAmZW1w dHksIGVycm9yLAorCQkJCQkJCQlvcC0+ZC5qc29uZXhwci5hcmdzKTsKKwkJCWlmIChlcnJv ciAmJiAqZXJyb3IpCisJCQl7CisJCQkJKnJlc251bGwgPSB0cnVlOworCQkJCXJldHVybiAo RGF0dW0pIDA7CisJCQl9CisJCQkqcmVzbnVsbCA9ICFEYXR1bUdldFBvaW50ZXIocmVzKTsK KwkJCWJyZWFrOworCisJCWNhc2UgSVNfSlNPTl9WQUxVRToKKwkJCXsKKwkJCQlzdHJ1Y3Qg SnNvbkNvZXJjaW9uU3RhdGUgKmpjc3RhdGU7CisJCQkJSnNvbmJWYWx1ZSAqamJ2ID0gSnNv blBhdGhWYWx1ZShpdGVtLCBwYXRoLCAmZW1wdHksIGVycm9yLAorCQkJCQkJCQkJCQkJb3At PmQuanNvbmV4cHIuYXJncyk7CisKKwkJCQlpZiAoZXJyb3IgJiYgKmVycm9yKQorCQkJCQly ZXR1cm4gKERhdHVtKSAwOworCisJCQkJaWYgKCFqYnYpCS8qIE5VTEwgb3IgZW1wdHkgKi8K KwkJCQkJYnJlYWs7CisKKwkJCQlBc3NlcnQoIWVtcHR5KTsKKworCQkJCSpyZXNudWxsID0g ZmFsc2U7CisKKwkJCQkvKiBjb2VyY2Ugc2NhbGFyIGl0ZW0gdG8gdGhlIG91dHB1dCB0eXBl ICovCisJCQkJaWYgKGpleHByLT5yZXR1cm5pbmctPnR5cGlkID09IEpTT05PSUQgfHwKKwkJ CQkJamV4cHItPnJldHVybmluZy0+dHlwaWQgPT0gSlNPTkJPSUQpCisJCQkJeworCQkJCQkv KiBVc2UgcmVzdWx0IGNvZXJjaW9uIGZyb20ganNvbltiXSB0byB0aGUgb3V0cHV0IHR5cGUg Ki8KKwkJCQkJcmVzID0gSnNvbmJQR2V0RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIoamJ2KSk7 CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCS8qIFVzZSBjb2VyY2lvbiBmcm9tIFNRTC9K U09OIGl0ZW0gdHlwZSB0byB0aGUgb3V0cHV0IHR5cGUgKi8KKwkJCQlyZXMgPSBFeGVjUHJl cGFyZUpzb25JdGVtQ29lcmNpb24oamJ2LAorCQkJCQkJCQkJCQkJICBvcC0+ZC5qc29uZXhw ci5qc2V4cHItPnJldHVybmluZywKKwkJCQkJCQkJCQkJCSAgJm9wLT5kLmpzb25leHByLmNv ZXJjaW9ucywKKwkJCQkJCQkJCQkJCSAgJmpjc3RhdGUpOworCisJCQkJaWYgKGpjc3RhdGUt PmNvZXJjaW9uICYmCisJCQkJCShqY3N0YXRlLT5jb2VyY2lvbi0+dmlhX2lvIHx8CisJCQkJ CSBqY3N0YXRlLT5jb2VyY2lvbi0+dmlhX3BvcHVsYXRlKSkKKwkJCQl7CisJCQkJCWlmIChl cnJvcikKKwkJCQkJeworCQkJCQkJKmVycm9yID0gdHJ1ZTsKKwkJCQkJCXJldHVybiAoRGF0 dW0pIDA7CisJCQkJCX0KKwkJCQkJLyoKKwkJCQkJICogQ29lcmNpb24gdmlhIEkvTyBtZWFu cyBoZXJlIHRoYXQgdGhlIGNhc3QgdG8gdGhlIHRhcmdldAorCQkJCQkgKiB0eXBlIHNpbXBs eSBkb2VzIG5vdCBleGlzdC4KKwkJCQkJICovCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJLyoKKwkJCQkJCQkgKiBYWFggU3RhbmRhcmQgc2F5cyBhYm91dCBhIHNlcGFyYXRlIGVy cm9yIGNvZGUKKwkJCQkJCQkgKiBFUlJDT0RFX1NRTF9KU09OX0lURU1fQ0FOTk9UX0JFX0NB U1RfVE9fVEFSR0VUX1RZUEUKKwkJCQkJCQkgKiBidXQgZG9lcyBub3QgZGVmaW5lIGl0cyBu dW1iZXIuCisJCQkJCQkJICovCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TUUxfSlNPTl9T Q0FMQVJfUkVRVUlSRUQpLAorCQkJCQkJCSBlcnJtc2coIlNRTC9KU09OIGl0ZW0gY2Fubm90 IGJlIGNhc3QgdG8gdGFyZ2V0IHR5cGUiKSkpOworCQkJCX0KKwkJCQllbHNlIGlmICghamNz dGF0ZS0+ZXN0YXRlKQorCQkJCQlyZXR1cm4gcmVzOwkJLyogbm8gY29lcmNpb24gKi8KKwor CQkJCS8qIGNvZXJjZSB1c2luZyBzcGVjaWZpYyBleHByZXNzaW9uICovCisJCQkJZXN0YXRl ID0gamNzdGF0ZS0+ZXN0YXRlOworCQkJCW9wLT5kLmpzb25leHByLmNvZXJjaW9uX2V4cHIt PnZhbHVlID0gcmVzOworCQkJCW9wLT5kLmpzb25leHByLmNvZXJjaW9uX2V4cHItPmlzbnVs bCA9ICpyZXNudWxsOworCQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgSVNfSlNPTl9FWElT VFM6CisJCQl7CisJCQkJYm9vbAkJZXhpc3RzID0gSnNvblBhdGhFeGlzdHMoaXRlbSwgcGF0 aCwKKwkJCQkJCQkJCQkJCQlvcC0+ZC5qc29uZXhwci5hcmdzLAorCQkJCQkJCQkJCQkJCWVy cm9yKTsKKworCQkJCSpyZXNudWxsID0gZXJyb3IgJiYgKmVycm9yOworCQkJCXJlcyA9IEJv b2xHZXREYXR1bShleGlzdHMpOworCisJCQkJaWYgKCFvcC0+ZC5qc29uZXhwci5yZXN1bHRf ZXhwcikKKwkJCQkJcmV0dXJuIHJlczsKKworCQkJCS8qIGNvZXJjZSB1c2luZyByZXN1bHQg ZXhwcmVzc2lvbiAqLworCQkJCWVzdGF0ZSA9IG9wLT5kLmpzb25leHByLnJlc3VsdF9leHBy OworCQkJCW9wLT5kLmpzb25leHByLnJlc19leHByLT52YWx1ZSA9IHJlczsKKwkJCQlvcC0+ ZC5qc29uZXhwci5yZXNfZXhwci0+aXNudWxsID0gKnJlc251bGw7CisJCQkJYnJlYWs7CisJ CQl9CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pT T04gZXhwcmVzc2lvbiBvcCAlZCIsIGpleHByLT5vcCk7CisJCQlyZXR1cm4gKERhdHVtKSAw OworCX0KKworCWlmIChlbXB0eSkKKwl7CisJCUFzc2VydChqZXhwci0+b25fZW1wdHkpOwkv KiBpdCBpcyBub3QgSlNPTl9FWElTVFMgKi8KKworCQlpZiAoamV4cHItPm9uX2VtcHR5LT5i dHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQorCQl7CisJCQlpZiAoZXJyb3IpCisJCQl7 CisJCQkJKmVycm9yID0gdHJ1ZTsKKwkJCQlyZXR1cm4gKERhdHVtKSAwOworCQkJfQorCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX05PX1NRTF9KU09OX0lU RU0pLAorCQkJCQkgZXJybXNnKCJubyBTUUwvSlNPTiBpdGVtIikpKTsKKwkJfQorCisJCWlm IChqZXhwci0+b25fZW1wdHktPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfREVGQVVMVCkKKwkJ CS8qCisJCQkgKiBFeGVjdXRlIERFRkFVTFQgZXhwcmVzc2lvbiBhcyBhIGNvZXJjaW9uIGV4 cHJlc3Npb24sIGJlY2F1c2UKKwkJCSAqIGl0cyByZXN1bHQgaXMgYWxyZWFkeSBjb2VyY2Vk IHRvIHRoZSB0YXJnZXQgdHlwZS4KKwkJCSAqLworCQkJZXN0YXRlID0gb3AtPmQuanNvbmV4 cHIuZGVmYXVsdF9vbl9lbXB0eTsKKwkJZWxzZQorCQkJLyogRXhlY3V0ZSBPTiBFTVBUWSBi ZWhhdmlvciAqLworCQkJcmVzID0gRXhlY0V2YWxKc29uQmVoYXZpb3IoZWNvbnRleHQsIGpl eHByLT5vbl9lbXB0eSwKKwkJCQkJCQkJCSAgIG9wLT5kLmpzb25leHByLmRlZmF1bHRfb25f ZW1wdHksCisJCQkJCQkJCQkgICByZXNudWxsKTsKKwl9CisKKwlyZXR1cm4gRXhlY0V2YWxK c29uRXhwclN1YnRyYW5zKEV4ZWNFdmFsSnNvbkV4cHJDb2VyY2lvbiwgb3AsIGVjb250ZXh0 LAorCQkJCQkJCQkJcmVzLCByZXNudWxsLCBlc3RhdGUsIGVycm9yLAorCQkJCQkJCQkJY3h0 LT5jb2VyY2lvbkluU3VidHJhbnMpOworfQorCitib29sCitFeGVjRXZhbEpzb25OZWVkc1N1 YlRyYW5zYWN0aW9uKEpzb25FeHByICpqc2V4cHIsCisJCQkJCQkJCXN0cnVjdCBKc29uQ29l cmNpb25zU3RhdGUgKmNvZXJjaW9ucykKK3sKKwlpZiAoanNleHByLT5vbl9lcnJvci0+YnR5 cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGpz ZXhwci0+b3AgPT0gSVNfSlNPTl9FWElTVFMgJiYgIWpzZXhwci0+cmVzdWx0X2NvZXJjaW9u KQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoIWNvZXJjaW9ucykKKwkJcmV0dXJuIHRydWU7 CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjRXZhbEpz b24KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY0V2YWxKc29uKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlF eGVjRXZhbEpzb25FeHByQ29udGV4dCBjeHQ7CisJSnNvbkV4cHIgICAqamV4cHIgPSBvcC0+ ZC5qc29uZXhwci5qc2V4cHI7CisJRGF0dW0JCWl0ZW07CisJRGF0dW0JCXJlcyA9IChEYXR1 bSkgMDsKKwlKc29uUGF0aCAgICpwYXRoOworCUxpc3RDZWxsICAgKmxjOworCWJvb2wJCWVy cm9yID0gZmFsc2U7CisJYm9vbAkJbmVlZFN1YnRyYW5zOworCWJvb2wJCXRocm93RXJyb3Jz ID0gamV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOworCisJ Km9wLT5yZXNudWxsID0gdHJ1ZTsJCS8qIHVudGlsIHdlIGdldCBhIHJlc3VsdCAqLworCSpv cC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisKKwlpZiAob3AtPmQuanNvbmV4cHIuZm9ybWF0 dGVkX2V4cHItPmlzbnVsbCB8fCBvcC0+ZC5qc29uZXhwci5wYXRoc3BlYy0+aXNudWxsKQor CXsKKwkJLyogZXhlY3V0ZSBkb21haW4gY2hlY2tzIGZvciBOVUxMcyAqLworCQkodm9pZCkg RXhlY0V2YWxKc29uRXhwckNvZXJjaW9uKG9wLCBlY29udGV4dCwgcmVzLCBvcC0+cmVzbnVs bCwKKwkJCQkJCQkJCQlOVUxMLCBOVUxMKTsKKworCQlBc3NlcnQoKm9wLT5yZXNudWxsKTsK KwkJcmV0dXJuOworCX0KKworCWl0ZW0gPSBvcC0+ZC5qc29uZXhwci5mb3JtYXR0ZWRfZXhw ci0+dmFsdWU7CisJcGF0aCA9IERhdHVtR2V0SnNvblBhdGhQKG9wLT5kLmpzb25leHByLnBh dGhzcGVjLT52YWx1ZSk7CisKKwkvKiByZXNldCBKU09OIHBhdGggdmFyaWFibGUgY29udGV4 dHMgKi8KKwlmb3JlYWNoKGxjLCBvcC0+ZC5qc29uZXhwci5hcmdzKQorCXsKKwkJSnNvblBh dGhWYXJpYWJsZUV2YWxDb250ZXh0ICp2YXIgPSBsZmlyc3QobGMpOworCisJCXZhci0+ZWNv bnRleHQgPSBlY29udGV4dDsKKwkJdmFyLT5ldmFsdWF0ZWQgPSBmYWxzZTsKKwl9CisKKwlu ZWVkU3VidHJhbnMgPSBFeGVjRXZhbEpzb25OZWVkc1N1YlRyYW5zYWN0aW9uKGpleHByLCAm b3AtPmQuanNvbmV4cHIuY29lcmNpb25zKTsKKworCWN4dC5wYXRoID0gcGF0aDsKKwljeHQu ZXJyb3IgPSB0aHJvd0Vycm9ycyA/IE5VTEwgOiAmZXJyb3I7CisJY3h0LmNvZXJjaW9uSW5T dWJ0cmFucyA9ICFuZWVkU3VidHJhbnMgJiYgIXRocm93RXJyb3JzOworCUFzc2VydCghbmVl ZFN1YnRyYW5zIHx8IGN4dC5lcnJvcik7CisKKwlyZXMgPSBFeGVjRXZhbEpzb25FeHByU3Vi dHJhbnMoRXhlY0V2YWxKc29uRXhwciwgb3AsIGVjb250ZXh0LCBpdGVtLAorCQkJCQkJCQkg ICBvcC0+cmVzbnVsbCwgJmN4dCwgY3h0LmVycm9yLAorCQkJCQkJCQkgICBuZWVkU3VidHJh bnMpOworCisJaWYgKGVycm9yKQorCXsKKwkJLyogRXhlY3V0ZSBPTiBFUlJPUiBiZWhhdmlv ciAqLworCQlyZXMgPSBFeGVjRXZhbEpzb25CZWhhdmlvcihlY29udGV4dCwgamV4cHItPm9u X2Vycm9yLAorCQkJCQkJCQkgICBvcC0+ZC5qc29uZXhwci5kZWZhdWx0X29uX2Vycm9yLAor CQkJCQkJCQkgICBvcC0+cmVzbnVsbCk7CisKKwkJLyogcmVzdWx0IGlzIGFscmVhZHkgY29l cmNlZCBpbiBERUZBVUxUIGJlaGF2aW9yIGNhc2UgKi8KKwkJaWYgKGpleHByLT5vbl9lcnJv ci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQkJcmVzID0gRXhlY0V2YWxK c29uRXhwckNvZXJjaW9uKG9wLCBlY29udGV4dCwgcmVzLAorCQkJCQkJCQkJCSAgIG9wLT5y ZXNudWxsLAorCQkJCQkJCQkJCSAgIE5VTEwsIE5VTEwpOworCX0KKworCSpvcC0+cmVzdmFs dWUgPSByZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0 X2V4cHIuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IGJk ODZmNTQ2ZDcuLjljOGYzNDFkOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZt L2xsdm1qaXRfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhw ci5jCkBAIC0yMzQ4LDYgKzIzNDgsMjQgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRl ICpzdGF0ZSkKIAkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOwogCQkJ CWJyZWFrOwogCisJCQljYXNlIEVFT1BfSlNPTl9DT05TVFJVQ1RPUjoKKwkJCQlidWlsZF9F dmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxKc29uQ29uc3RydWN0b3IiLAorCQkJCQkJCQl2 X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7CisJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nb b3BubyArIDFdKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBFRU9QX0lTX0pTT046CisJCQkJ YnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsSnNvbklzUHJlZGljYXRlIiwKKwkJ CQkJCQkJdl9zdGF0ZSwgb3ApOworCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8g KyAxXSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRUVPUF9KU09ORVhQUjoKKwkJCQlidWls ZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxKc29uIiwKKwkJCQkJCQkJdl9zdGF0ZSwg b3AsIHZfZWNvbnRleHQpOworCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAx XSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgRUVPUF9MQVNUOgogCQkJCUFzc2VydChmYWxz ZSk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X3R5cGVzLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKaW5k ZXggZDUxOTFjZjAyYi4uYjJiZGE4Njg4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0 L2xsdm0vbGx2bWppdF90eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1q aXRfdHlwZXMuYwpAQCAtMTMxLDYgKzEzMSw5IEBAIHZvaWQJICAgKnJlZmVyZW5jZWRfZnVu Y3Rpb25zW10gPQogCUV4ZWNFdmFsU3lzVmFyLAogCUV4ZWNFdmFsV2hvbGVSb3dWYXIsCiAJ RXhlY0V2YWxYbWxFeHByLAorCUV4ZWNFdmFsSnNvbkNvbnN0cnVjdG9yLAorCUV4ZWNFdmFs SnNvbklzUHJlZGljYXRlLAorCUV4ZWNFdmFsSnNvbiwKIAlNYWtlRXhwYW5kZWRPYmplY3RS ZWFkT25seUludGVybmFsLAogCXNsb3RfZ2V0bWlzc2luZ2F0dHJzLAogCXNsb3RfZ2V0c29t ZWF0dHJzX2ludCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggOTBiNWRhNTFjOS4uOGNk Y2Y1ZDEzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTIyOTgsNiArMjI5OCwzNzMg QEAgX2NvcHlPbkNvbmZsaWN0RXhwcihjb25zdCBPbkNvbmZsaWN0RXhwciAqZnJvbSkKIAly ZXR1cm4gbmV3bm9kZTsKIH0KIAorCisvKgorICogX2NvcHlKc29uRm9ybWF0CisgKi8KK3N0 YXRpYyBKc29uRm9ybWF0ICoKK19jb3B5SnNvbkZvcm1hdChjb25zdCBKc29uRm9ybWF0ICpm cm9tKQoreworCUpzb25Gb3JtYXQgKm5ld25vZGUgPSBtYWtlTm9kZShKc29uRm9ybWF0KTsK KworCUNPUFlfU0NBTEFSX0ZJRUxEKGZvcm1hdF90eXBlKTsKKwlDT1BZX1NDQUxBUl9GSUVM RChlbmNvZGluZyk7CisJQ09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1 cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvblJldHVybmluZworICovCitzdGF0 aWMgSnNvblJldHVybmluZyAqCitfY29weUpzb25SZXR1cm5pbmcoY29uc3QgSnNvblJldHVy bmluZyAqZnJvbSkKK3sKKwlKc29uUmV0dXJuaW5nICpuZXdub2RlID0gbWFrZU5vZGUoSnNv blJldHVybmluZyk7CisKKwlDT1BZX05PREVfRklFTEQoZm9ybWF0KTsKKwlDT1BZX1NDQUxB Ul9GSUVMRCh0eXBpZCk7CisJQ09QWV9TQ0FMQVJfRklFTEQodHlwbW9kKTsKKworCXJldHVy biBuZXdub2RlOworfQorCisvKgorICogX2NvcHlKc29uVmFsdWVFeHByCisgKi8KK3N0YXRp YyBKc29uVmFsdWVFeHByICoKK19jb3B5SnNvblZhbHVlRXhwcihjb25zdCBKc29uVmFsdWVF eHByICpmcm9tKQoreworCUpzb25WYWx1ZUV4cHIgICpuZXdub2RlID0gbWFrZU5vZGUoSnNv blZhbHVlRXhwcik7CisKKwlDT1BZX05PREVfRklFTEQocmF3X2V4cHIpOworCUNPUFlfTk9E RV9GSUVMRChmb3JtYXR0ZWRfZXhwcik7CisJQ09QWV9OT0RFX0ZJRUxEKGZvcm1hdCk7CisK KwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvblNjYWxhckV4cHIKKyAq Lworc3RhdGljIEpzb25TY2FsYXJFeHByICoKK19jb3B5SnNvblNjYWxhckV4cHIoY29uc3Qg SnNvblNjYWxhckV4cHIgKmZyb20pCit7CisJSnNvblNjYWxhckV4cHIgKm5ld25vZGUgPSBt YWtlTm9kZShKc29uU2NhbGFyRXhwcik7CisKKwlDT1BZX05PREVfRklFTEQoZXhwcik7CisJ Q09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30K KworLyoKKyAqIF9jb3B5SnNvblNlcmlhbGl6ZUV4cHIKKyAqLworc3RhdGljIEpzb25TZXJp YWxpemVFeHByICoKK19jb3B5SnNvblNlcmlhbGl6ZUV4cHIoY29uc3QgSnNvblNlcmlhbGl6 ZUV4cHIgKmZyb20pCit7CisJSnNvblNlcmlhbGl6ZUV4cHIgKm5ld25vZGUgPSBtYWtlTm9k ZShKc29uU2VyaWFsaXplRXhwcik7CisKKwlDT1BZX05PREVfRklFTEQoZXhwcik7CisJQ09Q WV9OT0RFX0ZJRUxEKG91dHB1dCk7CisJQ09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7 CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvbkNvbnN0cnVjdG9y RXhwcgorICovCitzdGF0aWMgSnNvbkNvbnN0cnVjdG9yRXhwciAqCitfY29weUpzb25Db25z dHJ1Y3RvckV4cHIoY29uc3QgSnNvbkNvbnN0cnVjdG9yRXhwciAqZnJvbSkKK3sKKwlKc29u Q29uc3RydWN0b3JFeHByICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbkNvbnN0cnVjdG9yRXhw cik7CisKKwlDT1BZX1NDQUxBUl9GSUVMRCh0eXBlKTsKKwlDT1BZX05PREVfRklFTEQoYXJn cyk7CisJQ09QWV9OT0RFX0ZJRUxEKGZ1bmMpOworCUNPUFlfTk9ERV9GSUVMRChjb2VyY2lv bik7CisJQ09QWV9OT0RFX0ZJRUxEKHJldHVybmluZyk7CisJQ09QWV9TQ0FMQVJfRklFTEQo YWJzZW50X29uX251bGwpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHVuaXF1ZSk7CisJQ09QWV9M T0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoK KyAqIF9jb3B5SnNvbktleVZhbHVlCisgKi8KK3N0YXRpYyBKc29uS2V5VmFsdWUgKgorX2Nv cHlKc29uS2V5VmFsdWUoY29uc3QgSnNvbktleVZhbHVlICpmcm9tKQoreworCUpzb25LZXlW YWx1ZSAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25LZXlWYWx1ZSk7CisKKwlDT1BZX05PREVf RklFTEQoa2V5KTsKKwlDT1BZX05PREVfRklFTEQodmFsdWUpOworCisJcmV0dXJuIG5ld25v ZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25PYmplY3RDb25zdHJ1Y3RvcgorICovCitzdGF0 aWMgSnNvbk9iamVjdENvbnN0cnVjdG9yICoKK19jb3B5SnNvbk9iamVjdENvbnN0cnVjdG9y KGNvbnN0IEpzb25PYmplY3RDb25zdHJ1Y3RvciAqZnJvbSkKK3sKKwlKc29uT2JqZWN0Q29u c3RydWN0b3IgKm5ld25vZGUgPSBtYWtlTm9kZShKc29uT2JqZWN0Q29uc3RydWN0b3IpOwor CisJQ09QWV9OT0RFX0ZJRUxEKGV4cHJzKTsKKwlDT1BZX05PREVfRklFTEQob3V0cHV0KTsK KwlDT1BZX1NDQUxBUl9GSUVMRChhYnNlbnRfb25fbnVsbCk7CisJQ09QWV9TQ0FMQVJfRklF TEQodW5pcXVlKTsKKwlDT1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVy biBuZXdub2RlOworfQorCisvKgorICogX2NvcHlKc29uQWdnQ29uc3RydWN0b3IKKyAqLwor c3RhdGljIEpzb25BZ2dDb25zdHJ1Y3RvciAqCitfY29weUpzb25BZ2dDb25zdHJ1Y3Rvcihj b25zdCBKc29uQWdnQ29uc3RydWN0b3IgKmZyb20pCit7CisJSnNvbkFnZ0NvbnN0cnVjdG9y ICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbkFnZ0NvbnN0cnVjdG9yKTsKKworCUNPUFlfTk9E RV9GSUVMRChvdXRwdXQpOworCUNPUFlfTk9ERV9GSUVMRChhZ2dfZmlsdGVyKTsKKwlDT1BZ X05PREVfRklFTEQoYWdnX29yZGVyKTsKKwlDT1BZX05PREVfRklFTEQob3Zlcik7CisJQ09Q WV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwor LyoKKyAqIF9jb3B5SnNvbk9iamVjdEFnZworICovCitzdGF0aWMgSnNvbk9iamVjdEFnZyAq CitfY29weUpzb25PYmplY3RBZ2coY29uc3QgSnNvbk9iamVjdEFnZyAqZnJvbSkKK3sKKwlK c29uT2JqZWN0QWdnICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbk9iamVjdEFnZyk7CisKKwlD T1BZX05PREVfRklFTEQoY29uc3RydWN0b3IpOworCUNPUFlfTk9ERV9GSUVMRChhcmcpOwor CUNPUFlfU0NBTEFSX0ZJRUxEKGFic2VudF9vbl9udWxsKTsKKwlDT1BZX1NDQUxBUl9GSUVM RCh1bmlxdWUpOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25P dXRwdXQKKyAqLworc3RhdGljIEpzb25PdXRwdXQgKgorX2NvcHlKc29uT3V0cHV0KGNvbnN0 IEpzb25PdXRwdXQgKmZyb20pCit7CisJSnNvbk91dHB1dAkgICAqbmV3bm9kZSA9IG1ha2VO b2RlKEpzb25PdXRwdXQpOworCisJQ09QWV9OT0RFX0ZJRUxEKHR5cGVOYW1lKTsKKwlDT1BZ X05PREVfRklFTEQocmV0dXJuaW5nKTsKKworCXJldHVybiBuZXdub2RlOworfQorCisvKgor ICogX2NvcHlKc29uQXJyYXlDb25zdHJ1Y3RvcgorICovCitzdGF0aWMgSnNvbkFycmF5Q29u c3RydWN0b3IgKgorX2NvcHlKc29uQXJyYXlDb25zdHJ1Y3Rvcihjb25zdCBKc29uQXJyYXlD b25zdHJ1Y3RvciAqZnJvbSkKK3sKKwlKc29uQXJyYXlDb25zdHJ1Y3RvciAqbmV3bm9kZSA9 IG1ha2VOb2RlKEpzb25BcnJheUNvbnN0cnVjdG9yKTsKKworCUNPUFlfTk9ERV9GSUVMRChl eHBycyk7CisJQ09QWV9OT0RFX0ZJRUxEKG91dHB1dCk7CisJQ09QWV9TQ0FMQVJfRklFTEQo YWJzZW50X29uX251bGwpOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJ cmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25BcnJheUFnZworICovCitz dGF0aWMgSnNvbkFycmF5QWdnICoKK19jb3B5SnNvbkFycmF5QWdnKGNvbnN0IEpzb25BcnJh eUFnZyAqZnJvbSkKK3sKKwlKc29uQXJyYXlBZ2cgKm5ld25vZGUgPSBtYWtlTm9kZShKc29u QXJyYXlBZ2cpOworCisJQ09QWV9OT0RFX0ZJRUxEKGNvbnN0cnVjdG9yKTsKKwlDT1BZX05P REVfRklFTEQoYXJnKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChhYnNlbnRfb25fbnVsbCk7CisK KwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvbkFycmF5UXVlcnlDb25z dHJ1Y3RvcgorICovCitzdGF0aWMgSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvciAqCitfY29w eUpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IoY29uc3QgSnNvbkFycmF5UXVlcnlDb25zdHJ1 Y3RvciAqZnJvbSkKK3sKKwlKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yICpuZXdub2RlID0g bWFrZU5vZGUoSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3Rvcik7CisKKwlDT1BZX05PREVfRklF TEQocXVlcnkpOworCUNPUFlfTk9ERV9GSUVMRChvdXRwdXQpOworCUNPUFlfTk9ERV9GSUVM RChmb3JtYXQpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGFic2VudF9vbl9udWxsKTsKKwlDT1BZ X0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiBuZXdub2RlOworfQorCisv KgorICogX2NvcHlKc29uRXhwcgorICovCitzdGF0aWMgSnNvbkV4cHIgKgorX2NvcHlKc29u RXhwcihjb25zdCBKc29uRXhwciAqZnJvbSkKK3sKKwlKc29uRXhwciAgICAqbmV3bm9kZSA9 IG1ha2VOb2RlKEpzb25FeHByKTsKKworCUNPUFlfU0NBTEFSX0ZJRUxEKG9wKTsKKwlDT1BZ X05PREVfRklFTEQoZm9ybWF0dGVkX2V4cHIpOworCUNPUFlfTk9ERV9GSUVMRChyZXN1bHRf Y29lcmNpb24pOworCUNPUFlfTk9ERV9GSUVMRChmb3JtYXQpOworCUNPUFlfTk9ERV9GSUVM RChwYXRoX3NwZWMpOworCUNPUFlfTk9ERV9GSUVMRChwYXNzaW5nX3ZhbHVlcyk7CisJQ09Q WV9OT0RFX0ZJRUxEKHBhc3NpbmdfbmFtZXMpOworCUNPUFlfTk9ERV9GSUVMRChyZXR1cm5p bmcpOworCUNPUFlfTk9ERV9GSUVMRChvbl9lcnJvcik7CisJQ09QWV9OT0RFX0ZJRUxEKG9u X2VtcHR5KTsKKwlDT1BZX05PREVfRklFTEQoY29lcmNpb25zKTsKKwlDT1BZX1NDQUxBUl9G SUVMRCh3cmFwcGVyKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChvbWl0X3F1b3Rlcyk7CisJQ09Q WV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwor LyoKKyAqIF9jb3B5SnNvbkNvZXJjaW9uCisgKi8KK3N0YXRpYyBKc29uQ29lcmNpb24gKgor X2NvcHlKc29uQ29lcmNpb24oY29uc3QgSnNvbkNvZXJjaW9uICpmcm9tKQoreworCUpzb25D b2VyY2lvbiAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25Db2VyY2lvbik7CisKKwlDT1BZX05P REVfRklFTEQoZXhwcik7CisJQ09QWV9TQ0FMQVJfRklFTEQodmlhX3BvcHVsYXRlKTsKKwlD T1BZX1NDQUxBUl9GSUVMRCh2aWFfaW8pOworCUNPUFlfU0NBTEFSX0ZJRUxEKGNvbGxhdGlv bik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvbkl0ZW1Db2Vy Y2lvbnMKKyAqLworc3RhdGljIEpzb25JdGVtQ29lcmNpb25zICoKK19jb3B5SnNvbkl0ZW1D b2VyY2lvbnMoY29uc3QgSnNvbkl0ZW1Db2VyY2lvbnMgKmZyb20pCit7CisJSnNvbkl0ZW1D b2VyY2lvbnMgKm5ld25vZGUgPSBtYWtlTm9kZShKc29uSXRlbUNvZXJjaW9ucyk7CisKKwlD T1BZX05PREVfRklFTEQobnVsbCk7CisJQ09QWV9OT0RFX0ZJRUxEKHN0cmluZyk7CisJQ09Q WV9OT0RFX0ZJRUxEKG51bWVyaWMpOworCUNPUFlfTk9ERV9GSUVMRChib29sZWFuKTsKKwlD T1BZX05PREVfRklFTEQoZGF0ZSk7CisJQ09QWV9OT0RFX0ZJRUxEKHRpbWUpOworCUNPUFlf Tk9ERV9GSUVMRCh0aW1ldHopOworCUNPUFlfTk9ERV9GSUVMRCh0aW1lc3RhbXApOworCUNP UFlfTk9ERV9GSUVMRCh0aW1lc3RhbXB0eik7CisJQ09QWV9OT0RFX0ZJRUxEKGNvbXBvc2l0 ZSk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvbkZ1bmNFeHBy CisgKi8KK3N0YXRpYyBKc29uRnVuY0V4cHIgKgorX2NvcHlKc29uRnVuY0V4cHIoY29uc3Qg SnNvbkZ1bmNFeHByICpmcm9tKQoreworCUpzb25GdW5jRXhwciAgICpuZXdub2RlID0gbWFr ZU5vZGUoSnNvbkZ1bmNFeHByKTsKKworCUNPUFlfU0NBTEFSX0ZJRUxEKG9wKTsKKwlDT1BZ X05PREVfRklFTEQoY29tbW9uKTsKKwlDT1BZX05PREVfRklFTEQob3V0cHV0KTsKKwlDT1BZ X05PREVfRklFTEQob25fZW1wdHkpOworCUNPUFlfTk9ERV9GSUVMRChvbl9lcnJvcik7CisJ Q09QWV9TQ0FMQVJfRklFTEQod3JhcHBlcik7CisJQ09QWV9TQ0FMQVJfRklFTEQob21pdF9x dW90ZXMpOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5l d25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25Jc1ByZWRpY2F0ZQorICovCitzdGF0aWMg SnNvbklzUHJlZGljYXRlICoKK19jb3B5SnNvbklzUHJlZGljYXRlKGNvbnN0IEpzb25Jc1By ZWRpY2F0ZSAqZnJvbSkKK3sKKwlKc29uSXNQcmVkaWNhdGUgKm5ld25vZGUgPSBtYWtlTm9k ZShKc29uSXNQcmVkaWNhdGUpOworCisJQ09QWV9OT0RFX0ZJRUxEKGV4cHIpOworCUNPUFlf U0NBTEFSX0ZJRUxEKGZvcm1hdCk7CisJQ09QWV9TQ0FMQVJfRklFTEQodmFsdWVfdHlwZSk7 CisJQ09QWV9TQ0FMQVJfRklFTEQodW5pcXVlX2tleXMpOworCUNPUFlfTE9DQVRJT05fRklF TEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpz b25CZWhhdmlvcgorICovCitzdGF0aWMgSnNvbkJlaGF2aW9yICoKK19jb3B5SnNvbkJlaGF2 aW9yKGNvbnN0IEpzb25CZWhhdmlvciAqZnJvbSkKK3sKKwlKc29uQmVoYXZpb3IgICAqbmV3 bm9kZSA9IG1ha2VOb2RlKEpzb25CZWhhdmlvcik7CisKKwlDT1BZX1NDQUxBUl9GSUVMRChi dHlwZSk7CisJQ09QWV9OT0RFX0ZJRUxEKGRlZmF1bHRfZXhwcik7CisKKwlyZXR1cm4gbmV3 bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvbkNvbW1vbgorICovCitzdGF0aWMgSnNvbkNv bW1vbiAqCitfY29weUpzb25Db21tb24oY29uc3QgSnNvbkNvbW1vbiAqZnJvbSkKK3sKKwlK c29uQ29tbW9uCSAgICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbkNvbW1vbik7CisKKwlDT1BZ X05PREVfRklFTEQoZXhwcik7CisJQ09QWV9OT0RFX0ZJRUxEKHBhdGhzcGVjKTsKKwlDT1BZ X1NUUklOR19GSUVMRChwYXRobmFtZSk7CisJQ09QWV9OT0RFX0ZJRUxEKHBhc3NpbmcpOwor CUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9 CisKKy8qCisgKiBfY29weUpzb25Bcmd1bWVudAorICovCitzdGF0aWMgSnNvbkFyZ3VtZW50 ICoKK19jb3B5SnNvbkFyZ3VtZW50KGNvbnN0IEpzb25Bcmd1bWVudCAqZnJvbSkKK3sKKwlK c29uQXJndW1lbnQgICAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25Bcmd1bWVudCk7CisKKwlD T1BZX05PREVfRklFTEQodmFsKTsKKwlDT1BZX1NUUklOR19GSUVMRChuYW1lKTsKKworCXJl dHVybiBuZXdub2RlOworfQorCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgkJCQkJCXBhdGhub2Rlcy5o IGNvcHkgZnVuY3Rpb25zCiAgKgpAQCAtNTMzNyw2ICs1NzA0LDcyIEBAIGNvcHlPYmplY3RJ bXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2UgVF9PbkNvbmZsaWN0RXhwcjoKIAkJCXJl dHZhbCA9IF9jb3B5T25Db25mbGljdEV4cHIoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBU X0pzb25Gb3JtYXQ6CisJCQlyZXR2YWwgPSBfY29weUpzb25Gb3JtYXQoZnJvbSk7CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25SZXR1cm5pbmc6CisJCQlyZXR2YWwgPSBfY29weUpzb25S ZXR1cm5pbmcoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25WYWx1ZUV4cHI6CisJ CQlyZXR2YWwgPSBfY29weUpzb25WYWx1ZUV4cHIoZnJvbSk7CisJCQlicmVhazsKKwkJY2Fz ZSBUX0pzb25TY2FsYXJFeHByOgorCQkJcmV0dmFsID0gX2NvcHlKc29uU2NhbGFyRXhwcihm cm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvblNlcmlhbGl6ZUV4cHI6CisJCQlyZXR2 YWwgPSBfY29weUpzb25TZXJpYWxpemVFeHByKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2Ug VF9Kc29uS2V5VmFsdWU6CisJCQlyZXR2YWwgPSBfY29weUpzb25LZXlWYWx1ZShmcm9tKTsK KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJCXJldHZhbCA9 IF9jb3B5SnNvbkNvbnN0cnVjdG9yRXhwcihmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRf SnNvbk9iamVjdENvbnN0cnVjdG9yOgorCQkJcmV0dmFsID0gX2NvcHlKc29uT2JqZWN0Q29u c3RydWN0b3IoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BZ2dDb25zdHJ1Y3Rv cjoKKwkJCXJldHZhbCA9IF9jb3B5SnNvbkFnZ0NvbnN0cnVjdG9yKGZyb20pOworCQkJYnJl YWs7CisJCWNhc2UgVF9Kc29uT2JqZWN0QWdnOgorCQkJcmV0dmFsID0gX2NvcHlKc29uT2Jq ZWN0QWdnKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uT3V0cHV0OgorCQkJcmV0 dmFsID0gX2NvcHlKc29uT3V0cHV0KGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29u QXJyYXlDb25zdHJ1Y3RvcjoKKwkJCXJldHZhbCA9IF9jb3B5SnNvbkFycmF5Q29uc3RydWN0 b3IoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BcnJheVF1ZXJ5Q29uc3RydWN0 b3I6CisJCQlyZXR2YWwgPSBfY29weUpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IoZnJvbSk7 CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BcnJheUFnZzoKKwkJCXJldHZhbCA9IF9jb3B5 SnNvbkFycmF5QWdnKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXNQcmVkaWNh dGU6CisJCQlyZXR2YWwgPSBfY29weUpzb25Jc1ByZWRpY2F0ZShmcm9tKTsKKwkJCWJyZWFr OworCQljYXNlIFRfSnNvbkZ1bmNFeHByOgorCQkJcmV0dmFsID0gX2NvcHlKc29uRnVuY0V4 cHIoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJcmV0dmFsID0g X2NvcHlKc29uRXhwcihmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvbW1vbjoK KwkJCXJldHZhbCA9IF9jb3B5SnNvbkNvbW1vbihmcm9tKTsKKwkJCWJyZWFrOworCQljYXNl IFRfSnNvbkJlaGF2aW9yOgorCQkJcmV0dmFsID0gX2NvcHlKc29uQmVoYXZpb3IoZnJvbSk7 CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Bcmd1bWVudDoKKwkJCXJldHZhbCA9IF9jb3B5 SnNvbkFyZ3VtZW50KGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246 CisJCQlyZXR2YWwgPSBfY29weUpzb25Db2VyY2lvbihmcm9tKTsKKwkJCWJyZWFrOworCQlj YXNlIFRfSnNvbkl0ZW1Db2VyY2lvbnM6CisJCQlyZXR2YWwgPSBfY29weUpzb25JdGVtQ29l cmNpb25zKGZyb20pOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBSRUxBVElPTiBOT0RF UwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IDA2MzQ1ZGEzYmEuLjNkNzdjYWNlY2Ig MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTg0MSw2ICs4NDEsMjQyIEBAIF9lcXVh bE9uQ29uZmxpY3RFeHByKGNvbnN0IE9uQ29uZmxpY3RFeHByICphLCBjb25zdCBPbkNvbmZs aWN0RXhwciAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbEpz b25Gb3JtYXQoY29uc3QgSnNvbkZvcm1hdCAqYSwgY29uc3QgSnNvbkZvcm1hdCAqYikKK3sK KwlDT01QQVJFX1NDQUxBUl9GSUVMRChmb3JtYXRfdHlwZSk7CisJQ09NUEFSRV9TQ0FMQVJf RklFTEQoZW5jb2RpbmcpOworCUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwor CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uUmV0dXJuaW5n KGNvbnN0IEpzb25SZXR1cm5pbmcgKmEsIGNvbnN0IEpzb25SZXR1cm5pbmcgKmIpCit7CisJ Q09NUEFSRV9OT0RFX0ZJRUxEKGZvcm1hdCk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQodHlw aWQpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHR5cG1vZCk7CisKKwlyZXR1cm4gdHJ1ZTsK K30KKworc3RhdGljIGJvb2wKK19lcXVhbEpzb25WYWx1ZUV4cHIoY29uc3QgSnNvblZhbHVl RXhwciAqYSwgY29uc3QgSnNvblZhbHVlRXhwciAqYikKK3sKKwlDT01QQVJFX05PREVfRklF TEQocmF3X2V4cHIpOworCUNPTVBBUkVfTk9ERV9GSUVMRChmb3JtYXR0ZWRfZXhwcik7CisJ Q09NUEFSRV9OT0RFX0ZJRUxEKGZvcm1hdCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3Rh dGljIGJvb2wKK19lcXVhbEpzb25TY2FsYXJFeHByKGNvbnN0IEpzb25TY2FsYXJFeHByICph LCBjb25zdCBKc29uU2NhbGFyRXhwciAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQoZXhw cik7CisJQ09NUEFSRV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKworc3RhdGljIGJvb2wKK19lcXVhbEpzb25TZXJpYWxpemVFeHByKGNvbnN0IEpz b25TZXJpYWxpemVFeHByICphLCBjb25zdCBKc29uU2VyaWFsaXplRXhwciAqYikKK3sKKwlD T01QQVJFX05PREVfRklFTEQoZXhwcik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKG91dHB1dCk7 CisJQ09NUEFSRV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gdHJ1ZTsK K30KKworc3RhdGljIGJvb2wKK19lcXVhbEpzb25Db25zdHJ1Y3RvckV4cHIoY29uc3QgSnNv bkNvbnN0cnVjdG9yRXhwciAqYSwgY29uc3QgSnNvbkNvbnN0cnVjdG9yRXhwciAqYikKK3sK KwlDT01QQVJFX1NDQUxBUl9GSUVMRCh0eXBlKTsKKwlDT01QQVJFX05PREVfRklFTEQoYXJn cyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGZ1bmMpOworCUNPTVBBUkVfTk9ERV9GSUVMRChj b2VyY2lvbik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHJldHVybmluZyk7CisJQ09NUEFSRV9T Q0FMQVJfRklFTEQoYWJzZW50X29uX251bGwpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHVu aXF1ZSk7CisJQ09NUEFSRV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4g dHJ1ZTsKK30KKworc3RhdGljIGJvb2wKK19lcXVhbEpzb25LZXlWYWx1ZShjb25zdCBKc29u S2V5VmFsdWUgKmEsIGNvbnN0IEpzb25LZXlWYWx1ZSAqYikKK3sKKwlDT01QQVJFX05PREVf RklFTEQoa2V5KTsKKwlDT01QQVJFX05PREVfRklFTEQodmFsdWUpOworCisJcmV0dXJuIHRy dWU7Cit9CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uT2JqZWN0Q29uc3RydWN0b3IoY29u c3QgSnNvbk9iamVjdENvbnN0cnVjdG9yICphLAorCQkJCQkJCWNvbnN0IEpzb25PYmplY3RD b25zdHJ1Y3RvciAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQoZXhwcnMpOworCUNPTVBB UkVfTk9ERV9GSUVMRChvdXRwdXQpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGFic2VudF9v bl9udWxsKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRCh1bmlxdWUpOworCUNPTVBBUkVfTE9D QVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBi b29sCitfZXF1YWxKc29uQWdnQ29uc3RydWN0b3IoY29uc3QgSnNvbkFnZ0NvbnN0cnVjdG9y ICphLAorCQkJCQkJIGNvbnN0IEpzb25BZ2dDb25zdHJ1Y3RvciAqYikKK3sKKwlDT01QQVJF X05PREVfRklFTEQob3V0cHV0KTsKKwlDT01QQVJFX05PREVfRklFTEQoYWdnX2ZpbHRlcik7 CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGFnZ19vcmRlcik7CisJQ09NUEFSRV9OT0RFX0ZJRUxE KG92ZXIpOworCUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJu IHRydWU7Cit9CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uT2JqZWN0QWdnKGNvbnN0IEpz b25PYmplY3RBZ2cgKmEsIGNvbnN0IEpzb25PYmplY3RBZ2cgKmIpCit7CisJQ09NUEFSRV9O T0RFX0ZJRUxEKGNvbnN0cnVjdG9yKTsKKwlDT01QQVJFX05PREVfRklFTEQoYXJnKTsKKwlD T01QQVJFX1NDQUxBUl9GSUVMRChhYnNlbnRfb25fbnVsbCk7CisJQ09NUEFSRV9TQ0FMQVJf RklFTEQodW5pcXVlKTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorX2Vx dWFsSnNvbk91dHB1dChjb25zdCBKc29uT3V0cHV0ICphLCBjb25zdCBKc29uT3V0cHV0ICpi KQoreworCUNPTVBBUkVfTk9ERV9GSUVMRCh0eXBlTmFtZSk7CisJQ09NUEFSRV9OT0RFX0ZJ RUxEKHJldHVybmluZyk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wKK19l cXVhbEpzb25BcnJheUNvbnN0cnVjdG9yKGNvbnN0IEpzb25BcnJheUNvbnN0cnVjdG9yICph LAorCQkJCQkJICAgY29uc3QgSnNvbkFycmF5Q29uc3RydWN0b3IgKmIpCit7CisJQ09NUEFS RV9OT0RFX0ZJRUxEKGV4cHJzKTsKKwlDT01QQVJFX05PREVfRklFTEQob3V0cHV0KTsKKwlD T01QQVJFX1NDQUxBUl9GSUVMRChhYnNlbnRfb25fbnVsbCk7CisJQ09NUEFSRV9MT0NBVElP Tl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wK K19lcXVhbEpzb25BcnJheUFnZyhjb25zdCBKc29uQXJyYXlBZ2cgKmEsIGNvbnN0IEpzb25B cnJheUFnZyAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQoY29uc3RydWN0b3IpOworCUNP TVBBUkVfTk9ERV9GSUVMRChhcmcpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGFic2VudF9v bl9udWxsKTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorX2VxdWFsSnNv bkFycmF5UXVlcnlDb25zdHJ1Y3Rvcihjb25zdCBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9y ICphLAorCQkJCQkJCQljb25zdCBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yICpiKQorewor CUNPTVBBUkVfTk9ERV9GSUVMRChxdWVyeSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKG91dHB1 dCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGZvcm1hdCk7CisJQ09NUEFSRV9TQ0FMQVJfRklF TEQoYWJzZW50X29uX251bGwpOworCUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24p OworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uSXNQcmVk aWNhdGUoY29uc3QgSnNvbklzUHJlZGljYXRlICphLAorCQkJCQkgIGNvbnN0IEpzb25Jc1By ZWRpY2F0ZSAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQoZXhwcik7CisJQ09NUEFSRV9T Q0FMQVJfRklFTEQodmFsdWVfdHlwZSk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQodW5pcXVl X2tleXMpOworCUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJu IHRydWU7Cit9CisKKy8qCisgKiBfZXF1YWxKc29uQmVoYXZpb3IKKyAqLworc3RhdGljIGJv b2wKK19lcXVhbEpzb25CZWhhdmlvcihjb25zdCBKc29uQmVoYXZpb3IgKmEsIGNvbnN0IEpz b25CZWhhdmlvciAqYikKK3sKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChidHlwZSk7CisJQ09N UEFSRV9OT0RFX0ZJRUxEKGRlZmF1bHRfZXhwcik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwor LyoKKyAqIF9lcXVhbEpzb25FeHByCisgKi8KK3N0YXRpYyBib29sCitfZXF1YWxKc29uRXhw cihjb25zdCBKc29uRXhwciAqYSwgY29uc3QgSnNvbkV4cHIgKmIpCit7CisJQ09NUEFSRV9T Q0FMQVJfRklFTEQob3ApOworCUNPTVBBUkVfTk9ERV9GSUVMRChmb3JtYXR0ZWRfZXhwcik7 CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHJlc3VsdF9jb2VyY2lvbik7CisJQ09NUEFSRV9OT0RF X0ZJRUxEKGZvcm1hdCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHBhdGhfc3BlYyk7CisJQ09N UEFSRV9OT0RFX0ZJRUxEKHBhc3NpbmdfdmFsdWVzKTsKKwlDT01QQVJFX05PREVfRklFTEQo cGFzc2luZ19uYW1lcyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHJldHVybmluZyk7CisJQ09N UEFSRV9OT0RFX0ZJRUxEKG9uX2Vycm9yKTsKKwlDT01QQVJFX05PREVfRklFTEQob25fZW1w dHkpOworCUNPTVBBUkVfTk9ERV9GSUVMRChjb2VyY2lvbnMpOworCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKHdyYXBwZXIpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG9taXRfcXVvdGVzKTsK KwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiB0cnVlOwor fQorCisvKgorICogX2VxdWFsSnNvbkNvZXJjaW9uCisgKi8KK3N0YXRpYyBib29sCitfZXF1 YWxKc29uQ29lcmNpb24oY29uc3QgSnNvbkNvZXJjaW9uICphLCBjb25zdCBKc29uQ29lcmNp b24gKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGV4cHIpOworCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKHZpYV9wb3B1bGF0ZSk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQodmlhX2lvKTsK KwlDT01QQVJFX1NDQUxBUl9GSUVMRChjb2xsYXRpb24pOworCisJcmV0dXJuIHRydWU7Cit9 CisKKy8qCisgKiBfZXF1YWxKc29uSXRlbUNvZXJjaW9ucworICovCitzdGF0aWMgYm9vbAor X2VxdWFsSnNvbkl0ZW1Db2VyY2lvbnMoY29uc3QgSnNvbkl0ZW1Db2VyY2lvbnMgKmEsIGNv bnN0IEpzb25JdGVtQ29lcmNpb25zICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRChudWxs KTsKKwlDT01QQVJFX05PREVfRklFTEQoc3RyaW5nKTsKKwlDT01QQVJFX05PREVfRklFTEQo bnVtZXJpYyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGJvb2xlYW4pOworCUNPTVBBUkVfTk9E RV9GSUVMRChkYXRlKTsKKwlDT01QQVJFX05PREVfRklFTEQodGltZSk7CisJQ09NUEFSRV9O T0RFX0ZJRUxEKHRpbWV0eik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRpbWVzdGFtcCk7CisJ Q09NUEFSRV9OT0RFX0ZJRUxEKHRpbWVzdGFtcHR6KTsKKwlDT01QQVJFX05PREVfRklFTEQo Y29tcG9zaXRlKTsKKworCXJldHVybiB0cnVlOworfQorCiAvKgogICogU3R1ZmYgZnJvbSBw YXRobm9kZXMuaAogICovCkBAIC0zMzQ3LDYgKzM1ODMsMzkgQEAgZXF1YWwoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX0pvaW5FeHByOgogCQkJcmV0dmFsID0g X2VxdWFsSm9pbkV4cHIoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Gb3JtYXQ6 CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uRm9ybWF0KGEsIGIpOworCQkJYnJlYWs7CisJCWNh c2UgVF9Kc29uUmV0dXJuaW5nOgorCQkJcmV0dmFsID0gX2VxdWFsSnNvblJldHVybmluZyhh LCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKKwkJCXJldHZhbCA9 IF9lcXVhbEpzb25WYWx1ZUV4cHIoYSwgYik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25T Y2FsYXJFeHByOgorCQkJcmV0dmFsID0gX2VxdWFsSnNvblNjYWxhckV4cHIoYSwgYik7CisJ CQlicmVhazsKKwkJY2FzZSBUX0pzb25TZXJpYWxpemVFeHByOgorCQkJcmV0dmFsID0gX2Vx dWFsSnNvblNlcmlhbGl6ZUV4cHIoYSwgYik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25D b25zdHJ1Y3RvckV4cHI6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uQ29uc3RydWN0b3JFeHBy KGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CisJCQlyZXR2 YWwgPSBfZXF1YWxKc29uSXNQcmVkaWNhdGUoYSwgYik7CisJCQlicmVhazsKKwkJY2FzZSBU X0pzb25CZWhhdmlvcjoKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25CZWhhdmlvcihhLCBiKTsK KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29u RXhwcihhLCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJcmV0 dmFsID0gX2VxdWFsSnNvbkNvZXJjaW9uKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uSXRlbUNvZXJjaW9uczoKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25JdGVtQ29lcmNpb25z KGEsIGIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBSRUxBVElPTiBOT0RFUwpAQCAt MzkyNCw2ICs0MTkzLDMwIEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIp CiAJCWNhc2UgVF9QdWJsaWNhdGlvblRhYmxlOgogCQkJcmV0dmFsID0gX2VxdWFsUHVibGlj YXRpb25UYWJsZShhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfSnNvbktleVZhbHVlOgor CQkJcmV0dmFsID0gX2VxdWFsSnNvbktleVZhbHVlKGEsIGIpOworCQkJYnJlYWs7CisJCWNh c2UgVF9Kc29uT2JqZWN0Q29uc3RydWN0b3I6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uT2Jq ZWN0Q29uc3RydWN0b3IoYSwgYik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BZ2dDb25z dHJ1Y3RvcjoKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25BZ2dDb25zdHJ1Y3RvcihhLCBiKTsK KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbk9iamVjdEFnZzoKKwkJCXJldHZhbCA9IF9lcXVh bEpzb25PYmplY3RBZ2coYSwgYik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25PdXRwdXQ6 CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uT3V0cHV0KGEsIGIpOworCQkJYnJlYWs7CisJCWNh c2UgVF9Kc29uQXJyYXlDb25zdHJ1Y3RvcjoKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25BcnJh eUNvbnN0cnVjdG9yKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQXJyYXlRdWVy eUNvbnN0cnVjdG9yOgorCQkJcmV0dmFsID0gX2VxdWFsSnNvbkFycmF5UXVlcnlDb25zdHJ1 Y3RvcihhLCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkFycmF5QWdnOgorCQkJcmV0 dmFsID0gX2VxdWFsSnNvbkFycmF5QWdnKGEsIGIpOworCQkJYnJlYWs7CiAKIAkJZGVmYXVs dDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCmluZGV4IDgyMjM5NTYyNWIuLjUxZmFhMDYzNmMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9k ZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvZXJyY29kZXMuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCkBAIC04MTcsMyArODE4LDEwNSBAQCBtYWtlVmFj dXVtUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBPaWQgb2lkLCBMaXN0ICp2YV9jb2xz KQogCXYtPnZhX2NvbHMgPSB2YV9jb2xzOwogCXJldHVybiB2OwogfQorCisvKgorICogbWFr ZUpzb25Gb3JtYXQgLQorICoJICBjcmVhdGVzIGEgSnNvbkZvcm1hdCBub2RlCisgKi8KK0pz b25Gb3JtYXQgKgorbWFrZUpzb25Gb3JtYXQoSnNvbkZvcm1hdFR5cGUgdHlwZSwgSnNvbkVu Y29kaW5nIGVuY29kaW5nLCBpbnQgbG9jYXRpb24pCit7CisJSnNvbkZvcm1hdCAqamYgPSBt YWtlTm9kZShKc29uRm9ybWF0KTsKKworCWpmLT5mb3JtYXRfdHlwZSA9IHR5cGU7CisJamYt PmVuY29kaW5nID0gZW5jb2Rpbmc7CisJamYtPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwly ZXR1cm4gamY7Cit9CisKKy8qCisgKiBtYWtlSnNvblZhbHVlRXhwciAtCisgKgkgIGNyZWF0 ZXMgYSBKc29uVmFsdWVFeHByIG5vZGUKKyAqLworSnNvblZhbHVlRXhwciAqCittYWtlSnNv blZhbHVlRXhwcihFeHByICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQpCit7CisJSnNvblZh bHVlRXhwciAqanZlID0gbWFrZU5vZGUoSnNvblZhbHVlRXhwcik7CisKKwlqdmUtPnJhd19l eHByID0gZXhwcjsKKwlqdmUtPmZvcm1hdHRlZF9leHByID0gTlVMTDsKKwlqdmUtPmZvcm1h dCA9IGZvcm1hdDsKKworCXJldHVybiBqdmU7Cit9CisKKy8qCisgKiBtYWtlSnNvbkJlaGF2 aW9yIC0KKyAqCSAgY3JlYXRlcyBhIEpzb25CZWhhdmlvciBub2RlCisgKi8KK0pzb25CZWhh dmlvciAqCittYWtlSnNvbkJlaGF2aW9yKEpzb25CZWhhdmlvclR5cGUgdHlwZSwgTm9kZSAq ZGVmYXVsdF9leHByKQoreworCUpzb25CZWhhdmlvciAqYmVoYXZpb3IgPSBtYWtlTm9kZShK c29uQmVoYXZpb3IpOworCisJYmVoYXZpb3ItPmJ0eXBlID0gdHlwZTsKKwliZWhhdmlvci0+ ZGVmYXVsdF9leHByID0gZGVmYXVsdF9leHByOworCisJcmV0dXJuIGJlaGF2aW9yOworfQor CisvKgorICogbWFrZUpzb25FbmNvZGluZyAtCisgKgkgIGNvbnZlcnRzIEpTT04gZW5jb2Rp bmcgbmFtZSB0byBlbnVtIEpzb25FbmNvZGluZworICovCitKc29uRW5jb2RpbmcKK21ha2VK c29uRW5jb2RpbmcoY2hhciAqbmFtZSkKK3sKKwlpZiAoIXBnX3N0cmNhc2VjbXAobmFtZSwg InV0ZjgiKSkKKwkJcmV0dXJuIEpTX0VOQ19VVEY4OworCWlmICghcGdfc3RyY2FzZWNtcChu YW1lLCAidXRmMTYiKSkKKwkJcmV0dXJuIEpTX0VOQ19VVEYxNjsKKwlpZiAoIXBnX3N0cmNh c2VjbXAobmFtZSwgInV0ZjMyIikpCisJCXJldHVybiBKU19FTkNfVVRGMzI7CisKKwllcmVw b3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgSlNPTiBlbmNvZGluZzogJXMiLCBuYW1l KSkpOworCisJcmV0dXJuIEpTX0VOQ19ERUZBVUxUOworfQorCisvKgorICogbWFrZUpzb25L ZXlWYWx1ZSAtCisgKgkgIGNyZWF0ZXMgYSBKc29uS2V5VmFsdWUgbm9kZQorICovCitOb2Rl ICoKK21ha2VKc29uS2V5VmFsdWUoTm9kZSAqa2V5LCBOb2RlICp2YWx1ZSkKK3sKKwlKc29u S2V5VmFsdWUgKm4gPSBtYWtlTm9kZShKc29uS2V5VmFsdWUpOworCisJbi0+a2V5ID0gKEV4 cHIgKikga2V5OworCW4tPnZhbHVlID0gY2FzdE5vZGUoSnNvblZhbHVlRXhwciwgdmFsdWUp OworCisJcmV0dXJuIChOb2RlICopIG47Cit9CisKKy8qCisgKiBtYWtlSnNvbklzUHJlZGlj YXRlIC0KKyAqCSAgY3JlYXRlcyBhIEpzb25Jc1ByZWRpY2F0ZSBub2RlCisgKi8KK05vZGUg KgorbWFrZUpzb25Jc1ByZWRpY2F0ZShOb2RlICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQs IEpzb25WYWx1ZVR5cGUgdmFsdWVfdHlwZSwKKwkJCQkJYm9vbCB1bmlxdWVfa2V5cywgaW50 IGxvY2F0aW9uKQoreworCUpzb25Jc1ByZWRpY2F0ZSAqbiA9IG1ha2VOb2RlKEpzb25Jc1By ZWRpY2F0ZSk7CisKKwluLT5leHByID0gZXhwcjsKKwluLT5mb3JtYXQgPSBmb3JtYXQ7CisJ bi0+dmFsdWVfdHlwZSA9IHZhbHVlX3R5cGU7CisJbi0+dW5pcXVlX2tleXMgPSB1bmlxdWVf a2V5czsKKwluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIG47 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDQ3ZDA1NjRmYTIuLmU4ZGUxZGQzYWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yNTAsNiArMjUwLDI1IEBAIGV4cHJUeXBl KGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9QbGFjZUhvbGRlclZhcjoKIAkJCXR5cGUg PSBleHByVHlwZSgoTm9kZSAqKSAoKGNvbnN0IFBsYWNlSG9sZGVyVmFyICopIGV4cHIpLT5w aGV4cHIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgorCQkJeworCQkJ CWNvbnN0IEpzb25WYWx1ZUV4cHIgKmp2ZSA9IChjb25zdCBKc29uVmFsdWVFeHByICopIGV4 cHI7CisKKwkJCQl0eXBlID0gZXhwclR5cGUoKE5vZGUgKikgKGp2ZS0+Zm9ybWF0dGVkX2V4 cHIgPyBqdmUtPmZvcm1hdHRlZF9leHByIDoganZlLT5yYXdfZXhwcikpOworCQkJfQorCQkJ YnJlYWs7CisJCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgorCQkJdHlwZSA9ICgoY29u c3QgSnNvbkNvbnN0cnVjdG9yRXhwciAqKSBleHByKS0+cmV0dXJuaW5nLT50eXBpZDsKKwkJ CWJyZWFrOworCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgorCQkJdHlwZSA9IEJPT0xPSUQ7 CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJdHlwZSA9ICgoY29uc3QgSnNv bkV4cHIgKikgZXhwciktPnJldHVybmluZy0+dHlwaWQ7CisJCQlicmVhazsKKwkJY2FzZSBU X0pzb25Db2VyY2lvbjoKKwkJCXR5cGUgPSBleHByVHlwZSgoKGNvbnN0IEpzb25Db2VyY2lv biAqKSBleHByKS0+ZXhwcik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcoZXhwcikp OwogCQkJdHlwZSA9IEludmFsaWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAg LTQ4Miw2ICs1MDEsMTQgQEAgZXhwclR5cG1vZChjb25zdCBOb2RlICpleHByKQogCQkJcmV0 dXJuICgoY29uc3QgU2V0VG9EZWZhdWx0ICopIGV4cHIpLT50eXBlTW9kOwogCQljYXNlIFRf UGxhY2VIb2xkZXJWYXI6CiAJCQlyZXR1cm4gZXhwclR5cG1vZCgoTm9kZSAqKSAoKGNvbnN0 IFBsYWNlSG9sZGVyVmFyICopIGV4cHIpLT5waGV4cHIpOworCQljYXNlIFRfSnNvblZhbHVl RXhwcjoKKwkJCXJldHVybiBleHByVHlwbW9kKChOb2RlICopICgoY29uc3QgSnNvblZhbHVl RXhwciAqKSBleHByKS0+Zm9ybWF0dGVkX2V4cHIpOworCQljYXNlIFRfSnNvbkNvbnN0cnVj dG9yRXhwcjoKKwkJCXJldHVybiAoKGNvbnN0IEpzb25Db25zdHJ1Y3RvckV4cHIgKikgZXhw ciktPnJldHVybmluZy0+dHlwbW9kOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQlyZXR1cm4g KChKc29uRXhwciAqKSBleHByKS0+cmV0dXJuaW5nLT50eXBtb2Q7CisJCWNhc2UgVF9Kc29u Q29lcmNpb246CisJCQlyZXR1cm4gZXhwclR5cG1vZCgoKGNvbnN0IEpzb25Db2VyY2lvbiAq KSBleHByKS0+ZXhwcik7CiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAl9CkBAIC05NTYsNiAr OTgzLDM3IEBAIGV4cHJDb2xsYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX1Bs YWNlSG9sZGVyVmFyOgogCQkJY29sbCA9IGV4cHJDb2xsYXRpb24oKE5vZGUgKikgKChjb25z dCBQbGFjZUhvbGRlclZhciAqKSBleHByKS0+cGhleHByKTsKIAkJCWJyZWFrOworCQljYXNl IFRfSnNvblZhbHVlRXhwcjoKKwkJCWNvbGwgPSBleHByQ29sbGF0aW9uKChOb2RlICopICgo Y29uc3QgSnNvblZhbHVlRXhwciAqKSBleHByKS0+Zm9ybWF0dGVkX2V4cHIpOworCQkJYnJl YWs7CisJCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgorCQkJeworCQkJCWNvbnN0IEpz b25Db25zdHJ1Y3RvckV4cHIgKmN0b3IgPSAoY29uc3QgSnNvbkNvbnN0cnVjdG9yRXhwciAq KSBleHByOworCisJCQkJaWYgKGN0b3ItPmNvZXJjaW9uKQorCQkJCQljb2xsID0gZXhwckNv bGxhdGlvbigoTm9kZSAqKSBjdG9yLT5jb2VyY2lvbik7CisJCQkJZWxzZQorCQkJCQljb2xs ID0gSW52YWxpZE9pZDsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbklzUHJlZGlj YXRlOgorCQkJY29sbCA9IEludmFsaWRPaWQ7CS8qIHJlc3VsdCBpcyBhbHdheXMgYW4gYm9v bGVhbiB0eXBlICovCisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJ CUpzb25FeHByICpqZXhwciA9IChKc29uRXhwciAqKSBleHByOworCQkJCUpzb25Db2VyY2lv biAqY29lcmNpb24gPSBqZXhwci0+cmVzdWx0X2NvZXJjaW9uOworCisJCQkJaWYgKCFjb2Vy Y2lvbikKKwkJCQkJY29sbCA9IEludmFsaWRPaWQ7CisJCQkJZWxzZSBpZiAoY29lcmNpb24t PmV4cHIpCisJCQkJCWNvbGwgPSBleHByQ29sbGF0aW9uKGNvZXJjaW9uLT5leHByKTsKKwkJ CQllbHNlIGlmIChjb2VyY2lvbi0+dmlhX2lvIHx8IGNvZXJjaW9uLT52aWFfcG9wdWxhdGUp CisJCQkJCWNvbGwgPSBjb2VyY2lvbi0+Y29sbGF0aW9uOworCQkJCWVsc2UKKwkJCQkJY29s bCA9IEludmFsaWRPaWQ7CisJCQl9CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcoZXhw cikpOwogCQkJY29sbCA9IEludmFsaWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8K QEAgLTExNjgsNiArMTIyNiwzOCBAQCBleHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9p ZCBjb2xsYXRpb24pCiAJCQkvKiBOZXh0VmFsdWVFeHByJ3MgcmVzdWx0IGlzIGFuIGludGVn ZXIgdHlwZSAuLi4gKi8KIAkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyog Li4uIHNvIG5ldmVyIHNldCBhIGNvbGxhdGlvbiAqLwogCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uVmFsdWVFeHByOgorCQkJZXhwclNldENvbGxhdGlvbigoTm9kZSAqKSAoKEpzb25WYWx1 ZUV4cHIgKikgZXhwciktPmZvcm1hdHRlZF9leHByLAorCQkJCQkJCSBjb2xsYXRpb24pOwor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgorCQkJeworCQkJCUpz b25Db25zdHJ1Y3RvckV4cHIgKmN0b3IgPSAoSnNvbkNvbnN0cnVjdG9yRXhwciAqKSBleHBy OworCisJCQkJaWYgKGN0b3ItPmNvZXJjaW9uKQorCQkJCQlleHByU2V0Q29sbGF0aW9uKChO b2RlICopIGN0b3ItPmNvZXJjaW9uLCBjb2xsYXRpb24pOworCQkJCWVsc2UKKwkJCQkJQXNz ZXJ0KCFPaWRJc1ZhbGlkKGNvbGxhdGlvbikpOyAvKiByZXN1bHQgaXMgYWx3YXlzIGEganNv bltiXSB0eXBlICovCisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0 ZToKKwkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogcmVzdWx0IGlzIGFs d2F5cyBib29sZWFuICovCisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJewor CQkJCUpzb25FeHByICpqZXhwciA9IChKc29uRXhwciAqKSBleHByOworCQkJCUpzb25Db2Vy Y2lvbiAqY29lcmNpb24gPSBqZXhwci0+cmVzdWx0X2NvZXJjaW9uOworCisJCQkJaWYgKCFj b2VyY2lvbikKKwkJCQkJQXNzZXJ0KCFPaWRJc1ZhbGlkKGNvbGxhdGlvbikpOworCQkJCWVs c2UgaWYgKGNvZXJjaW9uLT5leHByKQorCQkJCQlleHByU2V0Q29sbGF0aW9uKGNvZXJjaW9u LT5leHByLCBjb2xsYXRpb24pOworCQkJCWVsc2UgaWYgKGNvZXJjaW9uLT52aWFfaW8gfHwg Y29lcmNpb24tPnZpYV9wb3B1bGF0ZSkKKwkJCQkJY29lcmNpb24tPmNvbGxhdGlvbiA9IGNv bGxhdGlvbjsKKwkJCQllbHNlCisJCQkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24p KTsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CiAJCQlicmVh azsKQEAgLTE2MTQsNiArMTcwNCwyNCBAQCBleHByTG9jYXRpb24oY29uc3QgTm9kZSAqZXhw cikKIAkJY2FzZSBUX1BhcnRpdGlvblJhbmdlRGF0dW06CiAJCQlsb2MgPSAoKGNvbnN0IFBh cnRpdGlvblJhbmdlRGF0dW0gKikgZXhwciktPmxvY2F0aW9uOwogCQkJYnJlYWs7CisJCWNh c2UgVF9Kc29uVmFsdWVFeHByOgorCQkJbG9jID0gZXhwckxvY2F0aW9uKChOb2RlICopICgo Y29uc3QgSnNvblZhbHVlRXhwciAqKSBleHByKS0+cmF3X2V4cHIpOworCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgorCQkJbG9jID0gKChjb25zdCBKc29uQ29u c3RydWN0b3JFeHByICopIGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFRf SnNvbklzUHJlZGljYXRlOgorCQkJbG9jID0gKChjb25zdCBKc29uSXNQcmVkaWNhdGUgKikg ZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsK KwkJCQljb25zdCBKc29uRXhwciAqanNleHByID0gKGNvbnN0IEpzb25FeHByICopIGV4cHI7 CisKKwkJCQkvKiBjb25zaWRlciBib3RoIGZ1bmN0aW9uIG5hbWUgYW5kIGxlZnRtb3N0IGFy ZyAqLworCQkJCWxvYyA9IGxlZnRtb3N0TG9jKGpzZXhwci0+bG9jYXRpb24sCisJCQkJCQkJ CSAgZXhwckxvY2F0aW9uKGpzZXhwci0+Zm9ybWF0dGVkX2V4cHIpKTsKKwkJCX0KKwkJCWJy ZWFrOwogCQlkZWZhdWx0OgogCQkJLyogZm9yIGFueSBvdGhlciBub2RlIHR5cGUgaXQncyBq dXN0IHVua25vd24uLi4gKi8KIAkJCWxvYyA9IC0xOwpAQCAtMjM0OCw2ICsyNDU2LDc4IEBA IGV4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7 CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25WYWx1ZUV4cHI6CisJCQl7CisJCQkJ SnNvblZhbHVlRXhwciAqanZlID0gKEpzb25WYWx1ZUV4cHIgKikgbm9kZTsKKworCQkJCWlm ICh3YWxrZXIoanZlLT5yYXdfZXhwciwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOwor CQkJCWlmICh3YWxrZXIoanZlLT5mb3JtYXR0ZWRfZXhwciwgY29udGV4dCkpCisJCQkJCXJl dHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JF eHByOgorCQkJeworCQkJCUpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IgPSAoSnNvbkNvbnN0 cnVjdG9yRXhwciAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihjdG9yLT5hcmdzLCBjb250 ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihjdG9yLT5mdW5jLCBj b250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihjdG9yLT5jb2Vy Y2lvbiwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CisJCQlyZXR1cm4gd2Fsa2VyKCgoSnNvbklzUHJl ZGljYXRlICopIG5vZGUpLT5leHByLCBjb250ZXh0KTsKKwkJY2FzZSBUX0pzb25FeHByOgor CQkJeworCQkJCUpzb25FeHByICAgICpqZXhwciA9IChKc29uRXhwciAqKSBub2RlOworCisJ CQkJaWYgKHdhbGtlcihqZXhwci0+Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQpKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGpleHByLT5yZXN1bHRfY29lcmNpb24sIGNv bnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGpleHByLT5wYXNz aW5nX3ZhbHVlcywgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCS8qIHdlIGFz c3VtZSB3YWxrZXIgZG9lc24ndCBjYXJlIGFib3V0IHBhc3NpbmdfbmFtZXMgKi8KKwkJCQlp ZiAoamV4cHItPm9uX2VtcHR5ICYmCisJCQkJCXdhbGtlcihqZXhwci0+b25fZW1wdHktPmRl ZmF1bHRfZXhwciwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxr ZXIoamV4cHItPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIsIGNvbnRleHQpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGpleHByLT5jb2VyY2lvbnMsIGNvbnRleHQpKQor CQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJj aW9uOgorCQkJcmV0dXJuIHdhbGtlcigoKEpzb25Db2VyY2lvbiAqKSBub2RlKS0+ZXhwciwg Y29udGV4dCk7CisJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uczoKKwkJCXsKKwkJCQlKc29u SXRlbUNvZXJjaW9ucyAqY29lcmNpb25zID0gKEpzb25JdGVtQ29lcmNpb25zICopIG5vZGU7 CisKKwkJCQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+bnVsbCwgY29udGV4dCkpCisJCQkJCXJl dHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoY29lcmNpb25zLT5zdHJpbmcsIGNvbnRleHQp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+bnVtZXJp YywgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoY29lcmNp b25zLT5ib29sZWFuLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdh bGtlcihjb2VyY2lvbnMtPmRhdGUsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+dGltZSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmICh3YWxrZXIoY29lcmNpb25zLT50aW1ldHosIGNvbnRleHQpKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+dGltZXN0YW1wLCBj b250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihjb2VyY2lvbnMt PnRpbWVzdGFtcHR6LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdh bGtlcihjb2VyY2lvbnMtPmNvbXBvc2l0ZSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVl OworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNv Z25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBub2RlVGFnKG5vZGUpKTsKQEAg LTI2NzgsNiArMjg1OCw3IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yKE5vZGUgKm5vZGUs CiAJCWNhc2UgVF9SYW5nZVRibFJlZjoKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJ Y2FzZSBUX0NURVNlYXJjaENsYXVzZToKKwkJY2FzZSBUX0pzb25Gb3JtYXQ6CiAJCQlyZXR1 cm4gKE5vZGUgKikgY29weU9iamVjdChub2RlKTsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlv bjoKIAkJCXsKQEAgLTMzMDksNiArMzQ5MCwxMDEgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0 b3IoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJ CWJyZWFrOworCQljYXNlIFRfSnNvblJldHVybmluZzoKKwkJCXsKKwkJCQlKc29uUmV0dXJu aW5nICpqciA9IChKc29uUmV0dXJuaW5nICopIG5vZGU7CisJCQkJSnNvblJldHVybmluZyAq bmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGpyLCBKc29uUmV0dXJuaW5nKTsK KwkJCQlNVVRBVEUobmV3bm9kZS0+Zm9ybWF0LCBqci0+Zm9ybWF0LCBKc29uRm9ybWF0ICop OworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCWNhc2UgVF9Kc29u VmFsdWVFeHByOgorCQkJeworCQkJCUpzb25WYWx1ZUV4cHIgKmp2ZSA9IChKc29uVmFsdWVF eHByICopIG5vZGU7CisJCQkJSnNvblZhbHVlRXhwciAqbmV3bm9kZTsKKworCQkJCUZMQVRD T1BZKG5ld25vZGUsIGp2ZSwgSnNvblZhbHVlRXhwcik7CisJCQkJTVVUQVRFKG5ld25vZGUt PnJhd19leHByLCBqdmUtPnJhd19leHByLCBFeHByICopOworCQkJCU1VVEFURShuZXdub2Rl LT5mb3JtYXR0ZWRfZXhwciwganZlLT5mb3JtYXR0ZWRfZXhwciwgRXhwciAqKTsKKwkJCQlN VVRBVEUobmV3bm9kZS0+Zm9ybWF0LCBqdmUtPmZvcm1hdCwgSnNvbkZvcm1hdCAqKTsKKwor CQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQljYXNlIFRfSnNvbkNvbnN0 cnVjdG9yRXhwcjoKKwkJCXsKKwkJCQlKc29uQ29uc3RydWN0b3JFeHByICpqdmUgPSAoSnNv bkNvbnN0cnVjdG9yRXhwciAqKSBub2RlOworCQkJCUpzb25Db25zdHJ1Y3RvckV4cHIgKm5l d25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBqdmUsIEpzb25Db25zdHJ1Y3RvckV4 cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5hcmdzLCBqdmUtPmFyZ3MsIExpc3QgKik7CisJ CQkJTVVUQVRFKG5ld25vZGUtPmZ1bmMsIGp2ZS0+ZnVuYywgRXhwciAqKTsKKwkJCQlNVVRB VEUobmV3bm9kZS0+Y29lcmNpb24sIGp2ZS0+Y29lcmNpb24sIEV4cHIgKik7CisJCQkJTVVU QVRFKG5ld25vZGUtPnJldHVybmluZywganZlLT5yZXR1cm5pbmcsIEpzb25SZXR1cm5pbmcg Kik7CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwor CQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgorCQkJeworCQkJCUpzb25Jc1ByZWRpY2F0ZSAq cHJlZCA9IChKc29uSXNQcmVkaWNhdGUgKikgbm9kZTsKKwkJCQlKc29uSXNQcmVkaWNhdGUg Km5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBwcmVkLCBKc29uSXNQcmVkaWNh dGUpOworCQkJCU1VVEFURShuZXdub2RlLT5leHByLCBwcmVkLT5leHByLCBOb2RlICopOwor CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKKwkJY2Fz ZSBUX0pzb25FeHByOgorCQkJeworCQkJCUpzb25FeHByICAgICpqZXhwciA9IChKc29uRXhw ciAqKSBub2RlOworCQkJCUpzb25FeHByICAgICpuZXdub2RlOworCisJCQkJRkxBVENPUFko bmV3bm9kZSwgamV4cHIsIEpzb25FeHByKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cGF0aF9z cGVjLCBqZXhwci0+cGF0aF9zcGVjLCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5m b3JtYXR0ZWRfZXhwciwgamV4cHItPmZvcm1hdHRlZF9leHByLCBOb2RlICopOworCQkJCU1V VEFURShuZXdub2RlLT5yZXN1bHRfY29lcmNpb24sIGpleHByLT5yZXN1bHRfY29lcmNpb24s IEpzb25Db2VyY2lvbiAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cGFzc2luZ192YWx1ZXMs IGpleHByLT5wYXNzaW5nX3ZhbHVlcywgTGlzdCAqKTsKKwkJCQkvKiBhc3N1bWUgbXV0YXRv ciBkb2VzIG5vdCBjYXJlIGFib3V0IHBhc3NpbmdfbmFtZXMgKi8KKwkJCQlpZiAobmV3bm9k ZS0+b25fZW1wdHkpCisJCQkJCU1VVEFURShuZXdub2RlLT5vbl9lbXB0eS0+ZGVmYXVsdF9l eHByLAorCQkJCQkJICAgamV4cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIsIE5vZGUgKik7 CisJCQkJTVVUQVRFKG5ld25vZGUtPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIsCisJCQkJCSAg IGpleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByLCBOb2RlICopOworCQkJCXJldHVybiAo Tm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNp b246CisJCQl7CisJCQkJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9IChKc29uQ29lcmNpb24g Kikgbm9kZTsKKwkJCQlKc29uQ29lcmNpb24gKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShu ZXdub2RlLCBjb2VyY2lvbiwgSnNvbkNvZXJjaW9uKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ ZXhwciwgY29lcmNpb24tPmV4cHIsIE5vZGUgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5l d25vZGU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb25zOgor CQkJeworCQkJCUpzb25JdGVtQ29lcmNpb25zICpjb2VyY2lvbnMgPSAoSnNvbkl0ZW1Db2Vy Y2lvbnMgKikgbm9kZTsKKwkJCQlKc29uSXRlbUNvZXJjaW9ucyAqbmV3bm9kZTsKKworCQkJ CUZMQVRDT1BZKG5ld25vZGUsIGNvZXJjaW9ucywgSnNvbkl0ZW1Db2VyY2lvbnMpOworCQkJ CU1VVEFURShuZXdub2RlLT5udWxsLCBjb2VyY2lvbnMtPm51bGwsIEpzb25Db2VyY2lvbiAq KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+c3RyaW5nLCBjb2VyY2lvbnMtPnN0cmluZywgSnNv bkNvZXJjaW9uICopOworCQkJCU1VVEFURShuZXdub2RlLT5udW1lcmljLCBjb2VyY2lvbnMt Pm51bWVyaWMsIEpzb25Db2VyY2lvbiAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Ym9vbGVh biwgY29lcmNpb25zLT5ib29sZWFuLCBKc29uQ29lcmNpb24gKik7CisJCQkJTVVUQVRFKG5l d25vZGUtPmRhdGUsIGNvZXJjaW9ucy0+ZGF0ZSwgSnNvbkNvZXJjaW9uICopOworCQkJCU1V VEFURShuZXdub2RlLT50aW1lLCBjb2VyY2lvbnMtPnRpbWUsIEpzb25Db2VyY2lvbiAqKTsK KwkJCQlNVVRBVEUobmV3bm9kZS0+dGltZXR6LCBjb2VyY2lvbnMtPnRpbWV0eiwgSnNvbkNv ZXJjaW9uICopOworCQkJCU1VVEFURShuZXdub2RlLT50aW1lc3RhbXAsIGNvZXJjaW9ucy0+ dGltZXN0YW1wLCBKc29uQ29lcmNpb24gKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnRpbWVz dGFtcHR6LCBjb2VyY2lvbnMtPnRpbWVzdGFtcHR6LCBKc29uQ29lcmNpb24gKik7CisJCQkJ TVVUQVRFKG5ld25vZGUtPmNvbXBvc2l0ZSwgY29lcmNpb25zLT5jb21wb3NpdGUsIEpzb25D b2VyY2lvbiAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJy ZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5 cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhub2RlKSk7CkBAIC00MDE3LDYgKzQyOTMs MTU3IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCWNhc2Ug VF9Db21tb25UYWJsZUV4cHI6CiAJCQkvKiBzZWFyY2hfY2xhdXNlIGFuZCBjeWNsZV9jbGF1 c2UgYXJlIG5vdCBpbnRlcmVzdGluZyBoZXJlICovCiAJCQlyZXR1cm4gd2Fsa2VyKCgoQ29t bW9uVGFibGVFeHByICopIG5vZGUpLT5jdGVxdWVyeSwgY29udGV4dCk7CisJCWNhc2UgVF9K c29uUmV0dXJuaW5nOgorCQkJcmV0dXJuIHdhbGtlcigoKEpzb25SZXR1cm5pbmcgKikgbm9k ZSktPmZvcm1hdCwgY29udGV4dCk7CisJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgorCQkJewor CQkJCUpzb25WYWx1ZUV4cHIgKmp2ZSA9IChKc29uVmFsdWVFeHByICopIG5vZGU7CisKKwkJ CQlpZiAod2Fsa2VyKGp2ZS0+cmF3X2V4cHIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAod2Fsa2VyKGp2ZS0+Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQpKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGp2ZS0+Zm9ybWF0LCBjb250ZXh0KSkK KwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db25z dHJ1Y3RvckV4cHI6CisJCQl7CisJCQkJSnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciA9IChK c29uQ29uc3RydWN0b3JFeHByICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKGN0b3ItPmFy Z3MsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGN0b3It PmZ1bmMsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGN0 b3ItPmNvZXJjaW9uLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdh bGtlcihjdG9yLT5yZXR1cm5pbmcsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbk91dHB1dDoKKwkJCXsKKwkJCQlKc29uT3V0 cHV0ICpvdXQgPSAoSnNvbk91dHB1dCAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihvdXQt PnR5cGVOYW1lLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtl cihvdXQtPnJldHVybmluZywgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uS2V5VmFsdWU6CisJCQl7CisJCQkJSnNvbktleVZh bHVlICpqa3YgPSAoSnNvbktleVZhbHVlICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKGpr di0+a2V5LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihq a3YtPnZhbHVlLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVh azsKKwkJY2FzZSBUX0pzb25PYmplY3RDb25zdHJ1Y3RvcjoKKwkJCXsKKwkJCQlKc29uT2Jq ZWN0Q29uc3RydWN0b3IgKmpvYyA9IChKc29uT2JqZWN0Q29uc3RydWN0b3IgKikgbm9kZTsK KworCQkJCWlmICh3YWxrZXIoam9jLT5vdXRwdXQsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGpvYy0+ZXhwcnMsIGNvbnRleHQpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkFycmF5Q29uc3RydWN0 b3I6CisJCQl7CisJCQkJSnNvbkFycmF5Q29uc3RydWN0b3IgKmphYyA9IChKc29uQXJyYXlD b25zdHJ1Y3RvciAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihqYWMtPm91dHB1dCwgY29u dGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoamFjLT5leHBycywg Y29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2Ug VF9Kc29uQWdnQ29uc3RydWN0b3I6CisJCQl7CisJCQkJSnNvbkFnZ0NvbnN0cnVjdG9yICpj dG9yID0gKEpzb25BZ2dDb25zdHJ1Y3RvciAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihj dG9yLT5vdXRwdXQsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fs a2VyKGN0b3ItPmFnZ19vcmRlciwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJ CWlmICh3YWxrZXIoY3Rvci0+YWdnX2ZpbHRlciwgY29udGV4dCkpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmICh3YWxrZXIoY3Rvci0+b3ZlciwgY29udGV4dCkpCisJCQkJCXJldHVy biB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uT2JqZWN0QWdnOgorCQkJ eworCQkJCUpzb25PYmplY3RBZ2cgKmpvYSA9IChKc29uT2JqZWN0QWdnICopIG5vZGU7CisK KwkJCQlpZiAod2Fsa2VyKGpvYS0+Y29uc3RydWN0b3IsIGNvbnRleHQpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGpvYS0+YXJnLCBjb250ZXh0KSkKKwkJCQkJcmV0 dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BcnJheUFnZzoKKwkJ CXsKKwkJCQlKc29uQXJyYXlBZ2cgKmphYSA9IChKc29uQXJyYXlBZ2cgKikgbm9kZTsKKwor CQkJCWlmICh3YWxrZXIoamFhLT5jb25zdHJ1Y3RvciwgY29udGV4dCkpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmICh3YWxrZXIoamFhLT5hcmcsIGNvbnRleHQpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkFycmF5UXVlcnlDb25z dHJ1Y3RvcjoKKwkJCXsKKwkJCQlKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yICpqYXFjID0g KEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIo amFxYy0+b3V0cHV0LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdh bGtlcihqYXFjLT5xdWVyeSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CisJCQlyZXR1cm4gd2Fsa2Vy KCgoSnNvbklzUHJlZGljYXRlICopIG5vZGUpLT5leHByLCBjb250ZXh0KTsKKwkJY2FzZSBU X0pzb25Bcmd1bWVudDoKKwkJCXJldHVybiB3YWxrZXIoKChKc29uQXJndW1lbnQgKikgbm9k ZSktPnZhbCwgY29udGV4dCk7CisJCWNhc2UgVF9Kc29uQ29tbW9uOgorCQkJeworCQkJCUpz b25Db21tb24gKmpjID0gKEpzb25Db21tb24gKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIo amMtPmV4cHIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2Vy KGpjLT5wYXRoc3BlYywgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3 YWxrZXIoamMtPnBhc3NpbmcsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0K KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkJlaGF2aW9yOgorCQkJeworCQkJCUpzb25CZWhh dmlvciAqamIgPSAoSnNvbkJlaGF2aW9yICopIG5vZGU7CisKKwkJCQlpZiAoamItPmJ0eXBl ID09IEpTT05fQkVIQVZJT1JfREVGQVVMVCAmJgorCQkJCQl3YWxrZXIoamItPmRlZmF1bHRf ZXhwciwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uRnVuY0V4cHI6CisJCQl7CisJCQkJSnNvbkZ1bmNFeHByICpqZmUgPSAo SnNvbkZ1bmNFeHByICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKGpmZS0+Y29tbW9uLCBj b250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKGpmZS0+b3V0cHV0ICYmIHdh bGtlcihqZmUtPm91dHB1dCwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlm ICh3YWxrZXIoamZlLT5vbl9lbXB0eSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOwor CQkJCWlmICh3YWxrZXIoamZlLT5vbl9lcnJvciwgY29udGV4dCkpCisJCQkJCXJldHVybiB0 cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBub2RlVGFnKG5vZGUpKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDJiMDIzNjkzN2EuLjA5MWQ4YTQwMTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYwpAQCAtMTc1MSw2ICsxNzUxLDEyMCBAQCBfb3V0T25Db25mbGlj dEV4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IE9uQ29uZmxpY3RFeHByICpub2RlKQogCVdS SVRFX05PREVfRklFTEQoZXhjbFJlbFRsaXN0KTsKIH0KIAorc3RhdGljIHZvaWQKK19vdXRK c29uRm9ybWF0KFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uRm9ybWF0ICpub2RlKQorewor CVdSSVRFX05PREVfVFlQRSgiSlNPTkZPUk1BVCIpOworCisJV1JJVEVfRU5VTV9GSUVMRChm b3JtYXRfdHlwZSwgSnNvbkZvcm1hdFR5cGUpOworCVdSSVRFX0VOVU1fRklFTEQoZW5jb2Rp bmcsIEpzb25FbmNvZGluZyk7CisJV1JJVEVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwor fQorCitzdGF0aWMgdm9pZAorX291dEpzb25SZXR1cm5pbmcoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IEpzb25SZXR1cm5pbmcgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJKU09OUkVU VVJOSU5HIik7CisKKwlXUklURV9OT0RFX0ZJRUxEKGZvcm1hdCk7CisJV1JJVEVfT0lEX0ZJ RUxEKHR5cGlkKTsKKwlXUklURV9JTlRfRklFTEQodHlwbW9kKTsKK30KKworc3RhdGljIHZv aWQKK19vdXRKc29uVmFsdWVFeHByKFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uVmFsdWVF eHByICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiSlNPTlZBTFVFRVhQUiIpOworCisJ V1JJVEVfTk9ERV9GSUVMRChyYXdfZXhwcik7CisJV1JJVEVfTk9ERV9GSUVMRChmb3JtYXR0 ZWRfZXhwcik7CisJV1JJVEVfTk9ERV9GSUVMRChmb3JtYXQpOworfQorCitzdGF0aWMgdm9p ZAorX291dEpzb25Db25zdHJ1Y3RvckV4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEpzb25D b25zdHJ1Y3RvckV4cHIgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJKU09OQ1RPUkVY UFIiKTsKKworCVdSSVRFX05PREVfRklFTEQoYXJncyk7CisJV1JJVEVfTk9ERV9GSUVMRChm dW5jKTsKKwlXUklURV9OT0RFX0ZJRUxEKGNvZXJjaW9uKTsKKwlXUklURV9JTlRfRklFTEQo dHlwZSk7CisJV1JJVEVfTk9ERV9GSUVMRChyZXR1cm5pbmcpOworCVdSSVRFX0JPT0xfRklF TEQodW5pcXVlKTsKKwlXUklURV9CT09MX0ZJRUxEKGFic2VudF9vbl9udWxsKTsKKwlXUklU RV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7Cit9CisKK3N0YXRpYyB2b2lkCitfb3V0SnNv bklzUHJlZGljYXRlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uSXNQcmVkaWNhdGUgKm5v ZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJKU09OSVNQUkVESUNBVEUiKTsKKworCVdSSVRF X05PREVfRklFTEQoZXhwcik7CisJV1JJVEVfRU5VTV9GSUVMRCh2YWx1ZV90eXBlLCBKc29u VmFsdWVUeXBlKTsKKwlXUklURV9CT09MX0ZJRUxEKHVuaXF1ZV9rZXlzKTsKKwlXUklURV9M T0NBVElPTl9GSUVMRChsb2NhdGlvbik7Cit9CisKK3N0YXRpYyB2b2lkCitfb3V0SnNvbkJl aGF2aW9yKFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uQmVoYXZpb3IgKm5vZGUpCit7CisJ V1JJVEVfTk9ERV9UWVBFKCJKU09OQkVIQVZJT1IiKTsKKworCVdSSVRFX0VOVU1fRklFTEQo YnR5cGUsIEpzb25CZWhhdmlvclR5cGUpOworCVdSSVRFX05PREVfRklFTEQoZGVmYXVsdF9l eHByKTsKK30KKworc3RhdGljIHZvaWQKK19vdXRKc29uRXhwcihTdHJpbmdJbmZvIHN0ciwg Y29uc3QgSnNvbkV4cHIgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJKU09ORVhQUiIp OworCisJV1JJVEVfRU5VTV9GSUVMRChvcCwgSnNvbkV4cHJPcCk7CisJV1JJVEVfTk9ERV9G SUVMRChmb3JtYXR0ZWRfZXhwcik7CisJV1JJVEVfTk9ERV9GSUVMRChyZXN1bHRfY29lcmNp b24pOworCVdSSVRFX05PREVfRklFTEQoZm9ybWF0KTsKKwlXUklURV9OT0RFX0ZJRUxEKHBh dGhfc3BlYyk7CisJV1JJVEVfTk9ERV9GSUVMRChwYXNzaW5nX3ZhbHVlcyk7CisJV1JJVEVf Tk9ERV9GSUVMRChwYXNzaW5nX25hbWVzKTsKKwlXUklURV9OT0RFX0ZJRUxEKHJldHVybmlu Zyk7CisJV1JJVEVfTk9ERV9GSUVMRChvbl9lcnJvcik7CisJV1JJVEVfTk9ERV9GSUVMRChv bl9lbXB0eSk7CisJV1JJVEVfTk9ERV9GSUVMRChjb2VyY2lvbnMpOworCVdSSVRFX0VOVU1f RklFTEQod3JhcHBlciwgSnNvbldyYXBwZXIpOworCVdSSVRFX0JPT0xfRklFTEQob21pdF9x dW90ZXMpOworCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30KKworc3RhdGlj IHZvaWQKK19vdXRKc29uQ29lcmNpb24oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEpzb25Db2Vy Y2lvbiAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIkpTT05DT0VSQ0lPTiIpOworCisJ V1JJVEVfTk9ERV9GSUVMRChleHByKTsKKwlXUklURV9CT09MX0ZJRUxEKHZpYV9wb3B1bGF0 ZSk7CisJV1JJVEVfQk9PTF9GSUVMRCh2aWFfaW8pOworCVdSSVRFX09JRF9GSUVMRChjb2xs YXRpb24pOworfQorCitzdGF0aWMgdm9pZAorX291dEpzb25JdGVtQ29lcmNpb25zKFN0cmlu Z0luZm8gc3RyLCBjb25zdCBKc29uSXRlbUNvZXJjaW9ucyAqbm9kZSkKK3sKKwlXUklURV9O T0RFX1RZUEUoIkpTT05JVEVNQ09FUkNJT05TIik7CisKKwlXUklURV9OT0RFX0ZJRUxEKG51 bGwpOworCVdSSVRFX05PREVfRklFTEQoc3RyaW5nKTsKKwlXUklURV9OT0RFX0ZJRUxEKG51 bWVyaWMpOworCVdSSVRFX05PREVfRklFTEQoYm9vbGVhbik7CisJV1JJVEVfTk9ERV9GSUVM RChkYXRlKTsKKwlXUklURV9OT0RFX0ZJRUxEKHRpbWUpOworCVdSSVRFX05PREVfRklFTEQo dGltZXR6KTsKKwlXUklURV9OT0RFX0ZJRUxEKHRpbWVzdGFtcCk7CisJV1JJVEVfTk9ERV9G SUVMRCh0aW1lc3RhbXB0eik7CisJV1JJVEVfTk9ERV9GSUVMRChjb21wb3NpdGUpOworfQor CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKglTdHVmZiBmcm9tIHBhdGhub2Rl cy5oLgpAQCAtNDUzNSw2ICs0NjQ5LDMzIEBAIG91dE5vZGUoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IHZvaWQgKm9iaikKIAkJCWNhc2UgVF9QYXJ0aXRpb25SYW5nZURhdHVtOgogCQkJCV9v dXRQYXJ0aXRpb25SYW5nZURhdHVtKHN0ciwgb2JqKTsKIAkJCQlicmVhazsKKwkJCWNhc2Ug VF9Kc29uRm9ybWF0OgorCQkJCV9vdXRKc29uRm9ybWF0KHN0ciwgb2JqKTsKKwkJCQlicmVh azsKKwkJCWNhc2UgVF9Kc29uUmV0dXJuaW5nOgorCQkJCV9vdXRKc29uUmV0dXJuaW5nKHN0 ciwgb2JqKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgorCQkJCV9v dXRKc29uVmFsdWVFeHByKHN0ciwgb2JqKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgVF9Kc29u Q29uc3RydWN0b3JFeHByOgorCQkJCV9vdXRKc29uQ29uc3RydWN0b3JFeHByKHN0ciwgb2Jq KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CisJCQkJX291dEpz b25Jc1ByZWRpY2F0ZShzdHIsIG9iaik7CisJCQkJYnJlYWs7CisJCQljYXNlIFRfSnNvbkJl aGF2aW9yOgorCQkJCV9vdXRKc29uQmVoYXZpb3Ioc3RyLCBvYmopOworCQkJCWJyZWFrOwor CQkJY2FzZSBUX0pzb25FeHByOgorCQkJCV9vdXRKc29uRXhwcihzdHIsIG9iaik7CisJCQkJ YnJlYWs7CisJCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJCV9vdXRKc29uQ29lcmNpb24o c3RyLCBvYmopOworCQkJCWJyZWFrOworCQkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb25zOgor CQkJCV9vdXRKc29uSXRlbUNvZXJjaW9ucyhzdHIsIG9iaik7CisJCQkJYnJlYWs7CiAKIAkJ CWRlZmF1bHQ6CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggM2Y2OGY3YzE4ZC4uYzE1 ZTgxYTM2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTEzODksNiArMTM4OSwxNjUg QEAgX3JlYWRPbkNvbmZsaWN0RXhwcih2b2lkKQogCVJFQURfRE9ORSgpOwogfQogCisvKgor ICogX3JlYWRKc29uRm9ybWF0CisgKi8KK3N0YXRpYyBKc29uRm9ybWF0ICoKK19yZWFkSnNv bkZvcm1hdCh2b2lkKQoreworCVJFQURfTE9DQUxTKEpzb25Gb3JtYXQpOworCisJUkVBRF9F TlVNX0ZJRUxEKGZvcm1hdF90eXBlLCBKc29uRm9ybWF0VHlwZSk7CisJUkVBRF9FTlVNX0ZJ RUxEKGVuY29kaW5nLCBKc29uRW5jb2RpbmcpOworCVJFQURfTE9DQVRJT05fRklFTEQobG9j YXRpb24pOworCisJUkVBRF9ET05FKCk7Cit9CisKKy8qCisgKiBfcmVhZEpzb25SZXR1cm5p bmcKKyAqLworc3RhdGljIEpzb25SZXR1cm5pbmcgKgorX3JlYWRKc29uUmV0dXJuaW5nKHZv aWQpCit7CisJUkVBRF9MT0NBTFMoSnNvblJldHVybmluZyk7CisKKwlSRUFEX05PREVfRklF TEQoZm9ybWF0KTsKKwlSRUFEX09JRF9GSUVMRCh0eXBpZCk7CisJUkVBRF9JTlRfRklFTEQo dHlwbW9kKTsKKworCVJFQURfRE9ORSgpOworfQorCisvKgorICogX3JlYWRKc29uVmFsdWVF eHByCisgKi8KK3N0YXRpYyBKc29uVmFsdWVFeHByICoKK19yZWFkSnNvblZhbHVlRXhwcih2 b2lkKQoreworCVJFQURfTE9DQUxTKEpzb25WYWx1ZUV4cHIpOworCisJUkVBRF9OT0RFX0ZJ RUxEKHJhd19leHByKTsKKwlSRUFEX05PREVfRklFTEQoZm9ybWF0dGVkX2V4cHIpOworCVJF QURfTk9ERV9GSUVMRChmb3JtYXQpOworCisJUkVBRF9ET05FKCk7Cit9CisKKy8qCisgKiBf cmVhZEpzb25Db25zdHJ1Y3RvckV4cHIKKyAqLworc3RhdGljIEpzb25Db25zdHJ1Y3RvckV4 cHIgKgorX3JlYWRKc29uQ29uc3RydWN0b3JFeHByKHZvaWQpCit7CisJUkVBRF9MT0NBTFMo SnNvbkNvbnN0cnVjdG9yRXhwcik7CisKKwlSRUFEX05PREVfRklFTEQoYXJncyk7CisJUkVB RF9OT0RFX0ZJRUxEKGZ1bmMpOworCVJFQURfTk9ERV9GSUVMRChjb2VyY2lvbik7CisJUkVB RF9JTlRfRklFTEQodHlwZSk7CisJUkVBRF9OT0RFX0ZJRUxEKHJldHVybmluZyk7CisJUkVB RF9CT09MX0ZJRUxEKHVuaXF1ZSk7CisJUkVBRF9CT09MX0ZJRUxEKGFic2VudF9vbl9udWxs KTsKKwlSRUFEX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCVJFQURfRE9ORSgpOwor fQorCisvKgorICogX3JlYWRKc29uQmVoYXZpb3IKKyAqLworc3RhdGljIEpzb25CZWhhdmlv ciAqCitfcmVhZEpzb25CZWhhdmlvcih2b2lkKQoreworCVJFQURfTE9DQUxTKEpzb25CZWhh dmlvcik7CisKKwlSRUFEX0VOVU1fRklFTEQoYnR5cGUsIEpzb25CZWhhdmlvclR5cGUpOwor CVJFQURfTk9ERV9GSUVMRChkZWZhdWx0X2V4cHIpOworCisJUkVBRF9ET05FKCk7Cit9CisK Ky8qCisgKiBfcmVhZEpzb25FeHByCisgKi8KK3N0YXRpYyBKc29uRXhwciAqCitfcmVhZEpz b25FeHByKHZvaWQpCit7CisJUkVBRF9MT0NBTFMoSnNvbkV4cHIpOworCisJUkVBRF9FTlVN X0ZJRUxEKG9wLCBKc29uRXhwck9wKTsKKwlSRUFEX05PREVfRklFTEQoZm9ybWF0dGVkX2V4 cHIpOworCVJFQURfTk9ERV9GSUVMRChyZXN1bHRfY29lcmNpb24pOworCVJFQURfTk9ERV9G SUVMRChmb3JtYXQpOworCVJFQURfTk9ERV9GSUVMRChwYXRoX3NwZWMpOworCVJFQURfTk9E RV9GSUVMRChwYXNzaW5nX3ZhbHVlcyk7CisJUkVBRF9OT0RFX0ZJRUxEKHBhc3NpbmdfbmFt ZXMpOworCVJFQURfTk9ERV9GSUVMRChyZXR1cm5pbmcpOworCVJFQURfTk9ERV9GSUVMRChv bl9lcnJvcik7CisJUkVBRF9OT0RFX0ZJRUxEKG9uX2VtcHR5KTsKKwlSRUFEX05PREVfRklF TEQoY29lcmNpb25zKTsKKwlSRUFEX0VOVU1fRklFTEQod3JhcHBlciwgSnNvbldyYXBwZXIp OworCVJFQURfQk9PTF9GSUVMRChvbWl0X3F1b3Rlcyk7CisJUkVBRF9MT0NBVElPTl9GSUVM RChsb2NhdGlvbik7CisKKwlSRUFEX0RPTkUoKTsKK30KKworLyoKKyAqIF9yZWFkSnNvbkNv ZXJjaW9uCisgKi8KK3N0YXRpYyBKc29uQ29lcmNpb24gKgorX3JlYWRKc29uQ29lcmNpb24o dm9pZCkKK3sKKwlSRUFEX0xPQ0FMUyhKc29uQ29lcmNpb24pOworCisJUkVBRF9OT0RFX0ZJ RUxEKGV4cHIpOworCVJFQURfQk9PTF9GSUVMRCh2aWFfcG9wdWxhdGUpOworCVJFQURfQk9P TF9GSUVMRCh2aWFfaW8pOworCVJFQURfT0lEX0ZJRUxEKGNvbGxhdGlvbik7CisKKwlSRUFE X0RPTkUoKTsKK30KKworLyoKKyAqIF9yZWFkSnNvbkl0ZW1Db2VyY2lvbnMKKyAqLworc3Rh dGljIEpzb25JdGVtQ29lcmNpb25zICoKK19yZWFkSnNvbkl0ZW1Db2VyY2lvbnModm9pZCkK K3sKKwlSRUFEX0xPQ0FMUyhKc29uSXRlbUNvZXJjaW9ucyk7CisKKwlSRUFEX05PREVfRklF TEQobnVsbCk7CisJUkVBRF9OT0RFX0ZJRUxEKHN0cmluZyk7CisJUkVBRF9OT0RFX0ZJRUxE KG51bWVyaWMpOworCVJFQURfTk9ERV9GSUVMRChib29sZWFuKTsKKwlSRUFEX05PREVfRklF TEQoZGF0ZSk7CisJUkVBRF9OT0RFX0ZJRUxEKHRpbWUpOworCVJFQURfTk9ERV9GSUVMRCh0 aW1ldHopOworCVJFQURfTk9ERV9GSUVMRCh0aW1lc3RhbXApOworCVJFQURfTk9ERV9GSUVM RCh0aW1lc3RhbXB0eik7CisJUkVBRF9OT0RFX0ZJRUxEKGNvbXBvc2l0ZSk7CisKKwlSRUFE X0RPTkUoKTsKK30KKworLyoKKyAqIF9yZWFkSnNvbklzUHJlZGljYXRlCisgKi8KK3N0YXRp YyBKc29uSXNQcmVkaWNhdGUgKgorX3JlYWRKc29uSXNQcmVkaWNhdGUoKQoreworCVJFQURf TE9DQUxTKEpzb25Jc1ByZWRpY2F0ZSk7CisKKwlSRUFEX05PREVfRklFTEQoZXhwcik7CisJ UkVBRF9FTlVNX0ZJRUxEKHZhbHVlX3R5cGUsIEpzb25WYWx1ZVR5cGUpOworCVJFQURfQk9P TF9GSUVMRCh1bmlxdWVfa2V5cyk7CisJUkVBRF9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7 CisKKwlSRUFEX0RPTkUoKTsKK30KKwogLyoKICAqCVN0dWZmIGZyb20gcGF0aG5vZGVzLmgu CiAgKgpAQCAtMjk3NCw2ICszMTMzLDI0IEBAIHBhcnNlTm9kZVN0cmluZyh2b2lkKQogCQly ZXR1cm5fdmFsdWUgPSBfcmVhZFBhcnRpdGlvbkJvdW5kU3BlYygpOwogCWVsc2UgaWYgKE1B VENIKCJQQVJUSVRJT05SQU5HRURBVFVNIiwgMTkpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVh ZFBhcnRpdGlvblJhbmdlRGF0dW0oKTsKKwllbHNlIGlmIChNQVRDSCgiSlNPTkZPUk1BVCIs IDEwKSkKKwkJcmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uRm9ybWF0KCk7CisJZWxzZSBpZiAo TUFUQ0goIkpTT05SRVRVUk5JTkciLCAxMykpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkSnNv blJldHVybmluZygpOworCWVsc2UgaWYgKE1BVENIKCJKU09OVkFMVUVFWFBSIiwgMTMpKQor CQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25WYWx1ZUV4cHIoKTsKKwllbHNlIGlmIChNQVRD SCgiSlNPTkNUT1JFWFBSIiwgMTIpKQorCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25Db25z dHJ1Y3RvckV4cHIoKTsKKwllbHNlIGlmIChNQVRDSCgiSlNPTklTUFJFRElDQVRFIiwgMTUp KQorCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25Jc1ByZWRpY2F0ZSgpOworCWVsc2UgaWYg KE1BVENIKCJKU09OQkVIQVZJT1IiLCAxMikpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkSnNv bkJlaGF2aW9yKCk7CisJZWxzZSBpZiAoTUFUQ0goIkpTT05FWFBSIiwgOCkpCisJCXJldHVy bl92YWx1ZSA9IF9yZWFkSnNvbkV4cHIoKTsKKwllbHNlIGlmIChNQVRDSCgiSlNPTkNPRVJD SU9OIiwgMTIpKQorCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25Db2VyY2lvbigpOworCWVs c2UgaWYgKE1BVENIKCJKU09OSVRFTUNPRVJDSU9OUyIsIDE3KSkKKwkJcmV0dXJuX3ZhbHVl ID0gX3JlYWRKc29uSXRlbUNvZXJjaW9ucygpOwogCWVsc2UKIAl7CiAJCWVsb2coRVJST1Is ICJiYWRseSBmb3JtYXR0ZWQgbm9kZSBzdHJpbmcgXCIlLjMyc1wiLi4uIiwgdG9rZW4pOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKaW5kZXggOGRjN2RkNGNhMi4u YzdiOWQ4ZDExYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29z dHNpemUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCkBA IC00NTQwLDcgKzQ1NDAsOCBAQCBjb3N0X3F1YWxfZXZhbF93YWxrZXIoTm9kZSAqbm9kZSwg Y29zdF9xdWFsX2V2YWxfY29udGV4dCAqY29udGV4dCkKIAkJCSBJc0Eobm9kZSwgU1FMVmFs dWVGdW5jdGlvbikgfHwKIAkJCSBJc0Eobm9kZSwgWG1sRXhwcikgfHwKIAkJCSBJc0Eobm9k ZSwgQ29lcmNlVG9Eb21haW4pIHx8Ci0JCQkgSXNBKG5vZGUsIE5leHRWYWx1ZUV4cHIpKQor CQkJIElzQShub2RlLCBOZXh0VmFsdWVFeHByKSB8fAorCQkJIElzQShub2RlLCBKc29uRXhw cikpCiAJewogCQkvKiBUcmVhdCBhbGwgdGhlc2UgYXMgaGF2aW5nIGNvc3QgMSAqLwogCQlj b250ZXh0LT50b3RhbC5wZXJfdHVwbGUgKz0gY3B1X29wZXJhdG9yX2Nvc3Q7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggYTcwN2RjOWYyNi4uZWVmNDM4MTQ3 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtMjgsNiArMjgs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZnVuY3Rpb25zLmgiCisjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC01MCw2 ICs1MSw5IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRp bHMvanNvbi5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCisjaW5jbHVkZSAidXRpbHMv anNvbnBhdGguaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCkBAIC0zODIs NiArMzg2LDQ1IEBAIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnNfd2Fsa2VyKE5vZGUgKm5v ZGUsIHZvaWQgKmNvbnRleHQpCiAJCQkJCQkJCWNvbnRleHQpKQogCQlyZXR1cm4gdHJ1ZTsK IAorCWlmIChJc0Eobm9kZSwgSnNvbkNvbnN0cnVjdG9yRXhwcikpCisJeworCQljb25zdCBK c29uQ29uc3RydWN0b3JFeHByICpjdG9yID0gKEpzb25Db25zdHJ1Y3RvckV4cHIgKikgbm9k ZTsKKwkJTGlzdENlbGwgICAqbGM7CisJCWJvb2wJCWlzX2pzb25iID0KKwkJCWN0b3ItPnJl dHVybmluZy0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfSlNPTkI7CisKKwkJ LyogQ2hlY2sgYXJndW1lbnRfdHlwZSA9PiBqc29uW2JdIGNvbnZlcnNpb25zICovCisJCWZv cmVhY2gobGMsIGN0b3ItPmFyZ3MpCisJCXsKKwkJCU9pZAkJCXR5cGlkID0gZXhwclR5cGUo bGZpcnN0KGxjKSk7CisKKwkJCWlmIChpc19qc29uYiA/CisJCQkJIXRvX2pzb25iX2lzX2lt bXV0YWJsZSh0eXBpZCkgOgorCQkJCSF0b19qc29uX2lzX2ltbXV0YWJsZSh0eXBpZCkpCisJ CQkJcmV0dXJuIHRydWU7CisJCX0KKworCQkvKiBDaGVjayBhbGwgc3Vibm9kZXMgKi8KKwl9 CisKKwlpZiAoSXNBKG5vZGUsIEpzb25FeHByKSkKKwl7CisJCUpzb25FeHByICAgKmpleHBy ID0gY2FzdE5vZGUoSnNvbkV4cHIsIG5vZGUpOworCQlDb25zdAkgICAqY25zdDsKKworCQlp ZiAoIUlzQShqZXhwci0+cGF0aF9zcGVjLCBDb25zdCkpCisJCQlyZXR1cm4gdHJ1ZTsKKwor CQljbnN0ID0gY2FzdE5vZGUoQ29uc3QsIGpleHByLT5wYXRoX3NwZWMpOworCisJCUFzc2Vy dChjbnN0LT5jb25zdHR5cGUgPT0gSlNPTlBBVEhPSUQpOworCQlpZiAoY25zdC0+Y29uc3Rp c251bGwpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJcmV0dXJuIGpzcElzTXV0YWJsZShEYXR1 bUdldEpzb25QYXRoUChjbnN0LT5jb25zdHZhbHVlKSwKKwkJCQkJCQlqZXhwci0+cGFzc2lu Z19uYW1lcywgamV4cHItPnBhc3NpbmdfdmFsdWVzKTsKKwl9CisKIAlpZiAoSXNBKG5vZGUs IFNRTFZhbHVlRnVuY3Rpb24pKQogCXsKIAkJLyogYWxsIHZhcmlhbnRzIG9mIFNRTFZhbHVl RnVuY3Rpb24gYXJlIHN0YWJsZSAqLwpAQCAtODUzLDYgKzg5NiwxOCBAQCBtYXhfcGFyYWxs ZWxfaGF6YXJkX3dhbGtlcihOb2RlICpub2RlLCBtYXhfcGFyYWxsZWxfaGF6YXJkX2NvbnRl eHQgKmNvbnRleHQpCiAJCQkJCQkJCSBjb250ZXh0LCAwKTsKIAl9CiAKKwkvKiBKc29uRXhw ciBpcyBwYXJhbGxlbC11bnNhZmUgaWYgc3VidHJhbnNhY3Rpb25zIGNhbiBiZSB1c2VkLiAq LworCWVsc2UgaWYgKElzQShub2RlLCBKc29uRXhwcikpCisJeworCQlKc29uRXhwciAgKmpz ZXhwciA9IChKc29uRXhwciAqKSBub2RlOworCisJCWlmIChFeGVjRXZhbEpzb25OZWVkc1N1 YlRyYW5zYWN0aW9uKGpzZXhwciwgTlVMTCkpCisJCXsKKwkJCWNvbnRleHQtPm1heF9oYXph cmQgPSBQUk9QQVJBTExFTF9VTlNBRkU7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKwog CS8qIFJlY3Vyc2UgdG8gY2hlY2sgYXJndW1lbnRzICovCiAJcmV0dXJuIGV4cHJlc3Npb25f dHJlZV93YWxrZXIobm9kZSwKIAkJCQkJCQkJICBtYXhfcGFyYWxsZWxfaGF6YXJkX3dhbGtl ciwKQEAgLTM1MTIsNiArMzU2NywyOSBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0 b3IoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKChOb2RlICop IG5ld2NyZSk7CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld2NyZTsKIAkJCX0KKwkJY2FzZSBU X0pzb25WYWx1ZUV4cHI6CisJCQl7CisJCQkJSnNvblZhbHVlRXhwciAqanZlID0gKEpzb25W YWx1ZUV4cHIgKikgbm9kZTsKKwkJCQlOb2RlCSAgICpyYXcgPSBldmFsX2NvbnN0X2V4cHJl c3Npb25zX211dGF0b3IoKE5vZGUgKikganZlLT5yYXdfZXhwciwKKwkJCQkJCQkJCQkJCQkJ CQkgY29udGV4dCk7CisKKwkJCQlpZiAocmF3ICYmIElzQShyYXcsIENvbnN0KSkKKwkJCQl7 CisJCQkJCU5vZGUJICAgKmZvcm1hdHRlZDsKKwkJCQkJTm9kZQkgICAqc2F2ZV9jYXNlX3Zh bCA9IGNvbnRleHQtPmNhc2VfdmFsOworCisJCQkJCWNvbnRleHQtPmNhc2VfdmFsID0gcmF3 OworCisJCQkJCWZvcm1hdHRlZCA9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcigo Tm9kZSAqKSBqdmUtPmZvcm1hdHRlZF9leHByLAorCQkJCQkJCQkJCQkJCQkJCWNvbnRleHQp OworCisJCQkJCWNvbnRleHQtPmNhc2VfdmFsID0gc2F2ZV9jYXNlX3ZhbDsKKworCQkJCQlp ZiAoZm9ybWF0dGVkICYmIElzQShmb3JtYXR0ZWQsIENvbnN0KSkKKwkJCQkJCXJldHVybiBm b3JtYXR0ZWQ7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQogCQlkZWZhdWx0OgogCQkJYnJl YWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYjU5NjY3MTJjZS4uMDBmOTBlZWI1YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdy LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1l LmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9udW1lcmlj LmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAKQEAgLTI4MCw2ICsyODEsMTMgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlzdHJ1Y3QgR3JvdXBDbGF1c2UgICpncm91cGNs YXVzZTsKIAlzdHJ1Y3QgS2V5QWN0aW9ucwkqa2V5YWN0aW9uczsKIAlzdHJ1Y3QgS2V5QWN0 aW9uCSprZXlhY3Rpb247CisJSnNvbkJlaGF2aW9yCQkqanNiZWhhdmlvcjsKKwlzdHJ1Y3QK Kwl7CisJCUpzb25CZWhhdmlvcgkJKm9uX2VtcHR5OworCQlKc29uQmVoYXZpb3IJCSpvbl9l cnJvcjsKKwl9IAkJCQkJb25fYmVoYXZpb3I7CisJSnNvblF1b3RlcwkJCWpzX3F1b3RlczsK IH0KIAogJXR5cGUgPG5vZGU+CXN0bXQgdG9wbGV2ZWxfc3RtdCBzY2hlbWFfc3RtdCByb3V0 aW5lX2JvZHlfc3RtdApAQCAtNTU1LDcgKzU2Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAldHlwZSA8bGlzdD4JY29weV9vcHRpb25zCiAKICV0eXBlIDx0eXBuYW0+CVR5 cGVuYW1lIFNpbXBsZVR5cGVuYW1lIENvbnN0VHlwZW5hbWUKLQkJCQlHZW5lcmljVHlwZSBO dW1lcmljIG9wdF9mbG9hdAorCQkJCUdlbmVyaWNUeXBlIE51bWVyaWMgb3B0X2Zsb2F0IEpz b25UeXBlCiAJCQkJQ2hhcmFjdGVyIENvbnN0Q2hhcmFjdGVyCiAJCQkJQ2hhcmFjdGVyV2l0 aExlbmd0aCBDaGFyYWN0ZXJXaXRob3V0TGVuZ3RoCiAJCQkJQ29uc3REYXRldGltZSBDb25z dEludGVydmFsCkBAIC02MzQsNiArNjQyLDczIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQogCiAKKyV0eXBlIDxu b2RlPgkJanNvbl9mb3JtYXRfY2xhdXNlX29wdAorCQkJCQlqc29uX3JlcHJlc2VudGF0aW9u CisJCQkJCWpzb25fdmFsdWVfZXhwcgorCQkJCQlqc29uX2Z1bmNfZXhwcgorCQkJCQlqc29u X3ZhbHVlX2Z1bmNfZXhwcgorCQkJCQlqc29uX3F1ZXJ5X2V4cHIKKwkJCQkJanNvbl9leGlz dHNfcHJlZGljYXRlCisJCQkJCWpzb25fcGFyc2VfZXhwcgorCQkJCQlqc29uX3NjYWxhcl9l eHByCisJCQkJCWpzb25fc2VyaWFsaXplX2V4cHIKKwkJCQkJanNvbl9hcGlfY29tbW9uX3N5 bnRheAorCQkJCQlqc29uX2NvbnRleHRfaXRlbQorCQkJCQlqc29uX2FyZ3VtZW50CisJCQkJ CWpzb25fb3V0cHV0X2NsYXVzZV9vcHQKKwkJCQkJanNvbl9yZXR1cm5pbmdfY2xhdXNlX29w dAorCQkJCQlqc29uX3ZhbHVlX2NvbnN0cnVjdG9yCisJCQkJCWpzb25fb2JqZWN0X2NvbnN0 cnVjdG9yCisJCQkJCWpzb25fb2JqZWN0X2NvbnN0cnVjdG9yX2FyZ3MKKwkJCQkJanNvbl9v YmplY3RfY29uc3RydWN0b3JfYXJnc19vcHQKKwkJCQkJanNvbl9vYmplY3RfYXJncworCQkJ CQlqc29uX29iamVjdF9mdW5jX2FyZ3MKKwkJCQkJanNvbl9hcnJheV9jb25zdHJ1Y3Rvcgor CQkJCQlqc29uX25hbWVfYW5kX3ZhbHVlCisJCQkJCWpzb25fYWdncmVnYXRlX2Z1bmMKKwkJ CQkJanNvbl9vYmplY3RfYWdncmVnYXRlX2NvbnN0cnVjdG9yCisJCQkJCWpzb25fYXJyYXlf YWdncmVnYXRlX2NvbnN0cnVjdG9yCisJCQkJCWpzb25fcGF0aF9zcGVjaWZpY2F0aW9uCisK KyV0eXBlIDxsaXN0PgkJanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CisJCQkJCWpzb25fdmFs dWVfZXhwcl9saXN0CisJCQkJCWpzb25fYXJyYXlfYWdncmVnYXRlX29yZGVyX2J5X2NsYXVz ZV9vcHQKKwkJCQkJanNvbl9hcmd1bWVudHMKKwkJCQkJanNvbl9wYXNzaW5nX2NsYXVzZV9v cHQKKworJXR5cGUgPHN0cj4JCQlqc29uX3RhYmxlX3BhdGhfbmFtZQorCQkJCQlqc29uX2Fz X3BhdGhfbmFtZV9jbGF1c2Vfb3B0CisKKyV0eXBlIDxpdmFsPgkJanNvbl9lbmNvZGluZwor CQkJCQlqc29uX2VuY29kaW5nX2NsYXVzZV9vcHQKKwkJCQkJanNvbl93cmFwcGVyX2NsYXVz ZV9vcHQKKwkJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJCWpzb25fY29uZGl0aW9u YWxfb3JfdW5jb25kaXRpb25hbF9vcHQKKwkJCQkJanNvbl9wcmVkaWNhdGVfdHlwZV9jb25z dHJhaW50X29wdAorCisldHlwZSA8anNiZWhhdmlvcj4JanNvbl9iZWhhdmlvcl9lcnJvcgor CQkJCQlqc29uX2JlaGF2aW9yX251bGwKKwkJCQkJanNvbl9iZWhhdmlvcl90cnVlCisJCQkJ CWpzb25fYmVoYXZpb3JfZmFsc2UKKwkJCQkJanNvbl9iZWhhdmlvcl91bmtub3duCisJCQkJ CWpzb25fYmVoYXZpb3JfZW1wdHlfYXJyYXkKKwkJCQkJanNvbl9iZWhhdmlvcl9lbXB0eV9v YmplY3QKKwkJCQkJanNvbl9iZWhhdmlvcl9kZWZhdWx0CisJCQkJCWpzb25fdmFsdWVfYmVo YXZpb3IKKwkJCQkJanNvbl9xdWVyeV9iZWhhdmlvcgorCQkJCQlqc29uX2V4aXN0c19lcnJv cl9iZWhhdmlvcgorCQkJCQlqc29uX2V4aXN0c19lcnJvcl9jbGF1c2Vfb3B0CisKKyV0eXBl IDxvbl9iZWhhdmlvcj4ganNvbl92YWx1ZV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJ CWpzb25fcXVlcnlfb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCisldHlwZSA8anNfcXVvdGVz Pglqc29uX3F1b3Rlc19iZWhhdmlvcgorCQkJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisK KyV0eXBlIDxib29sZWFuPgkJanNvbl9rZXlfdW5pcXVlbmVzc19jb25zdHJhaW50X29wdAor CQkJCQlqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKKwkJCQkJanNv bl9hcnJheV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKKwogLyoKICAqIE5vbi1rZXl3 b3JkIHRva2VuIHR5cGVzLiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUgImZsZXgi IGxleGVyLgogICogVGhleSBtdXN0IGJlIGxpc3RlZCBmaXJzdCBzbyB0aGF0IHRoZWlyIG51 bWVyaWMgY29kZXMgZG8gbm90IGRlcGVuZCBvbgpAQCAtNjU5LDcgKzczNCw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICph bGlhc2VzLCBOb2RlICpxdWVyeSk7CiAgKi8KIAogLyogb3JkaW5hcnkga2V5IHdvcmRzIGlu IGFscGhhYmV0aWNhbCBvcmRlciAqLwotJXRva2VuIDxrZXl3b3JkPiBBQk9SVF9QIEFCU09M VVRFX1AgQUNDRVNTIEFDVElPTiBBRERfUCBBRE1JTiBBRlRFUgorJXRva2VuIDxrZXl3b3Jk PiBBQk9SVF9QIEFCU0VOVCBBQlNPTFVURV9QIEFDQ0VTUyBBQ1RJT04gQUREX1AgQURNSU4g QUZURVIKIAlBR0dSRUdBVEUgQUxMIEFMU08gQUxURVIgQUxXQVlTIEFOQUxZU0UgQU5BTFla RSBBTkQgQU5ZIEFSUkFZIEFTIEFTQwogCUFTRU5TSVRJVkUgQVNTRVJUSU9OIEFTU0lHTk1F TlQgQVNZTU1FVFJJQyBBVE9NSUMgQVQgQVRUQUNIIEFUVFJJQlVURSBBVVRIT1JJWkFUSU9O CiAKQEAgLTY2OSw3ICs3NDQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNB Q0hFIENBTEwgQ0FMTEVEIENBU0NBREUgQ0FTQ0FERUQgQ0FTRSBDQVNUIENBVEFMT0dfUCBD SEFJTiBDSEFSX1AKIAlDSEFSQUNURVIgQ0hBUkFDVEVSSVNUSUNTIENIRUNLIENIRUNLUE9J TlQgQ0xBU1MgQ0xPU0UKIAlDTFVTVEVSIENPQUxFU0NFIENPTExBVEUgQ09MTEFUSU9OIENP TFVNTiBDT0xVTU5TIENPTU1FTlQgQ09NTUVOVFMgQ09NTUlUCi0JQ09NTUlUVEVEIENPTVBS RVNTSU9OIENPTkNVUlJFTlRMWSBDT05GSUdVUkFUSU9OIENPTkZMSUNUCisJQ09NTUlUVEVE IENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05ESVRJT05BTCBDT05GSUdVUkFUSU9OIENP TkZMSUNUCiAJQ09OTkVDVElPTiBDT05TVFJBSU5UIENPTlNUUkFJTlRTIENPTlRFTlRfUCBD T05USU5VRV9QIENPTlZFUlNJT05fUCBDT1BZCiAJQ09TVCBDUkVBVEUgQ1JPU1MgQ1NWIENV QkUgQ1VSUkVOVF9QCiAJQ1VSUkVOVF9DQVRBTE9HIENVUlJFTlRfREFURSBDVVJSRU5UX1JP TEUgQ1VSUkVOVF9TQ0hFTUEKQEAgLTY4MCwxMiArNzU1LDEyIEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJREVUQUNIIERJQ1RJT05BUlkgRElTQUJMRV9QIERJU0NBUkQgRElT VElOQ1QgRE8gRE9DVU1FTlRfUCBET01BSU5fUAogCURPVUJMRV9QIERST1AKIAotCUVBQ0gg RUxTRSBFTkFCTEVfUCBFTkNPRElORyBFTkNSWVBURUQgRU5EX1AgRU5VTV9QIEVTQ0FQRSBF VkVOVCBFWENFUFQKLQlFWENMVURFIEVYQ0xVRElORyBFWENMVVNJVkUgRVhFQ1VURSBFWElT VFMgRVhQTEFJTiBFWFBSRVNTSU9OCisJRUFDSCBFTFNFIEVNUFRZX1AgRU5BQkxFX1AgRU5D T0RJTkcgRU5DUllQVEVEIEVORF9QIEVOVU1fUCBFUlJPUl9QIEVTQ0FQRQorCUVWRU5UIEVY Q0VQVCBFWENMVURFIEVYQ0xVRElORyBFWENMVVNJVkUgRVhFQ1VURSBFWElTVFMgRVhQTEFJ TiBFWFBSRVNTSU9OCiAJRVhURU5TSU9OIEVYVEVSTkFMIEVYVFJBQ1QKIAogCUZBTFNFX1Ag RkFNSUxZIEZFVENIIEZJTFRFUiBGSU5BTElaRSBGSVJTVF9QIEZMT0FUX1AgRk9MTE9XSU5H IEZPUgotCUZPUkNFIEZPUkVJR04gRk9SV0FSRCBGUkVFWkUgRlJPTSBGVUxMIEZVTkNUSU9O IEZVTkNUSU9OUworCUZPUkNFIEZPUkVJR04gRk9STUFUIEZPUldBUkQgRlJFRVpFIEZST00g RlVMTCBGVU5DVElPTiBGVU5DVElPTlMKIAogCUdFTkVSQVRFRCBHTE9CQUwgR1JBTlQgR1JB TlRFRCBHUkVBVEVTVCBHUk9VUF9QIEdST1VQSU5HIEdST1VQUwogCkBAIC02OTYsOSArNzcx LDEwIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSU5ORVJfUCBJTk9VVCBJTlBV VF9QIElOU0VOU0lUSVZFIElOU0VSVCBJTlNURUFEIElOVF9QIElOVEVHRVIKIAlJTlRFUlNF Q1QgSU5URVJWQUwgSU5UTyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAotCUpPSU4K KwlKT0lOIEpTT04gSlNPTl9BUlJBWSBKU09OX0FSUkFZQUdHIEpTT05fRVhJU1RTIEpTT05f T0JKRUNUIEpTT05fT0JKRUNUQUdHCisJSlNPTl9RVUVSWSBKU09OX1NDQUxBUiBKU09OX1NF UklBTElaRSBKU09OX1ZBTFVFCiAKLQlLRVkKKwlLRVkgS0VZUyBLRUVQCiAKIAlMQUJFTCBM QU5HVUFHRSBMQVJHRV9QIExBU1RfUCBMQVRFUkFMX1AKIAlMRUFESU5HIExFQUtQUk9PRiBM RUFTVCBMRUZUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKQEAgLTcxMSw3 ICs3ODcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU5PVCBOT1RISU5HIE5P VElGWSBOT1ROVUxMIE5PV0FJVCBOVUxMX1AgTlVMTElGCiAJTlVMTFNfUCBOVU1FUklDCiAK LQlPQkpFQ1RfUCBPRiBPRkYgT0ZGU0VUIE9JRFMgT0xEIE9OIE9OTFkgT1BFUkFUT1IgT1BU SU9OIE9QVElPTlMgT1IKKwlPQkpFQ1RfUCBPRiBPRkYgT0ZGU0VUIE9JRFMgT0xEIE9NSVQg T04gT05MWSBPUEVSQVRPUiBPUFRJT04gT1BUSU9OUyBPUgogCU9SREVSIE9SRElOQUxJVFkg T1RIRVJTIE9VVF9QIE9VVEVSX1AKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElO RyBPV05FRCBPV05FUgogCkBAIC03MTksMTcgKzc5NSwxNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJF UEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBS T0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIAotCVFVT1RFCisJUVVP VEUgUVVPVEVTCiAKIAlSQU5HRSBSRUFEIFJFQUwgUkVBU1NJR04gUkVDSEVDSyBSRUNVUlNJ VkUgUkVGIFJFRkVSRU5DRVMgUkVGRVJFTkNJTkcKIAlSRUZSRVNIIFJFSU5ERVggUkVMQVRJ VkVfUCBSRUxFQVNFIFJFTkFNRSBSRVBFQVRBQkxFIFJFUExBQ0UgUkVQTElDQQogCVJFU0VU IFJFU1RBUlQgUkVTVFJJQ1QgUkVUVVJOIFJFVFVSTklORyBSRVRVUk5TIFJFVk9LRSBSSUdI VCBST0xFIFJPTExCQUNLIFJPTExVUAogCVJPVVRJTkUgUk9VVElORVMgUk9XIFJPV1MgUlVM RQogCi0JU0FWRVBPSU5UIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1Ag U0VDVVJJVFkgU0VMRUNUIFNFUVVFTkNFIFNFUVVFTkNFUwotCVNFUklBTElaQUJMRSBTRVJW RVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwotCVNJ TUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUUxfUCBTVEFCTEUg U1RBTkRBTE9ORV9QCi0JU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VU IFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklQX1AKKwlTQVZFUE9JTlQgU0NBTEFSIFND SEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VMRUNUCisJ U0VRVUVOQ0UgU0VRVUVOQ0VTIFNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9O X1VTRVIgU0VUIFNFVFMgU0VUT0YKKwlTSEFSRSBTSE9XIFNJTUlMQVIgU0lNUExFIFNLSVAg U01BTExJTlQgU05BUFNIT1QgU09NRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCisJU1RB UlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNU UklDVF9QIFNUUklORyBTVFJJUF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JU IFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUAogCiAJVEFCTEUgVEFCTEVTIFRBQkxFU0FNUExF IFRBQkxFU1BBQ0UgVEVNUCBURU1QTEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KQEAgLTcz Nyw3ICs4MTMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVRSRUFUIFRSSUdH RVIgVFJJTSBUUlVFX1AKIAlUUlVOQ0FURSBUUlVTVEVEIFRZUEVfUCBUWVBFU19QCiAKLQlV RVNDQVBFIFVOQk9VTkRFRCBVTkNPTU1JVFRFRCBVTkVOQ1JZUFRFRCBVTklPTiBVTklRVUUg VU5LTk9XTgorCVVFU0NBUEUgVU5CT1VOREVEIFVOQ09ORElUSU9OQUwgVU5DT01NSVRURUQg VU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05PV04KIAlVTkxJU1RFTiBVTkxPR0dFRCBV TlRJTCBVUERBVEUgVVNFUiBVU0lORwogCiAJVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElE QVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElDIFZBUllJTkcKQEAgLTc2Miw3 ICs4MzgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICogYXMgTk9ULCBhdCBs ZWFzdCB3aXRoIHJlc3BlY3QgdG8gdGhlaXIgbGVmdC1oYW5kIHN1YmV4cHJlc3Npb24uCiAg KiBOVUxMU19MQSBhbmQgV0lUSF9MQSBhcmUgbmVlZGVkIHRvIG1ha2UgdGhlIGdyYW1tYXIg TEFMUigxKS4KICAqLwotJXRva2VuCQlOT1RfTEEgTlVMTFNfTEEgV0lUSF9MQQorJXRva2Vu CQlOT1RfTEEgTlVMTFNfTEEgV0lUSF9MQSBXSVRIX0xBX1VOSVFVRSBXSVRIT1VUX0xBCiAK IC8qCiAgKiBUaGUgZ3JhbW1hciBsaWtld2lzZSB0aGlua3MgdGhlc2UgdG9rZW5zIGFyZSBr ZXl3b3JkcywgYnV0IHRoZXkgYXJlIG5ldmVyCkBAIC03ODAsNiArODU2LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogLyogUHJlY2VkZW5jZTogbG93ZXN0IHRvIGhpZ2hl c3QgKi8KICVub25hc3NvYwlTRVQJCQkJLyogc2VlIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFz ICovCislcmlnaHQJCUZPUk1BVAogJWxlZnQJCVVOSU9OIEVYQ0VQVAogJWxlZnQJCUlOVEVS U0VDVAogJWxlZnQJCU9SCkBAIC04MTUsMTEgKzg5MiwxNSBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogICogVXNpbmcgdGhlIHNhbWUgcHJlY2VkZW5jZSBhcyBJREVOVCBzZWVt cyByaWdodCBmb3IgdGhlIHJlYXNvbnMgZ2l2ZW4gYWJvdmUuCiAgKi8KICVub25hc3NvYwlV TkJPVU5ERUQJCS8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2UgYXMgSURF TlQgKi8KKyVub25hc3NvYwlFUlJPUl9QIEVNUFRZX1AgREVGQVVMVCBBQlNFTlQgLyogSlNP TiBlcnJvci9lbXB0eSBiZWhhdmlvciAqLworJW5vbmFzc29jCUZBTFNFX1AgS0VFUCBPTUlU IFBBU1NJTkcgVFJVRV9QIFVOS05PV04gVU5JUVVFIEpTT04KICVub25hc3NvYwlJREVOVCBQ QVJUSVRJT04gUkFOR0UgUk9XUyBHUk9VUFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJP TExVUAogJWxlZnQJCU9wIE9QRVJBVE9SCQkvKiBtdWx0aS1jaGFyYWN0ZXIgb3BzIGFuZCB1 c2VyLWRlZmluZWQgb3BlcmF0b3JzICovCiAlbGVmdAkJJysnICctJwogJWxlZnQJCScqJyAn LycgJyUnCiAlbGVmdAkJJ14nCislbGVmdAkJS0VZUwkJCQkJCS8qIFVOSVFVRSBbIEtFWVMg XSAqLworJWxlZnQJCU9CSkVDVF9QIFNDQUxBUiBWQUxVRV9QCQkvKiBKU09OIFsgT0JKRUNU IHwgU0NBTEFSIHwgVkFMVUUgXSAqLwogLyogVW5hcnkgT3BlcmF0b3JzICovCiAlbGVmdAkJ QVQJCQkJLyogc2V0cyBwcmVjZWRlbmNlIGZvciBBVCBUSU1FIFpPTkUgKi8KICVsZWZ0CQlD T0xMQVRFCkBAIC04MzcsNiArOTE4LDkgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK ICAqLwogJWxlZnQJCUpPSU4gQ1JPU1MgTEVGVCBGVUxMIFJJR0hUIElOTkVSX1AgTkFUVVJB TAogCislbm9uYXNzb2MJZW1wdHlfanNvbl91bmlxdWUKKyVsZWZ0CQlXSVRIT1VUIFdJVEhf TEFfVU5JUVVFCisKICUlCiAKIC8qCkBAIC0xMzAxNyw2ICsxMzEwMSw3IEBAIFNpbXBsZVR5 cGVuYW1lOgogCQkJCQkkJC0+dHlwbW9kcyA9IGxpc3RfbWFrZTIobWFrZUludENvbnN0KElO VEVSVkFMX0ZVTExfUkFOR0UsIC0xKSwKIAkJCQkJCQkJCQkJIG1ha2VJbnRDb25zdCgkMywg QDMpKTsKIAkJCQl9CisJCQl8IEpzb25UeXBlCQkJCQkJCQl7ICQkID0gJDE7IH0KIAkJOwog CiAvKiBXZSBoYXZlIGEgc2VwYXJhdGUgQ29uc3RUeXBlbmFtZSB0byBhbGxvdyBkZWZhdWx0 aW5nIGZpeGVkLWxlbmd0aApAQCAtMTMwMzUsNiArMTMxMjAsNyBAQCBDb25zdFR5cGVuYW1l OgogCQkJfCBDb25zdEJpdAkJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IENvbnN0Q2hhcmFj dGVyCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IENvbnN0RGF0ZXRpbWUJCQkJCQkJeyAkJCA9 ICQxOyB9CisJCQl8IEpzb25UeXBlCQkJCQkJCQl7ICQkID0gJDE7IH0KIAkJOwogCiAvKgpA QCAtMTMzMjgsNyArMTM0MTQsNyBAQCBDb25zdEludGVydmFsOgogCiBvcHRfdGltZXpvbmU6 CiAJCQlXSVRIX0xBIFRJTUUgWk9ORQkJCQkJCXsgJCQgPSB0cnVlOyB9Ci0JCQl8IFdJVEhP VVQgVElNRSBaT05FCQkJCQkJeyAkJCA9IGZhbHNlOyB9CisJCQl8IFdJVEhPVVRfTEEgVElN RSBaT05FCQkJCQl7ICQkID0gZmFsc2U7IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQk ID0gZmFsc2U7IH0KIAkJOwogCkBAIC0xMzQwMyw2ICsxMzQ4OSwxNCBAQCBpbnRlcnZhbF9z ZWNvbmQ6CiAJCQkJfQogCQk7CiAKKy8qIE1hcHBpbmcgb2YgUEcganNvbmIgdHlwZXMgdG8g U1FML0pTT04gSlNPTiB0eXBlICovCitKc29uVHlwZToKKwkJCUpTT04KKwkJCQl7CisJCQkJ CSQkID0gU3lzdGVtVHlwZU5hbWUoU1FMSlNPTl9UWVBFX05BTUUoKSk7CisJCQkJCSQkLT5s b2NhdGlvbiA9IEAxOworCQkJCX0KKwkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ICAqCkBAIC0xMzg1OSw2ICsxMzk1Myw0NiBAQCBhX2V4cHI6CQljX2V4cHIJCQkJCQkJCQl7 ICQkID0gJDE7IH0KIAkJCQkJCQkJCQkJCQkJICAgQDIpLAogCQkJCQkJCQkJIEAyKTsKIAkJ CQl9CisJCQl8IGFfZXhwcgorCQkJCUlTIGpzb25fcHJlZGljYXRlX3R5cGVfY29uc3RyYWlu dF9vcHQKKwkJCQkJanNvbl9rZXlfdW5pcXVlbmVzc19jb25zdHJhaW50X29wdAkJJXByZWMg SVMKKwkJCQl7CisJCQkJCUpzb25Gb3JtYXQgKmZvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpT X0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQkJCQkkJCA9IG1ha2VK c29uSXNQcmVkaWNhdGUoJDEsIGZvcm1hdCwgJDMsICQ0LCBAMSk7CisJCQkJfQorCQkJLyoK KwkJCSAqIFJlcXVpcmVkIGJ5IHN0YW5kYXJkLCBidXQgaXQgd291bGQgY29uZmxpY3Qgd2l0 aCBleHByZXNzaW9ucworCQkJICogbGlrZTogJ3N0cicgfHwgZm9ybWF0KC4uLikKKwkJCXwg YV9leHByCisJCQkJRk9STUFUIGpzb25fcmVwcmVzZW50YXRpb24KKwkJCQlJUyAganNvbl9w cmVkaWNhdGVfdHlwZV9jb25zdHJhaW50X29wdAorCQkJCQlqc29uX2tleV91bmlxdWVuZXNz X2NvbnN0cmFpbnRfb3B0CQklcHJlYyBGT1JNQVQKKwkJCQl7CisJCQkJCSQzLmxvY2F0aW9u ID0gQDI7CisJCQkJCSQkID0gbWFrZUpzb25Jc1ByZWRpY2F0ZSgkMSwgJDMsICQ1LCAkNiwg QDEpOworCQkJCX0KKwkJCSovCisJCQl8IGFfZXhwcgorCQkJCUlTIE5PVAorCQkJCQlqc29u X3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnRfb3B0CisJCQkJCWpzb25fa2V5X3VuaXF1ZW5l c3NfY29uc3RyYWludF9vcHQJCSVwcmVjIElTCisJCQkJeworCQkJCQlKc29uRm9ybWF0ICpm b3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFV TFQsIC0xKTsKKwkJCQkJJCQgPSBtYWtlTm90RXhwcihtYWtlSnNvbklzUHJlZGljYXRlKCQx LCBmb3JtYXQsICQ0LCAkNSwgQDEpLCBAMSk7CisJCQkJfQorCQkJLyoKKwkJCSAqIFJlcXVp cmVkIGJ5IHN0YW5kYXJkLCBidXQgaXQgd291bGQgY29uZmxpY3Qgd2l0aCBleHByZXNzaW9u cworCQkJICogbGlrZTogJ3N0cicgfHwgZm9ybWF0KC4uLikKKwkJCXwgYV9leHByCisJCQkJ Rk9STUFUIGpzb25fcmVwcmVzZW50YXRpb24KKwkJCQlJUyBOT1QKKwkJCQkJanNvbl9wcmVk aWNhdGVfdHlwZV9jb25zdHJhaW50X29wdAorCQkJCQlqc29uX2tleV91bmlxdWVuZXNzX2Nv bnN0cmFpbnRfb3B0CQklcHJlYyBGT1JNQVQKKwkJCQl7CisJCQkJCSQzLmxvY2F0aW9uID0g QDI7CisJCQkJCSQkID0gbWFrZU5vdEV4cHIobWFrZUpzb25Jc1ByZWRpY2F0ZSgkMSwgJDMs ICQ2LCAkNywgQDEpLCBAMSk7CisJCQkJfQorCQkJKi8KIAkJCXwgREVGQVVMVAogCQkJCXsK IAkJCQkJLyoKQEAgLTEzOTQxLDYgKzE0MDc1LDI1IEBAIGJfZXhwcjoJCWNfZXhwcgogCQkJ CX0KIAkJOwogCitqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnRfb3B0OgorCQkJSlNP TgkJCQkJCQkJCXsgJCQgPSBKU19UWVBFX0FOWTsgfQorCQkJfCBKU09OIFZBTFVFX1AJCQkJ CQkJeyAkJCA9IEpTX1RZUEVfQU5ZOyB9CisJCQl8IEpTT04gQVJSQVkJCQkJCQkJeyAkJCA9 IEpTX1RZUEVfQVJSQVk7IH0KKwkJCXwgSlNPTiBPQkpFQ1RfUAkJCQkJCQl7ICQkID0gSlNf VFlQRV9PQkpFQ1Q7IH0KKwkJCXwgSlNPTiBTQ0FMQVIJCQkJCQkJeyAkJCA9IEpTX1RZUEVf U0NBTEFSOyB9CisJCTsKKworanNvbl9rZXlfdW5pcXVlbmVzc19jb25zdHJhaW50X29wdDoK KwkJCVdJVEhfTEFfVU5JUVVFIHVuaXF1ZV9rZXlzCQkJCXsgJCQgPSB0cnVlOyB9CisJCQl8 IFdJVEhPVVQgdW5pcXVlX2tleXMJCQkJCXsgJCQgPSBmYWxzZTsgfQorCQkJfCAvKiBFTVBU WSAqLyAlcHJlYyBlbXB0eV9qc29uX3VuaXF1ZQl7ICQkID0gZmFsc2U7IH0KKwkJOworCit1 bmlxdWVfa2V5czoKKwkJCVVOSVFVRQorCQkJfCBVTklRVUUgS0VZUworCQk7CisKIC8qCiAg KiBQcm9kdWN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGluIGJvdGggYV9leHByIGFuZCBiX2V4 cHIuCiAgKgpAQCAtMTQxOTMsNiArMTQzNDYsMTUgQEAgZnVuY19leHByOiBmdW5jX2FwcGxp Y2F0aW9uIHdpdGhpbl9ncm91cF9jbGF1c2UgZmlsdGVyX2NsYXVzZSBvdmVyX2NsYXVzZQog CQkJCQluLT5vdmVyID0gJDQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8 IGpzb25fYWdncmVnYXRlX2Z1bmMgZmlsdGVyX2NsYXVzZSBvdmVyX2NsYXVzZQorCQkJCXsK KwkJCQkJSnNvbkFnZ0NvbnN0cnVjdG9yICpuID0gSXNBKCQxLCBKc29uT2JqZWN0QWdnKSA/ CisJCQkJCQkoKEpzb25PYmplY3RBZ2cgKikgJDEpLT5jb25zdHJ1Y3RvciA6CisJCQkJCQko KEpzb25BcnJheUFnZyAqKSAkMSktPmNvbnN0cnVjdG9yOworCQkJCQluLT5hZ2dfZmlsdGVy ID0gJDI7CisJCQkJCW4tPm92ZXIgPSAkMzsKKwkJCQkJJCQgPSAoTm9kZSAqKSAkMTsKKwkJ CQl9CiAJCQl8IGZ1bmNfZXhwcl9jb21tb25fc3ViZXhwcgogCQkJCXsgJCQgPSAkMTsgfQog CQk7CkBAIC0xNDIwNiw2ICsxNDM2OCw3IEBAIGZ1bmNfZXhwcjogZnVuY19hcHBsaWNhdGlv biB3aXRoaW5fZ3JvdXBfY2xhdXNlIGZpbHRlcl9jbGF1c2Ugb3Zlcl9jbGF1c2UKIGZ1bmNf ZXhwcl93aW5kb3dsZXNzOgogCQkJZnVuY19hcHBsaWNhdGlvbgkJCQkJCXsgJCQgPSAkMTsg fQogCQkJfCBmdW5jX2V4cHJfY29tbW9uX3N1YmV4cHIJCQkJeyAkJCA9ICQxOyB9CisJCQl8 IGpzb25fYWdncmVnYXRlX2Z1bmMJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKIC8qCkBAIC0x NDQ5Myw2ICsxNDY1Niw4IEBAIGZ1bmNfZXhwcl9jb21tb25fc3ViZXhwcjoKIAkJCQkJbi0+ bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQorCQkJfCBqc29u X2Z1bmNfZXhwcgorCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKIC8qCkBAIC0xNTE5MSw2ICsx NTM1Niw1MzAgQEAgb3B0X2FzeW1tZXRyaWM6IEFTWU1NRVRSSUMKIAkJCXwgLypFTVBUWSov CiAJCTsKIAorLyogU1FML0pTT04gc3VwcG9ydCAqLworanNvbl9mdW5jX2V4cHI6CisJCQlq c29uX3ZhbHVlX2NvbnN0cnVjdG9yCisJCQl8IGpzb25fdmFsdWVfZnVuY19leHByCisJCQl8 IGpzb25fcXVlcnlfZXhwcgorCQkJfCBqc29uX2V4aXN0c19wcmVkaWNhdGUKKwkJCXwganNv bl9wYXJzZV9leHByCisJCQl8IGpzb25fc2NhbGFyX2V4cHIKKwkJCXwganNvbl9zZXJpYWxp emVfZXhwcgorCQk7CisKK2pzb25fcGFyc2VfZXhwcjoKKwkJCUpTT04gJygnIGpzb25fdmFs dWVfZXhwciBqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CisJCQkJCSBqc29u X3JldHVybmluZ19jbGF1c2Vfb3B0ICcpJworCQkJCXsKKwkJCQkJSnNvblBhcnNlRXhwciAq biA9IG1ha2VOb2RlKEpzb25QYXJzZUV4cHIpOworCQkJCQluLT5leHByID0gKEpzb25WYWx1 ZUV4cHIgKikgJDM7CisJCQkJCW4tPnVuaXF1ZV9rZXlzID0gJDQ7CisJCQkJCW4tPm91dHB1 dCA9IChKc29uT3V0cHV0ICopICQ1OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkk JCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fc2NhbGFyX2V4cHI6CisJCQlK U09OX1NDQUxBUiAnKCcgYV9leHByIGpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQgJyknCisJ CQkJeworCQkJCQlKc29uU2NhbGFyRXhwciAqbiA9IG1ha2VOb2RlKEpzb25TY2FsYXJFeHBy KTsKKwkJCQkJbi0+ZXhwciA9IChFeHByICopICQzOworCQkJCQluLT5vdXRwdXQgPSAoSnNv bk91dHB1dCAqKSAkNDsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9k ZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3NlcmlhbGl6ZV9leHByOgorCQkJSlNPTl9T RVJJQUxJWkUgJygnIGpzb25fdmFsdWVfZXhwciBqc29uX291dHB1dF9jbGF1c2Vfb3B0ICcp JworCQkJCXsKKwkJCQkJSnNvblNlcmlhbGl6ZUV4cHIgKm4gPSBtYWtlTm9kZShKc29uU2Vy aWFsaXplRXhwcik7CisJCQkJCW4tPmV4cHIgPSAoSnNvblZhbHVlRXhwciAqKSAkMzsKKwkJ CQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDQ7CisJCQkJCW4tPmxvY2F0aW9uID0g QDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworanNvbl92YWx1ZV9m dW5jX2V4cHI6CisJCQlKU09OX1ZBTFVFICcoJworCQkJCWpzb25fYXBpX2NvbW1vbl9zeW50 YXgKKwkJCQlqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0CisJCQkJanNvbl92YWx1ZV9vbl9i ZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQknKScKKwkJCQl7CisJCQkJCUpzb25GdW5jRXhwciAq biA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJCQkJCW4tPm9wID0gSVNfSlNPTl9WQUxV RTsKKwkJCQkJbi0+Y29tbW9uID0gKEpzb25Db21tb24gKikgJDM7CisJCQkJCW4tPm91dHB1 dCA9IChKc29uT3V0cHV0ICopICQ0OworCQkJCQluLT5vbl9lbXB0eSA9ICQ1Lm9uX2VtcHR5 OworCQkJCQluLT5vbl9lcnJvciA9ICQ1Lm9uX2Vycm9yOworCQkJCQluLT5sb2NhdGlvbiA9 IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fYXBpX2Nv bW1vbl9zeW50YXg6CisJCQlqc29uX2NvbnRleHRfaXRlbSAnLCcganNvbl9wYXRoX3NwZWNp ZmljYXRpb24KKwkJCWpzb25fYXNfcGF0aF9uYW1lX2NsYXVzZV9vcHQKKwkJCWpzb25fcGFz c2luZ19jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29uQ29tbW9uICpuID0gbWFrZU5vZGUo SnNvbkNvbW1vbik7CisJCQkJCW4tPmV4cHIgPSAoSnNvblZhbHVlRXhwciAqKSAkMTsKKwkJ CQkJbi0+cGF0aHNwZWMgPSAkMzsKKwkJCQkJbi0+cGF0aG5hbWUgPSAkNDsKKwkJCQkJbi0+ cGFzc2luZyA9ICQ1OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2Rl ICopIG47CisJCQkJfQorCQk7CisKK2pzb25fY29udGV4dF9pdGVtOgorCQkJanNvbl92YWx1 ZV9leHByCQkJCQkJCXsgJCQgPSAkMTsgfQorCQk7CisKK2pzb25fcGF0aF9zcGVjaWZpY2F0 aW9uOgorCQkJYV9leHByCQkJCQkJCQkJeyAkJCA9ICQxOyB9CisJCTsKKworanNvbl9hc19w YXRoX25hbWVfY2xhdXNlX29wdDoKKwkJCSBBUyBqc29uX3RhYmxlX3BhdGhfbmFtZQkJCQl7 ICQkID0gJDI7IH0KKwkJCSB8IC8qIEVNUFRZICovCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJ CTsKKworanNvbl90YWJsZV9wYXRoX25hbWU6CisJCQluYW1lCQkJCQkJCQkJeyAkJCA9ICQx OyB9CisJCTsKKworanNvbl9wYXNzaW5nX2NsYXVzZV9vcHQ6CisJCQlQQVNTSU5HIGpzb25f YXJndW1lbnRzCQkJCQl7ICQkID0gJDI7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAk JCA9IE5JTDsgfQorCQk7CisKK2pzb25fYXJndW1lbnRzOgorCQkJanNvbl9hcmd1bWVudAkJ CQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwganNvbl9hcmd1bWVudHMgJywn IGpzb25fYXJndW1lbnQJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitqc29u X2FyZ3VtZW50OgorCQkJanNvbl92YWx1ZV9leHByIEFTIENvbExhYmVsCisJCQl7CisJCQkJ SnNvbkFyZ3VtZW50ICpuID0gbWFrZU5vZGUoSnNvbkFyZ3VtZW50KTsKKwkJCQluLT52YWwg PSAoSnNvblZhbHVlRXhwciAqKSAkMTsKKwkJCQluLT5uYW1lID0gJDM7CisJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJfQorCQk7CisKK2pzb25fdmFsdWVfZXhwcjoKKwkJCWFfZXhwciBq c29uX2Zvcm1hdF9jbGF1c2Vfb3B0CisJCQl7CisJCQkJJCQgPSAoTm9kZSAqKSBtYWtlSnNv blZhbHVlRXhwcigoRXhwciAqKSAkMSwgY2FzdE5vZGUoSnNvbkZvcm1hdCwgJDIpKTsKKwkJ CX0KKwkJOworCitqc29uX2Zvcm1hdF9jbGF1c2Vfb3B0OgorCQkJRk9STUFUIGpzb25fcmVw cmVzZW50YXRpb24KKwkJCQl7CisJCQkJCSQkID0gJDI7CisJCQkJCWNhc3ROb2RlKEpzb25G b3JtYXQsICQkKS0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJCQl8IC8qIEVNUFRZICovCisJ CQkJeworCQkJCQkkJCA9IChOb2RlICopIG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZB VUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQkJCX0KKwkJOworCitqc29uX3JlcHJlc2Vu dGF0aW9uOgorCQkJSlNPTiBqc29uX2VuY29kaW5nX2NsYXVzZV9vcHQKKwkJCQl7CisJCQkJ CSQkID0gKE5vZGUgKikgbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0pTT04sICQyLCBAMSk7 CisJCQkJfQorCQkvKgl8IG90aGVyIGltcGxlbWVudGF0aW9uIGRlZmluZWQgSlNPTiByZXBy ZXNlbnRhdGlvbiBvcHRpb25zIChCU09OLCBBVlJPIGV0YykgKi8KKwkJOworCitqc29uX2Vu Y29kaW5nX2NsYXVzZV9vcHQ6CisJCQlFTkNPRElORyBqc29uX2VuY29kaW5nCQkJCQl7ICQk ID0gJDI7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IEpTX0VOQ19ERUZBVUxU OyB9CisJCTsKKworanNvbl9lbmNvZGluZzoKKwkJCW5hbWUJCQkJCQkJCQl7ICQkID0gbWFr ZUpzb25FbmNvZGluZygkMSk7IH0KKwkJOworCitqc29uX2JlaGF2aW9yX2Vycm9yOgorCQkJ RVJST1JfUAkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FUlJPUiwg TlVMTCk7IH0KKwkJOworCitqc29uX2JlaGF2aW9yX251bGw6CisJCQlOVUxMX1AJCXsgJCQg PSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfTlVMTCwgTlVMTCk7IH0KKwkJOwor Citqc29uX2JlaGF2aW9yX3RydWU6CisJCQlUUlVFX1AJCXsgJCQgPSBtYWtlSnNvbkJlaGF2 aW9yKEpTT05fQkVIQVZJT1JfVFJVRSwgTlVMTCk7IH0KKwkJOworCitqc29uX2JlaGF2aW9y X2ZhbHNlOgorCQkJRkFMU0VfUAkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhB VklPUl9GQUxTRSwgTlVMTCk7IH0KKwkJOworCitqc29uX2JlaGF2aW9yX3Vua25vd246CisJ CQlVTktOT1dOCQl7ICQkID0gbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9SX1VOS05P V04sIE5VTEwpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl9lbXB0eV9hcnJheToKKwkJCUVN UFRZX1AgQVJSQVkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FTVBU WV9BUlJBWSwgTlVMTCk7IH0KKwkJCS8qIG5vbi1zdGFuZGFyZCwgZm9yIE9yYWNsZSBjb21w YXRpYmlsaXR5IG9ubHkgKi8KKwkJCXwgRU1QVFlfUCAJCXsgJCQgPSBtYWtlSnNvbkJlaGF2 aW9yKEpTT05fQkVIQVZJT1JfRU1QVFlfQVJSQVksIE5VTEwpOyB9CisJCTsKKworanNvbl9i ZWhhdmlvcl9lbXB0eV9vYmplY3Q6CisJCQlFTVBUWV9QIE9CSkVDVF9QCXsgJCQgPSBtYWtl SnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfRU1QVFlfT0JKRUNULCBOVUxMKTsgfQorCQk7 CisKK2pzb25fYmVoYXZpb3JfZGVmYXVsdDoKKwkJCURFRkFVTFQgYV9leHByCXsgJCQgPSBt YWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfREVGQVVMVCwgJDIpOyB9CisJCTsKKwor Citqc29uX3ZhbHVlX2JlaGF2aW9yOgorCQkJanNvbl9iZWhhdmlvcl9udWxsCisJCQl8IGpz b25fYmVoYXZpb3JfZXJyb3IKKwkJCXwganNvbl9iZWhhdmlvcl9kZWZhdWx0CisJCTsKKwor anNvbl92YWx1ZV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl92YWx1ZV9iZWhh dmlvciBPTiBFTVBUWV9QCisJCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0gJDE7ICQkLm9uX2Vy cm9yID0gTlVMTDsgfQorCQkJfCBqc29uX3ZhbHVlX2JlaGF2aW9yIE9OIEVNUFRZX1AganNv bl92YWx1ZV9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0g JDE7ICQkLm9uX2Vycm9yID0gJDQ7IH0KKwkJCXwganNvbl92YWx1ZV9iZWhhdmlvciBPTiBF UlJPUl9QCisJCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0gTlVMTDsgJCQub25fZXJyb3IgPSAk MTsgfQorCQkJfCAgLyogRU1QVFkgKi8KKwkJCQkJCQkJCXsgJCQub25fZW1wdHkgPSBOVUxM OyAkJC5vbl9lcnJvciA9IE5VTEw7IH0KKwkJOworCitqc29uX3F1ZXJ5X2V4cHI6CisJCQlK U09OX1FVRVJZICcoJworCQkJCWpzb25fYXBpX2NvbW1vbl9zeW50YXgKKwkJCQlqc29uX291 dHB1dF9jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2NsYXVzZV9vcHQKKwkJCQlqc29u X3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl9xdWVyeV9vbl9iZWhhdmlvcl9jbGF1c2Vf b3B0CisJCQknKScKKwkJCQl7CisJCQkJCUpzb25GdW5jRXhwciAqbiA9IG1ha2VOb2RlKEpz b25GdW5jRXhwcik7CisJCQkJCW4tPm9wID0gSVNfSlNPTl9RVUVSWTsKKwkJCQkJbi0+Y29t bW9uID0gKEpzb25Db21tb24gKikgJDM7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0 ICopICQ0OworCQkJCQluLT53cmFwcGVyID0gJDU7CisJCQkJCWlmIChuLT53cmFwcGVyICE9 IEpTV19OT05FICYmICQ2ICE9IEpTX1FVT1RFU19VTlNQRUMpCisJCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJ CSBlcnJtc2coIlNRTC9KU09OIFFVT1RFUyBiZWhhdmlvciBzaGFsbCBub3QgYmUgc3BlY2lm aWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQiKSwKKwkJCQkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihANikpKTsKKwkJCQkJbi0+b21pdF9xdW90ZXMgPSAkNiA9PSBKU19RVU9URVNf T01JVDsKKwkJCQkJbi0+b25fZW1wdHkgPSAkNy5vbl9lbXB0eTsKKwkJCQkJbi0+b25fZXJy b3IgPSAkNy5vbl9lcnJvcjsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3dyYXBwZXJfY2xhdXNlX29wdDoKKwkJ CWpzb25fd3JhcHBlcl9iZWhhdmlvciBXUkFQUEVSCQkJeyAkJCA9ICQxOyB9CisJCQl8IC8q IEVNUFRZICovCQkJCQkJCXsgJCQgPSAwOyB9CisJCTsKKworanNvbl93cmFwcGVyX2JlaGF2 aW9yOgorCQkJV0lUSE9VVCBhcnJheV9vcHQJCQkJCQl7ICQkID0gSlNXX05PTkU7IH0KKwkJ CXwgV0lUSCBqc29uX2NvbmRpdGlvbmFsX29yX3VuY29uZGl0aW9uYWxfb3B0IGFycmF5X29w dCB7ICQkID0gJDI7IH0KKwkJOworCithcnJheV9vcHQ6CisJCQlBUlJBWQkJCQkJCQkJCXsg fQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7IH0KKwkJOworCitqc29uX2NvbmRpdGlvbmFs X29yX3VuY29uZGl0aW9uYWxfb3B0OgorCQkJQ09ORElUSU9OQUwJCQkJCQkJCXsgJCQgPSBK U1dfQ09ORElUSU9OQUw7IH0KKwkJCXwgVU5DT05ESVRJT05BTAkJCQkJCQl7ICQkID0gSlNX X1VOQ09ORElUSU9OQUw7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IEpTV19V TkNPTkRJVElPTkFMOyB9CisJCTsKKworanNvbl9xdW90ZXNfY2xhdXNlX29wdDoKKwkJCWpz b25fcXVvdGVzX2JlaGF2aW9yIFFVT1RFUyBqc29uX29uX3NjYWxhcl9zdHJpbmdfb3B0IHsg JCQgPSAkMTsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gSlNfUVVPVEVTX1VO U1BFQzsgfQorCQk7CisKK2pzb25fcXVvdGVzX2JlaGF2aW9yOgorCQkJS0VFUAkJCQkJCQkJ CXsgJCQgPSBKU19RVU9URVNfS0VFUDsgfQorCQkJfCBPTUlUCQkJCQkJCQkJeyAkJCA9IEpT X1FVT1RFU19PTUlUOyB9CisJCTsKKworanNvbl9vbl9zY2FsYXJfc3RyaW5nX29wdDoKKwkJ CU9OIFNDQUxBUiBTVFJJTkcJCQkJCQl7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyB9 CisJCTsKKworanNvbl9xdWVyeV9iZWhhdmlvcjoKKwkJCWpzb25fYmVoYXZpb3JfZXJyb3IK KwkJCXwganNvbl9iZWhhdmlvcl9udWxsCisJCQl8IGpzb25fYmVoYXZpb3JfZW1wdHlfYXJy YXkKKwkJCXwganNvbl9iZWhhdmlvcl9lbXB0eV9vYmplY3QKKwkJCXwganNvbl9iZWhhdmlv cl9kZWZhdWx0CisJCTsKKworanNvbl9xdWVyeV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0Ogor CQkJanNvbl9xdWVyeV9iZWhhdmlvciBPTiBFTVBUWV9QCisJCQkJCQkJCQl7ICQkLm9uX2Vt cHR5ID0gJDE7ICQkLm9uX2Vycm9yID0gTlVMTDsgfQorCQkJfCBqc29uX3F1ZXJ5X2JlaGF2 aW9yIE9OIEVNUFRZX1AganNvbl9xdWVyeV9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJCQkJ CQl7ICQkLm9uX2VtcHR5ID0gJDE7ICQkLm9uX2Vycm9yID0gJDQ7IH0KKwkJCXwganNvbl9x dWVyeV9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0gTlVM TDsgJCQub25fZXJyb3IgPSAkMTsgfQorCQkJfCAgLyogRU1QVFkgKi8KKwkJCQkJCQkJCXsg JCQub25fZW1wdHkgPSBOVUxMOyAkJC5vbl9lcnJvciA9IE5VTEw7IH0KKwkJOworCitqc29u X3JldHVybmluZ19jbGF1c2Vfb3B0OgorCQkJUkVUVVJOSU5HIFR5cGVuYW1lCisJCQkJewor CQkJCQlKc29uT3V0cHV0ICpuID0gbWFrZU5vZGUoSnNvbk91dHB1dCk7CisJCQkJCW4tPnR5 cGVOYW1lID0gJDI7CisJCQkJCW4tPnJldHVybmluZyA9IG1ha2VOb2RlKEpzb25SZXR1cm5p bmcpOworCQkJCQluLT5yZXR1cm5pbmctPmZvcm1hdCA9CisJCQkJCQltYWtlSnNvbkZvcm1h dChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFVTFQsIEAyKTsKKwkJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJCX0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IE5VTEw7 IH0KKwkJCTsKKworanNvbl9vdXRwdXRfY2xhdXNlX29wdDoKKwkJCVJFVFVSTklORyBUeXBl bmFtZSBqc29uX2Zvcm1hdF9jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29uT3V0cHV0ICpu ID0gbWFrZU5vZGUoSnNvbk91dHB1dCk7CisJCQkJCW4tPnR5cGVOYW1lID0gJDI7CisJCQkJ CW4tPnJldHVybmluZyA9IG1ha2VOb2RlKEpzb25SZXR1cm5pbmcpOworCQkJCQluLT5yZXR1 cm5pbmctPmZvcm1hdCA9IChKc29uRm9ybWF0ICopICQzOworCQkJCQkkJCA9IChOb2RlICop IG47CisJCQkJfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQkJ OworCitqc29uX2V4aXN0c19wcmVkaWNhdGU6CisJCQlKU09OX0VYSVNUUyAnKCcKKwkJCQlq c29uX2FwaV9jb21tb25fc3ludGF4CisJCQkJanNvbl9yZXR1cm5pbmdfY2xhdXNlX29wdAor CQkJCWpzb25fZXhpc3RzX2Vycm9yX2NsYXVzZV9vcHQKKwkJCScpJworCQkJCXsKKwkJCQkJ SnNvbkZ1bmNFeHByICpwID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHByKTsKKwkJCQkJcC0+b3Ag PSBJU19KU09OX0VYSVNUUzsKKwkJCQkJcC0+Y29tbW9uID0gKEpzb25Db21tb24gKikgJDM7 CisJCQkJCXAtPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ0OworCQkJCQlwLT5vbl9lcnJv ciA9ICQ1OworCQkJCQlwLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIHA7 CisJCQkJfQorCQk7CisKK2pzb25fZXhpc3RzX2Vycm9yX2NsYXVzZV9vcHQ6CisJCQlqc29u X2V4aXN0c19lcnJvcl9iZWhhdmlvciBPTiBFUlJPUl9QCQl7ICQkID0gJDE7IH0KKwkJCXwg LyogRU1QVFkgKi8JCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKworanNvbl9leGlzdHNf ZXJyb3JfYmVoYXZpb3I6CisJCQlqc29uX2JlaGF2aW9yX2Vycm9yCisJCQl8IGpzb25fYmVo YXZpb3JfdHJ1ZQorCQkJfCBqc29uX2JlaGF2aW9yX2ZhbHNlCisJCQl8IGpzb25fYmVoYXZp b3JfdW5rbm93bgorCQk7CisKK2pzb25fdmFsdWVfY29uc3RydWN0b3I6CisJCQlqc29uX29i amVjdF9jb25zdHJ1Y3RvcgorCQkJfCBqc29uX2FycmF5X2NvbnN0cnVjdG9yCisJCTsKKwor anNvbl9vYmplY3RfY29uc3RydWN0b3I6CisJCQlKU09OX09CSkVDVCAnKCcganNvbl9vYmpl Y3RfYXJncyAnKScKKwkJCQl7CisJCQkJCSQkID0gJDM7CisJCQkJfQorCQk7CisKK2pzb25f b2JqZWN0X2FyZ3M6CisJCQlqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9hcmdzCisJCQl8IGpz b25fb2JqZWN0X2Z1bmNfYXJncworCQk7CisKK2pzb25fb2JqZWN0X2Z1bmNfYXJnczoKKwkJ CWZ1bmNfYXJnX2xpc3QKKwkJCQl7CisJCQkJCUxpc3QgKmZ1bmMgPSBsaXN0X21ha2UxKG1h a2VTdHJpbmcoImpzb25fb2JqZWN0IikpOworCQkJCQkkJCA9IChOb2RlICopIG1ha2VGdW5j Q2FsbChmdW5jLCAkMSwgQ09FUkNFX0VYUExJQ0lUX0NBTEwsIEAxKTsKKwkJCQl9CisJCTsK KworanNvbl9vYmplY3RfY29uc3RydWN0b3JfYXJnczoKKwkJCWpzb25fb2JqZWN0X2NvbnN0 cnVjdG9yX2FyZ3Nfb3B0IGpzb25fb3V0cHV0X2NsYXVzZV9vcHQKKwkJCQl7CisJCQkJCUpz b25PYmplY3RDb25zdHJ1Y3RvciAqbiA9IChKc29uT2JqZWN0Q29uc3RydWN0b3IgKikgJDE7 CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQyOworCQkJCQluLT5sb2NhdGlv biA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fb2Jq ZWN0X2NvbnN0cnVjdG9yX2FyZ3Nfb3B0OgorCQkJanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0 CisJCQlqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKKwkJCWpzb25f a2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKKwkJCQl7CisJCQkJCUpzb25PYmplY3RD b25zdHJ1Y3RvciAqbiA9IG1ha2VOb2RlKEpzb25PYmplY3RDb25zdHJ1Y3Rvcik7CisJCQkJ CW4tPmV4cHJzID0gJDE7CisJCQkJCW4tPmFic2VudF9vbl9udWxsID0gJDI7CisJCQkJCW4t PnVuaXF1ZSA9ICQzOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCAvKiBF TVBUWSAqLworCQkJCXsKKwkJCQkJSnNvbk9iamVjdENvbnN0cnVjdG9yICpuID0gbWFrZU5v ZGUoSnNvbk9iamVjdENvbnN0cnVjdG9yKTsKKwkJCQkJbi0+ZXhwcnMgPSBOVUxMOworCQkJ CQluLT5hYnNlbnRfb25fbnVsbCA9IGZhbHNlOworCQkJCQluLT51bmlxdWUgPSBmYWxzZTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX25hbWVfYW5kX3Zh bHVlX2xpc3Q6CisJCQlqc29uX25hbWVfYW5kX3ZhbHVlCisJCQkJeyAkJCA9IGxpc3RfbWFr ZTEoJDEpOyB9CisJCQl8IGpzb25fbmFtZV9hbmRfdmFsdWVfbGlzdCAnLCcganNvbl9uYW1l X2FuZF92YWx1ZQorCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitqc29u X25hbWVfYW5kX3ZhbHVlOgorLyogVE9ETyBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRv IGNvbmZsaWN0cworCQkJS0VZIGNfZXhwciBWQUxVRV9QIGpzb25fdmFsdWVfZXhwciAlcHJl YyBQT1NURklYT1AKKwkJCQl7ICQkID0gbWFrZUpzb25LZXlWYWx1ZSgkMiwgJDQpOyB9CisJ CQl8CisqLworCQkJY19leHByIFZBTFVFX1AganNvbl92YWx1ZV9leHByCisJCQkJeyAkJCA9 IG1ha2VKc29uS2V5VmFsdWUoJDEsICQzKTsgfQorCQkJfAorCQkJYV9leHByICc6JyBqc29u X3ZhbHVlX2V4cHIKKwkJCQl7ICQkID0gbWFrZUpzb25LZXlWYWx1ZSgkMSwgJDMpOyB9CisJ CTsKKworanNvbl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0OgorCQkJTlVM TF9QIE9OIE5VTExfUAkJCQkJeyAkJCA9IGZhbHNlOyB9CisJCQl8IEFCU0VOVCBPTiBOVUxM X1AJCQkJCXsgJCQgPSB0cnVlOyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJeyAkJCA9IGZh bHNlOyB9CisJCTsKKworanNvbl9hcnJheV9jb25zdHJ1Y3RvcjoKKwkJCUpTT05fQVJSQVkg JygnCisJCQkJanNvbl92YWx1ZV9leHByX2xpc3QKKwkJCQlqc29uX2FycmF5X2NvbnN0cnVj dG9yX251bGxfY2xhdXNlX29wdAorCQkJCWpzb25fb3V0cHV0X2NsYXVzZV9vcHQKKwkJCScp JworCQkJCXsKKwkJCQkJSnNvbkFycmF5Q29uc3RydWN0b3IgKm4gPSBtYWtlTm9kZShKc29u QXJyYXlDb25zdHJ1Y3Rvcik7CisJCQkJCW4tPmV4cHJzID0gJDM7CisJCQkJCW4tPmFic2Vu dF9vbl9udWxsID0gJDQ7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ1Owor CQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQor CQkJfCBKU09OX0FSUkFZICcoJworCQkJCXNlbGVjdF9ub19wYXJlbnMKKwkJCQkvKiBqc29u X2Zvcm1hdF9jbGF1c2Vfb3B0ICovCisJCQkJLyoganNvbl9hcnJheV9jb25zdHJ1Y3Rvcl9u dWxsX2NsYXVzZV9vcHQgKi8KKwkJCQlqc29uX291dHB1dF9jbGF1c2Vfb3B0CisJCQknKScK KwkJCQl7CisJCQkJCUpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IgKm4gPSBtYWtlTm9kZShK c29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yKTsKKwkJCQkJbi0+cXVlcnkgPSAkMzsKKwkJCQkJ bi0+Zm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VOQ19E RUZBVUxULCAtMSk7CisJCQkJCS8qIG4tPmZvcm1hdCA9ICQ0OyAqLworCQkJCQluLT5hYnNl bnRfb25fbnVsbCA9IHRydWUgLyogJDUgKi87CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0 cHV0ICopICQ0OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICop IG47CisJCQkJfQorCQkJfCBKU09OX0FSUkFZICcoJworCQkJCWpzb25fb3V0cHV0X2NsYXVz ZV9vcHQKKwkJCScpJworCQkJCXsKKwkJCQkJSnNvbkFycmF5Q29uc3RydWN0b3IgKm4gPSBt YWtlTm9kZShKc29uQXJyYXlDb25zdHJ1Y3Rvcik7CisJCQkJCW4tPmV4cHJzID0gTklMOwor CQkJCQluLT5hYnNlbnRfb25fbnVsbCA9IHRydWU7CisJCQkJCW4tPm91dHB1dCA9IChKc29u T3V0cHV0ICopICQzOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2Rl ICopIG47CisJCQkJfQorCQk7CisKK2pzb25fdmFsdWVfZXhwcl9saXN0OgorCQkJanNvbl92 YWx1ZV9leHByCQkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwganNvbl92 YWx1ZV9leHByX2xpc3QgJywnIGpzb25fdmFsdWVfZXhwcgl7ICQkID0gbGFwcGVuZCgkMSwg JDMpO30KKwkJOworCitqc29uX2FycmF5X2NvbnN0cnVjdG9yX251bGxfY2xhdXNlX29wdDoK KwkJCU5VTExfUCBPTiBOVUxMX1AJCQkJCQl7ICQkID0gZmFsc2U7IH0KKwkJCXwgQUJTRU5U IE9OIE5VTExfUAkJCQkJCXsgJCQgPSB0cnVlOyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJ CXsgJCQgPSB0cnVlOyB9CisJCTsKKworanNvbl9hZ2dyZWdhdGVfZnVuYzoKKwkJCWpzb25f b2JqZWN0X2FnZ3JlZ2F0ZV9jb25zdHJ1Y3RvcgorCQkJfCBqc29uX2FycmF5X2FnZ3JlZ2F0 ZV9jb25zdHJ1Y3RvcgorCQk7CisKK2pzb25fb2JqZWN0X2FnZ3JlZ2F0ZV9jb25zdHJ1Y3Rv cjoKKwkJCUpTT05fT0JKRUNUQUdHICcoJworCQkJCWpzb25fbmFtZV9hbmRfdmFsdWUKKwkJ CQlqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKKwkJCQlqc29uX2tl eV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CisJCQkJanNvbl9vdXRwdXRfY2xhdXNlX29w dAorCQkJJyknCisJCQkJeworCQkJCQlKc29uT2JqZWN0QWdnICpuID0gbWFrZU5vZGUoSnNv bk9iamVjdEFnZyk7CisJCQkJCW4tPmFyZyA9IChKc29uS2V5VmFsdWUgKikgJDM7CisJCQkJ CW4tPmFic2VudF9vbl9udWxsID0gJDQ7CisJCQkJCW4tPnVuaXF1ZSA9ICQ1OworCQkJCQlu LT5jb25zdHJ1Y3RvciA9IG1ha2VOb2RlKEpzb25BZ2dDb25zdHJ1Y3Rvcik7CisJCQkJCW4t PmNvbnN0cnVjdG9yLT5vdXRwdXQgPSAoSnNvbk91dHB1dCAqKSAkNjsKKwkJCQkJbi0+Y29u c3RydWN0b3ItPmFnZ19vcmRlciA9IE5VTEw7CisJCQkJCW4tPmNvbnN0cnVjdG9yLT5sb2Nh dGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25f YXJyYXlfYWdncmVnYXRlX2NvbnN0cnVjdG9yOgorCQkJSlNPTl9BUlJBWUFHRyAnKCcKKwkJ CQlqc29uX3ZhbHVlX2V4cHIKKwkJCQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9j bGF1c2Vfb3B0CisJCQkJanNvbl9hcnJheV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQK KwkJCQlqc29uX291dHB1dF9jbGF1c2Vfb3B0CisJCQknKScKKwkJCQl7CisJCQkJCUpzb25B cnJheUFnZyAqbiA9IG1ha2VOb2RlKEpzb25BcnJheUFnZyk7CisJCQkJCW4tPmFyZyA9IChK c29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5hYnNlbnRfb25fbnVsbCA9ICQ1OworCQkJ CQluLT5jb25zdHJ1Y3RvciA9IG1ha2VOb2RlKEpzb25BZ2dDb25zdHJ1Y3Rvcik7CisJCQkJ CW4tPmNvbnN0cnVjdG9yLT5hZ2dfb3JkZXIgPSAkNDsKKwkJCQkJbi0+Y29uc3RydWN0b3It Pm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ2OworCQkJCQluLT5jb25zdHJ1Y3Rvci0+bG9j YXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29u X2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0OgorCQkJT1JERVIgQlkgc29y dGJ5X2xpc3QJCQkJCXsgJCQgPSAkMzsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQk ID0gTklMOyB9CisJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTU2 MzYsNiArMTYzMjUsNyBAQCBCYXJlQ29sTGFiZWw6CUlERU5UCQkJCQkJCQl7ICQkID0gJDE7 IH0KICAqLwogdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJICBBQk9SVF9QCisJCQl8IEFCU0VO VAogCQkJfCBBQlNPTFVURV9QCiAJCQl8IEFDQ0VTUwogCQkJfCBBQ1RJT04KQEAgLTE1Njc2 LDYgKzE2MzY2LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBDT01NSVQKIAkJCXwg Q09NTUlUVEVECiAJCQl8IENPTVBSRVNTSU9OCisJCQl8IENPTkRJVElPTkFMCiAJCQl8IENP TkZJR1VSQVRJT04KIAkJCXwgQ09ORkxJQ1QKIAkJCXwgQ09OTkVDVElPTgpAQCAtMTU3MTIs MTAgKzE2NDAzLDEyIEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgRE9VQkxFX1AKIAkJ CXwgRFJPUAogCQkJfCBFQUNICisJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwg RU5DT0RJTkcKIAkJCXwgRU5DUllQVEVECiAJCQl8IEVOVU1fUAorCQkJfCBFUlJPUl9QCiAJ CQl8IEVTQ0FQRQogCQkJfCBFVkVOVAogCQkJfCBFWENMVURFCkBAIC0xNTczMiw2ICsxNjQy NSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgRklSU1RfUAogCQkJfCBGT0xMT1dJ TkcKIAkJCXwgRk9SQ0UKKwkJCXwgRk9STUFUCiAJCQl8IEZPUldBUkQKIAkJCXwgRlVOQ1RJ T04KIAkJCXwgRlVOQ1RJT05TCkBAIC0xNTc2Myw3ICsxNjQ1Nyw5IEBAIHVucmVzZXJ2ZWRf a2V5d29yZDoKIAkJCXwgSU5TVEVBRAogCQkJfCBJTlZPS0VSCiAJCQl8IElTT0xBVElPTgor CQkJfCBLRUVQCiAJCQl8IEtFWQorCQkJfCBLRVlTCiAJCQl8IExBQkVMCiAJCQl8IExBTkdV QUdFCiAJCQl8IExBUkdFX1AKQEAgLTE1ODA2LDYgKzE2NTAyLDcgQEAgdW5yZXNlcnZlZF9r ZXl3b3JkOgogCQkJfCBPRkYKIAkJCXwgT0lEUwogCQkJfCBPTEQKKwkJCXwgT01JVAogCQkJ fCBPUEVSQVRPUgogCQkJfCBPUFRJT04KIAkJCXwgT1BUSU9OUwpAQCAtMTU4MzUsNiArMTY1 MzIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBST0dSQU0KIAkJCXwgUFVCTElD QVRJT04KIAkJCXwgUVVPVEUKKwkJCXwgUVVPVEVTCiAJCQl8IFJBTkdFCiAJCQl8IFJFQUQK IAkJCXwgUkVBU1NJR04KQEAgLTE1ODY0LDYgKzE2NTYyLDcgQEAgdW5yZXNlcnZlZF9rZXl3 b3JkOgogCQkJfCBST1dTCiAJCQl8IFJVTEUKIAkJCXwgU0FWRVBPSU5UCisJCQl8IFNDQUxB UgogCQkJfCBTQ0hFTUEKIAkJCXwgU0NIRU1BUwogCQkJfCBTQ1JPTEwKQEAgLTE1OTE1LDYg KzE2NjE0LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBVRVNDQVBFCiAJCQl8IFVO Qk9VTkRFRAogCQkJfCBVTkNPTU1JVFRFRAorCQkJfCBVTkNPTkRJVElPTkFMCiAJCQl8IFVO RU5DUllQVEVECiAJCQl8IFVOS05PV04KIAkJCXwgVU5MSVNURU4KQEAgLTE1OTcyLDYgKzE2 NjcyLDE2IEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IElOVF9QCiAJCQl8IElOVEVHRVIK IAkJCXwgSU5URVJWQUwKKwkJCXwgSlNPTgorCQkJfCBKU09OX0FSUkFZCisJCQl8IEpTT05f QVJSQVlBR0cKKwkJCXwgSlNPTl9FWElTVFMKKwkJCXwgSlNPTl9PQkpFQ1QKKwkJCXwgSlNP Tl9PQkpFQ1RBR0cKKwkJCXwgSlNPTl9RVUVSWQorCQkJfCBKU09OX1NDQUxBUgorCQkJfCBK U09OX1NFUklBTElaRQorCQkJfCBKU09OX1ZBTFVFCiAJCQl8IExFQVNUCiAJCQl8IE5BVElP TkFMCiAJCQl8IE5DSEFSCkBAIC0xNjAzOSw2ICsxNjc0OSw3IEBAIHR5cGVfZnVuY19uYW1l X2tleXdvcmQ6CiAJCQl8IE9WRVJMQVBTCiAJCQl8IFJJR0hUCiAJCQl8IFNJTUlMQVIKKwkJ CXwgU1RSSU5HCiAJCQl8IFRBQkxFU0FNUExFCiAJCQl8IFZFUkJPU0UKIAkJOwpAQCAtMTYx NDAsNiArMTY4NTEsNyBAQCByZXNlcnZlZF9rZXl3b3JkOgogICovCiBiYXJlX2xhYmVsX2tl eXdvcmQ6CiAJCQkgIEFCT1JUX1AKKwkJCXwgQUJTRU5UCiAJCQl8IEFCU09MVVRFX1AKIAkJ CXwgQUNDRVNTCiAJCQl8IEFDVElPTgpAQCAtMTYyMDIsNiArMTY5MTQsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IENPTU1JVFRFRAogCQkJfCBDT01QUkVTU0lPTgogCQkJfCBD T05DVVJSRU5UTFkKKwkJCXwgQ09ORElUSU9OQUwKIAkJCXwgQ09ORklHVVJBVElPTgogCQkJ fCBDT05GTElDVAogCQkJfCBDT05ORUNUSU9OCkBAIC0xNjI1NCwxMSArMTY5NjcsMTMgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBEUk9QCiAJCQl8IEVBQ0gKIAkJCXwgRUxTRQor CQkJfCBFTVBUWV9QCiAJCQl8IEVOQUJMRV9QCiAJCQl8IEVOQ09ESU5HCiAJCQl8IEVOQ1JZ UFRFRAogCQkJfCBFTkRfUAogCQkJfCBFTlVNX1AKKwkJCXwgRVJST1JfUAogCQkJfCBFU0NB UEUKIAkJCXwgRVZFTlQKIAkJCXwgRVhDTFVERQpAQCAtMTYyNzksNiArMTY5OTQsNyBAQCBi YXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IEZPTExPV0lORwogCQkJfCBGT1JDRQogCQkJfCBG T1JFSUdOCisJCQl8IEZPUk1BVAogCQkJfCBGT1JXQVJECiAJCQl8IEZSRUVaRQogCQkJfCBG VUxMCkBAIC0xNjMyMyw3ICsxNzAzOSwxOSBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8 IElTCiAJCQl8IElTT0xBVElPTgogCQkJfCBKT0lOCisJCQl8IEpTT04KKwkJCXwgSlNPTl9B UlJBWQorCQkJfCBKU09OX0FSUkFZQUdHCisJCQl8IEpTT05fRVhJU1RTCisJCQl8IEpTT05f T0JKRUNUCisJCQl8IEpTT05fT0JKRUNUQUdHCisJCQl8IEpTT05fUVVFUlkKKwkJCXwgSlNP Tl9TQ0FMQVIKKwkJCXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9WQUxVRQorCQkJfCBL RUVQCiAJCQl8IEtFWQorCQkJfCBLRVlTCiAJCQl8IExBQkVMCiAJCQl8IExBTkdVQUdFCiAJ CQl8IExBUkdFX1AKQEAgLTE2MzgwLDYgKzE3MTA4LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3Jk OgogCQkJfCBPRkYKIAkJCXwgT0lEUwogCQkJfCBPTEQKKwkJCXwgT01JVAogCQkJfCBPTkxZ CiAJCQl8IE9QRVJBVE9SCiAJCQl8IE9QVElPTgpAQCAtMTY0MTYsNiArMTcxNDUsNyBAQCBi YXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBST0dSQU0KIAkJCXwgUFVCTElDQVRJT04KIAkJ CXwgUVVPVEUKKwkJCXwgUVVPVEVTCiAJCQl8IFJBTkdFCiAJCQl8IFJFQUQKIAkJCXwgUkVB TApAQCAtMTY0NDksNiArMTcxNzksNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFJP V1MKIAkJCXwgUlVMRQogCQkJfCBTQVZFUE9JTlQKKwkJCXwgU0NBTEFSCiAJCQl8IFNDSEVN QQogCQkJfCBTQ0hFTUFTCiAJCQl8IFNDUk9MTApAQCAtMTY0ODMsNiArMTcyMTQsNyBAQCBi YXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNUT1JBR0UKIAkJCXwgU1RPUkVECiAJCQl8IFNU UklDVF9QCisJCQl8IFNUUklORwogCQkJfCBTVFJJUF9QCiAJCQl8IFNVQlNDUklQVElPTgog CQkJfCBTVUJTVFJJTkcKQEAgLTE2NTE2LDYgKzE3MjQ4LDcgQEAgYmFyZV9sYWJlbF9rZXl3 b3JkOgogCQkJfCBVRVNDQVBFCiAJCQl8IFVOQk9VTkRFRAogCQkJfCBVTkNPTU1JVFRFRAor CQkJfCBVTkNPTkRJVElPTkFMCiAJCQl8IFVORU5DUllQVEVECiAJCQl8IFVOSVFVRQogCQkJ fCBVTktOT1dOCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0 ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwppbmRleCA2Yzc5M2I3 MmVjLi4yZTU0OWU3YjM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y29sbGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKQEAg LTY5MCw2ICs2OTAsMTAgQEAgYXNzaWduX2NvbGxhdGlvbnNfd2Fsa2VyKE5vZGUgKm5vZGUs IGFzc2lnbl9jb2xsYXRpb25zX2NvbnRleHQgKmNvbnRleHQpCiAJCQkJCQkJCQkJCQkJCQkm bG9jY29udGV4dCk7CiAJCQkJCQl9CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBUX0pzb25F eHByOgorCQkJCQkJLyogQ29udGV4dCBpdGVtIGFuZCBQQVNTSU5HIGFyZ3VtZW50cyBhcmUg YWxyZWFkeQorCQkJCQkJICogbWFya2VkIHdpdGggY29sbGF0aW9ucyBpbiBwYXJzZV9leHBy LmMuICovCisJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAogCQkJCQkJLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDFjMDllYTI0Y2QuLjg2NDRlYjJlNzQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMTUsNiArMTUsOCBAQAogCiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRlLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgpAQCAtMzQsNiArMzYsOCBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgi CisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uYi5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVz dGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgpAQCAtNzQsNiArNzgsMjEgQEAgc3Rh dGljIE5vZGUgKnRyYW5zZm9ybVdob2xlUm93UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIHN0 YXRpYyBOb2RlICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFf SW5kaXJlY3Rpb24gKmluZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFy c2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9y bUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2xsYXRlQ2xhdXNlICpjKTsK K3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0 ZSAqcHN0YXRlLAorCQkJCQkJCQkJCQlKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpOwor c3RhdGljIE5vZGUgKnRyYW5zZm9ybUpzb25BcnJheUNvbnN0cnVjdG9yKFBhcnNlU3RhdGUg KnBzdGF0ZSwKKwkJCQkJCQkJCQkgICBKc29uQXJyYXlDb25zdHJ1Y3RvciAqY3Rvcik7Citz dGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvcihQYXJzZVN0 YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJCQlKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yICpj dG9yKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0QWdnKFBhcnNlU3RhdGUg KnBzdGF0ZSwgSnNvbk9iamVjdEFnZyAqYWdnKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1K c29uQXJyYXlBZ2coUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQXJyYXlBZ2cgKmFnZyk7Citz dGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvbklzUHJlZGljYXRlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgSnNvbklzUHJlZGljYXRlICpwKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uRnVu Y0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKnApOworc3RhdGljIE5v ZGUgKnRyYW5zZm9ybUpzb25WYWx1ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVmFs dWVFeHByICpqdmUpOworc3RhdGljIE5vZGUgKnRyYW5zZm9ybUpzb25QYXJzZUV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uUGFyc2VFeHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Kc29uU2NhbGFyRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25TY2FsYXJF eHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uU2VyaWFsaXplRXhwcihQ YXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIp Owogc3RhdGljIE5vZGUgKm1ha2Vfcm93X2NvbXBhcmlzb25fb3AoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBMaXN0ICpvcG5hbWUsCiAJCQkJCQkJCQlMaXN0ICpsYXJncywgTGlzdCAqcmFyZ3Ms IGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9yb3dfZGlzdGluY3Rfb3AoUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCkBAIC0zMDEsNiArMzIwLDUwIEBAIHRy YW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJ CQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfSnNvbk9iamVjdENvbnN0cnVjdG9yOgorCQkJ cmVzdWx0ID0gdHJhbnNmb3JtSnNvbk9iamVjdENvbnN0cnVjdG9yKHBzdGF0ZSwgKEpzb25P YmplY3RDb25zdHJ1Y3RvciAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29u QXJyYXlDb25zdHJ1Y3RvcjoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25BcnJheUNvbnN0 cnVjdG9yKHBzdGF0ZSwgKEpzb25BcnJheUNvbnN0cnVjdG9yICopIGV4cHIpOworCQkJYnJl YWs7CisKKwkJY2FzZSBUX0pzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3I6CisJCQlyZXN1bHQg PSB0cmFuc2Zvcm1Kc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yKHBzdGF0ZSwgKEpzb25BcnJh eVF1ZXJ5Q29uc3RydWN0b3IgKikgZXhwcik7CisJCQlicmVhazsKKworCQljYXNlIFRfSnNv bk9iamVjdEFnZzoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25PYmplY3RBZ2cocHN0YXRl LCAoSnNvbk9iamVjdEFnZyAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29u QXJyYXlBZ2c6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uQXJyYXlBZ2cocHN0YXRlLCAo SnNvbkFycmF5QWdnICopIGV4cHIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUX0pzb25Jc1By ZWRpY2F0ZToKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25Jc1ByZWRpY2F0ZShwc3RhdGUs IChKc29uSXNQcmVkaWNhdGUgKikgZXhwcik7CisJCQlicmVhazsKKworCQljYXNlIFRfSnNv bkZ1bmNFeHByOgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtSnNvbkZ1bmNFeHByKHBzdGF0ZSwg KEpzb25GdW5jRXhwciAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29uVmFs dWVFeHByOgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsIChK c29uVmFsdWVFeHByICopIGV4cHIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUX0pzb25QYXJz ZUV4cHI6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uUGFyc2VFeHByKHBzdGF0ZSwgKEpz b25QYXJzZUV4cHIgKikgZXhwcik7CisJCQlicmVhazsKKworCQljYXNlIFRfSnNvblNjYWxh ckV4cHI6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uU2NhbGFyRXhwcihwc3RhdGUsIChK c29uU2NhbGFyRXhwciAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29uU2Vy aWFsaXplRXhwcjoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKHBz dGF0ZSwgKEpzb25TZXJpYWxpemVFeHByICopIGV4cHIpOworCQkJYnJlYWs7CisKIAkJZGVm YXVsdDoKIAkJCS8qIHNob3VsZCBub3QgcmVhY2ggaGVyZSAqLwogCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CkBA IC0zMDk5LDMgKzMxNjIsMTQwOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5k IGV4cHJLaW5kKQogCX0KIAlyZXR1cm4gInVucmVjb2duaXplZCBleHByZXNzaW9uIGtpbmQi OwogfQorCisvKgorICogTWFrZSBzdHJpbmcgQ29uc3Qgbm9kZSBmcm9tIEpTT04gZW5jb2Rp bmcgbmFtZS4KKyAqCisgKiBVVEY4IGlzIGRlZmF1bHQgZW5jb2RpbmcuCisgKi8KK3N0YXRp YyBDb25zdCAqCitnZXRKc29uRW5jb2RpbmdDb25zdChKc29uRm9ybWF0ICpmb3JtYXQpCit7 CisJSnNvbkVuY29kaW5nIGVuY29kaW5nOworCWNvbnN0IGNoYXIgKmVuYzsKKwlOYW1lCQll bmNuYW1lID0gcGFsbG9jKHNpemVvZihOYW1lRGF0YSkpOworCisJaWYgKCFmb3JtYXQgfHwK KwkJZm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCB8fAorCQlmb3Jt YXQtPmVuY29kaW5nID09IEpTX0VOQ19ERUZBVUxUKQorCQllbmNvZGluZyA9IEpTX0VOQ19V VEY4OworCWVsc2UKKwkJZW5jb2RpbmcgPSBmb3JtYXQtPmVuY29kaW5nOworCisJc3dpdGNo IChlbmNvZGluZykKKwl7CisJCWNhc2UgSlNfRU5DX1VURjE2OgorCQkJZW5jID0gIlVURjE2 IjsKKwkJCWJyZWFrOworCQljYXNlIEpTX0VOQ19VVEYzMjoKKwkJCWVuYyA9ICJVVEYzMiI7 CisJCQlicmVhazsKKwkJY2FzZSBKU19FTkNfVVRGODoKKwkJCWVuYyA9ICJVVEY4IjsKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgSlNPTiBlbmNv ZGluZzogJWQiLCBlbmNvZGluZyk7CisJCQlicmVhazsKKwl9CisKKwluYW1lc3RyY3B5KGVu Y25hbWUsIGVuYyk7CisKKwlyZXR1cm4gbWFrZUNvbnN0KE5BTUVPSUQsIC0xLCBJbnZhbGlk T2lkLCBOQU1FREFUQUxFTiwKKwkJCQkJIE5hbWVHZXREYXR1bShlbmNuYW1lKSwgZmFsc2Us IGZhbHNlKTsKK30KKworLyoKKyAqIE1ha2UgYnl0ZWEgPT4gdGV4dCBjb252ZXJzaW9uIHVz aW5nIHNwZWNpZmllZCBKU09OIGZvcm1hdCBlbmNvZGluZy4KKyAqLworc3RhdGljIE5vZGUg KgorbWFrZUpzb25CeXRlYVRvVGV4dENvbnZlcnNpb24oTm9kZSAqZXhwciwgSnNvbkZvcm1h dCAqZm9ybWF0LCBpbnQgbG9jYXRpb24pCit7CisJQ29uc3QJICAgKmVuY29kaW5nID0gZ2V0 SnNvbkVuY29kaW5nQ29uc3QoZm9ybWF0KTsKKwlGdW5jRXhwciAgICpmZXhwciA9IG1ha2VG dW5jRXhwcihGX0NPTlZFUlRfRlJPTSwgVEVYVE9JRCwKKwkJCQkJCQkJCSBsaXN0X21ha2Uy KGV4cHIsIGVuY29kaW5nKSwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAor CQkJCQkJCQkJIENPRVJDRV9FWFBMSUNJVF9DQUxMKTsKKworCWZleHByLT5sb2NhdGlvbiA9 IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIGZleHByOworfQorCisvKgorICogTWFr ZSBDYXNlVGVzdEV4cHIgbm9kZS4KKyAqLworc3RhdGljIE5vZGUgKgorbWFrZUNhc2VUZXN0 RXhwcihOb2RlICpleHByKQoreworCUNhc2VUZXN0RXhwciAqcGxhY2Vob2xkZXIgPSBtYWtl Tm9kZShDYXNlVGVzdEV4cHIpOworCisJcGxhY2Vob2xkZXItPnR5cGVJZCA9IGV4cHJUeXBl KGV4cHIpOworCXBsYWNlaG9sZGVyLT50eXBlTW9kID0gZXhwclR5cG1vZChleHByKTsKKwlw bGFjZWhvbGRlci0+Y29sbGF0aW9uID0gZXhwckNvbGxhdGlvbihleHByKTsKKworCXJldHVy biAoTm9kZSAqKSBwbGFjZWhvbGRlcjsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBKU09OIHZh bHVlIGV4cHJlc3Npb24gdXNpbmcgc3BlY2lmaWVkIGlucHV0IEpTT04gZm9ybWF0IG9yCisg KiBkZWZhdWx0IGZvcm1hdCBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5z Zm9ybUpzb25WYWx1ZUV4cHJFeHQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVmFsdWVFeHBy ICp2ZSwKKwkJCQkJCSAgSnNvbkZvcm1hdFR5cGUgZGVmYXVsdF9mb3JtYXQsIGJvb2wgaXNh cmcsCisJCQkJCQkgIE9pZCB0YXJnZXR0eXBlKQoreworCU5vZGUJICAgKmV4cHIgPSB0cmFu c2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIHZlLT5yYXdfZXhwcik7CisJTm9k ZQkgICAqcmF3ZXhwcjsKKwlKc29uRm9ybWF0VHlwZSBmb3JtYXQ7CisJT2lkCQkJZXhwcnR5 cGU7CisJaW50CQkJbG9jYXRpb247CisJY2hhcgkJdHlwY2F0ZWdvcnk7CisJYm9vbAkJdHlw aXNwcmVmZXJyZWQ7CisKKwlpZiAoZXhwclR5cGUoZXhwcikgPT0gVU5LTk9XTk9JRCkKKwkJ ZXhwciA9IGNvZXJjZV90b19zcGVjaWZpY190eXBlKHBzdGF0ZSwgZXhwciwgVEVYVE9JRCwg IkpTT05fVkFMVUVfRVhQUiIpOworCisJcmF3ZXhwciA9IGV4cHI7CisJZXhwcnR5cGUgPSBl eHByVHlwZShleHByKTsKKwlsb2NhdGlvbiA9IGV4cHJMb2NhdGlvbihleHByKTsKKworCWdl dF90eXBlX2NhdGVnb3J5X3ByZWZlcnJlZChleHBydHlwZSwgJnR5cGNhdGVnb3J5LCAmdHlw aXNwcmVmZXJyZWQpOworCisJcmF3ZXhwciA9IGV4cHI7CisKKwlpZiAodmUtPmZvcm1hdC0+ Zm9ybWF0X3R5cGUgIT0gSlNfRk9STUFUX0RFRkFVTFQpCisJeworCQlpZiAodmUtPmZvcm1h dC0+ZW5jb2RpbmcgIT0gSlNfRU5DX0RFRkFVTFQgJiYgZXhwcnR5cGUgIT0gQllURUFPSUQp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01J U01BVENIKSwKKwkJCQkJIGVycm1zZygiSlNPTiBFTkNPRElORyBjbGF1c2UgaXMgb25seSBh bGxvd2VkIGZvciBieXRlYSBpbnB1dCB0eXBlIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCB2ZS0+Zm9ybWF0LT5sb2NhdGlvbikpKTsKKworCQlpZiAoZXhwcnR5cGUg PT0gSlNPTk9JRCB8fCBleHBydHlwZSA9PSBKU09OQk9JRCkKKwkJeworCQkJZm9ybWF0ID0g SlNfRk9STUFUX0RFRkFVTFQ7CS8qIGRvIG5vdCBmb3JtYXQganNvbltiXSB0eXBlcyAqLwor CQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJybXNnKCJGT1JNQVQgSlNPTiBoYXMgbm8g ZWZmZWN0IGZvciBqc29uIGFuZCBqc29uYiB0eXBlcyIpLAorCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgdmUtPmZvcm1hdC0+bG9jYXRpb24pKSk7CisJCX0KKwkJZWxzZQor CQkJZm9ybWF0ID0gdmUtPmZvcm1hdC0+Zm9ybWF0X3R5cGU7CisJfQorCWVsc2UgaWYgKGlz YXJnKQorCXsKKwkJLyogUGFzcyBTUUwvSlNPTiBpdGVtIHR5cGVzIGRpcmVjdGx5IHdpdGhv dXQgY29udmVyc2lvbiB0byBqc29uW2JdLiAqLworCQlzd2l0Y2ggKGV4cHJ0eXBlKQorCQl7 CisJCQljYXNlIFRFWFRPSUQ6CisJCQljYXNlIE5VTUVSSUNPSUQ6CisJCQljYXNlIEJPT0xP SUQ6CisJCQljYXNlIElOVDJPSUQ6CisJCQljYXNlIElOVDRPSUQ6CisJCQljYXNlIElOVDhP SUQ6CisJCQljYXNlIEZMT0FUNE9JRDoKKwkJCWNhc2UgRkxPQVQ4T0lEOgorCQkJY2FzZSBE QVRFT0lEOgorCQkJY2FzZSBUSU1FT0lEOgorCQkJY2FzZSBUSU1FVFpPSUQ6CisJCQljYXNl IFRJTUVTVEFNUE9JRDoKKwkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQkJcmV0dXJuIGV4 cHI7CisKKwkJCWRlZmF1bHQ6CisJCQkJaWYgKHR5cGNhdGVnb3J5ID09IFRZUENBVEVHT1JZ X1NUUklORykKKwkJCQkJcmV0dXJuIGNvZXJjZV90b19zcGVjaWZpY190eXBlKHBzdGF0ZSwg ZXhwciwgVEVYVE9JRCwKKwkJCQkJCQkJCQkJCSAgICJKU09OX1ZBTFVFX0VYUFIiKTsKKwkJ CQkvKiBlbHNlIGNvbnZlcnQgYXJndW1lbnQgdG8ganNvbltiXSB0eXBlICovCisJCQkJYnJl YWs7CisJCX0KKworCQlmb3JtYXQgPSBkZWZhdWx0X2Zvcm1hdDsKKwl9CisJZWxzZSBpZiAo ZXhwcnR5cGUgPT0gSlNPTk9JRCB8fCBleHBydHlwZSA9PSBKU09OQk9JRCkKKwkJZm9ybWF0 ID0gSlNfRk9STUFUX0RFRkFVTFQ7CS8qIGRvIG5vdCBmb3JtYXQganNvbltiXSB0eXBlcyAq LworCWVsc2UKKwkJZm9ybWF0ID0gZGVmYXVsdF9mb3JtYXQ7CisKKwlpZiAoZm9ybWF0ID09 IEpTX0ZPUk1BVF9ERUZBVUxUICYmCisJCSghT2lkSXNWYWxpZCh0YXJnZXR0eXBlKSB8fCBl eHBydHlwZSA9PSB0YXJnZXR0eXBlKSkKKwkJZXhwciA9IHJhd2V4cHI7CisJZWxzZQorCXsK KwkJTm9kZQkgICAqb3JpZyA9IG1ha2VDYXNlVGVzdEV4cHIoZXhwcik7CisJCU5vZGUJICAg KmNvZXJjZWQ7CisJCWJvb2wJCWNhc3RfaXNfbmVlZGVkID0gT2lkSXNWYWxpZCh0YXJnZXR0 eXBlKTsKKworCQlpZiAoIWlzYXJnICYmICFjYXN0X2lzX25lZWRlZCAmJgorCQkJZXhwcnR5 cGUgIT0gQllURUFPSUQgJiYgdHlwY2F0ZWdvcnkgIT0gVFlQQ0FURUdPUllfU1RSSU5HKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNN QVRDSCksCisJCQkJCSBlcnJtc2codmUtPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9S TUFUX0RFRkFVTFQgPworCQkJCQkJCSJjYW5ub3QgdXNlIG5vbi1zdHJpbmcgdHlwZXMgd2l0 aCBpbXBsaWNpdCBGT1JNQVQgSlNPTiBjbGF1c2UiIDoKKwkJCQkJCQkiY2Fubm90IHVzZSBu b24tc3RyaW5nIHR5cGVzIHdpdGggZXhwbGljaXQgRk9STUFUIEpTT04gY2xhdXNlIiksCisJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB2ZS0+Zm9ybWF0LT5sb2NhdGlvbiA+ PSAwID8KKwkJCQkJCQkJCQl2ZS0+Zm9ybWF0LT5sb2NhdGlvbiA6IGxvY2F0aW9uKSkpOwor CisJCWV4cHIgPSBvcmlnOworCisJCS8qIENvbnZlcnQgZW5jb2RlZCBKU09OIHRleHQgZnJv bSBieXRlYS4gKi8KKwkJaWYgKGZvcm1hdCA9PSBKU19GT1JNQVRfSlNPTiAmJiBleHBydHlw ZSA9PSBCWVRFQU9JRCkKKwkJeworCQkJZXhwciA9IG1ha2VKc29uQnl0ZWFUb1RleHRDb252 ZXJzaW9uKGV4cHIsIHZlLT5mb3JtYXQsIGxvY2F0aW9uKTsKKwkJCWV4cHJ0eXBlID0gVEVY VE9JRDsKKwkJfQorCisJCWlmICghT2lkSXNWYWxpZCh0YXJnZXR0eXBlKSkKKwkJCXRhcmdl dHR5cGUgPSBmb3JtYXQgPT0gSlNfRk9STUFUX0pTT05CID8gSlNPTkJPSUQgOiBKU09OT0lE OworCisJCS8qIFRyeSB0byBjb2VyY2UgdG8gdGhlIHRhcmdldCB0eXBlLiAqLworCQljb2Vy Y2VkID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCisJ CQkJCQkJCQkJdGFyZ2V0dHlwZSwgLTEsCisJCQkJCQkJCQkJQ09FUkNJT05fRVhQTElDSVQs CisJCQkJCQkJCQkJQ09FUkNFX0VYUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJbG9jYXRpb24p OworCisJCWlmICghY29lcmNlZCkKKwkJeworCQkJLyogSWYgY29lcmNpb24gZmFpbGVkLCB1 c2UgdG9fanNvbigpL3RvX2pzb25iKCkgZnVuY3Rpb25zLiAqLworCQkJRnVuY0V4cHIgICAq ZmV4cHI7CisJCQlPaWQJCQlmbm9pZDsKKworCQkJaWYgKGNhc3RfaXNfbmVlZGVkKQkJLyog b25seSBDQVNUIGlzIGFsbG93ZWQgKi8KKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBj YXN0IHR5cGUgJXMgdG8gJXMiLAorCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwZSks CisJCQkJCQkJCWZvcm1hdF90eXBlX2JlKHRhcmdldHR5cGUpKSwKKwkJCQkJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisKKwkJCWZub2lkID0gdGFyZ2V0 dHlwZSA9PSBKU09OT0lEID8gRl9UT19KU09OIDogRl9UT19KU09OQjsKKwkJCWZleHByID0g bWFrZUZ1bmNFeHByKGZub2lkLCB0YXJnZXR0eXBlLCBsaXN0X21ha2UxKGV4cHIpLAorCQkJ CQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwgQ09FUkNFX0VYUExJQ0lUX0NBTEwpOwor CisJCQlmZXhwci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCQkJY29lcmNlZCA9IChOb2Rl ICopIGZleHByOworCQl9CisKKwkJaWYgKGNvZXJjZWQgPT0gb3JpZykKKwkJCWV4cHIgPSBy YXdleHByOworCQllbHNlCisJCXsKKwkJCXZlID0gY29weU9iamVjdCh2ZSk7CisJCQl2ZS0+ cmF3X2V4cHIgPSAoRXhwciAqKSByYXdleHByOworCQkJdmUtPmZvcm1hdHRlZF9leHByID0g KEV4cHIgKikgY29lcmNlZDsKKworCQkJZXhwciA9IChOb2RlICopIHZlOworCQl9CisJfQor CisJcmV0dXJuIGV4cHI7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTiB2YWx1ZSBleHBy ZXNzaW9uIHVzaW5nIEZPUk1BVCBKU09OIGJ5IGRlZmF1bHQuCisgKi8KK3N0YXRpYyBOb2Rl ICoKK3RyYW5zZm9ybUpzb25WYWx1ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVmFs dWVFeHByICpqdmUpCit7CisJcmV0dXJuIHRyYW5zZm9ybUpzb25WYWx1ZUV4cHJFeHQocHN0 YXRlLCBqdmUsIEpTX0ZPUk1BVF9KU09OLCBmYWxzZSwKKwkJCQkJCQkJCSBJbnZhbGlkT2lk KTsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBKU09OIHZhbHVlIGV4cHJlc3Npb24gdXNpbmcg dW5zcGVjaWZpZWQgZm9ybWF0IGJ5IGRlZmF1bHQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3Ry YW5zZm9ybUpzb25WYWx1ZUV4cHJEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblZh bHVlRXhwciAqanZlKQoreworCXJldHVybiB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByRXh0KHBz dGF0ZSwganZlLCBKU19GT1JNQVRfREVGQVVMVCwgZmFsc2UsCisJCQkJCQkJCQkgSW52YWxp ZE9pZCk7Cit9CisKKy8qCisgKiBDaGVja3Mgc3BlY2lmaWVkIG91dHB1dCBmb3JtYXQgZm9y IGl0cyBhcHBsaWNhYmlsaXR5IHRvIHRoZSB0YXJnZXQgdHlwZS4KKyAqLworc3RhdGljIHZv aWQKK2NoZWNrSnNvbk91dHB1dEZvcm1hdChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEpz b25Gb3JtYXQgKmZvcm1hdCwKKwkJCQkJICBPaWQgdGFyZ2V0dHlwZSwgYm9vbCBhbGxvd19m b3JtYXRfZm9yX25vbl9zdHJpbmdzKQoreworCWlmICghYWxsb3dfZm9ybWF0X2Zvcl9ub25f c3RyaW5ncyAmJgorCQlmb3JtYXQtPmZvcm1hdF90eXBlICE9IEpTX0ZPUk1BVF9ERUZBVUxU ICYmCisJCSh0YXJnZXR0eXBlICE9IEJZVEVBT0lEICYmCisJCSB0YXJnZXR0eXBlICE9IEpT T05PSUQgJiYKKwkJIHRhcmdldHR5cGUgIT0gSlNPTkJPSUQpKQorCXsKKwkJY2hhcgkJdHlw Y2F0ZWdvcnk7CisJCWJvb2wJCXR5cGlzcHJlZmVycmVkOworCisJCWdldF90eXBlX2NhdGVn b3J5X3ByZWZlcnJlZCh0YXJnZXR0eXBlLCAmdHlwY2F0ZWdvcnksICZ0eXBpc3ByZWZlcnJl ZCk7CisKKwkJaWYgKHR5cGNhdGVnb3J5ICE9IFRZUENBVEVHT1JZX1NUUklORykKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvcm1hdC0+bG9jYXRp b24pLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIEpTT04gZm9ybWF0IHdpdGggbm9uLXN0 cmluZyBvdXRwdXQgdHlwZXMiKSkpOworCX0KKworCWlmIChmb3JtYXQtPmZvcm1hdF90eXBl ID09IEpTX0ZPUk1BVF9KU09OKQorCXsKKwkJSnNvbkVuY29kaW5nIGVuYyA9IGZvcm1hdC0+ ZW5jb2RpbmcgIT0gSlNfRU5DX0RFRkFVTFQgPworCQkJCQkJICAgZm9ybWF0LT5lbmNvZGlu ZyA6IEpTX0VOQ19VVEY4OworCisJCWlmICh0YXJnZXR0eXBlICE9IEJZVEVBT0lEICYmCisJ CQlmb3JtYXQtPmVuY29kaW5nICE9IEpTX0VOQ19ERUZBVUxUKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9ybWF0LT5sb2NhdGlvbiksCisJCQkJ CSBlcnJtc2coImNhbm5vdCBzZXQgSlNPTiBlbmNvZGluZyBmb3Igbm9uLWJ5dGVhIG91dHB1 dCB0eXBlcyIpKSk7CisKKwkJaWYgKGVuYyAhPSBKU19FTkNfVVRGOCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJIGVycm1zZygidW5zdXBwb3J0ZWQgSlNPTiBlbmNvZGluZyIpLAorCQkJCQkgZXJy aGludCgib25seSBVVEY4IEpTT04gZW5jb2RpbmcgaXMgc3VwcG9ydGVkIiksCisJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JtYXQtPmxvY2F0aW9uKSkpOworCX0KK30K KworLyoKKyAqIFRyYW5zZm9ybSBKU09OIG91dHB1dCBjbGF1c2UuCisgKgorICogQXNzaWdu cyB0YXJnZXQgdHlwZSBvaWQgYW5kIG1vZGlmaWVyLgorICogQXNzaWducyBkZWZhdWx0IGZv cm1hdCBvciBjaGVja3Mgc3BlY2lmaWVkIGZvcm1hdCBmb3IgaXRzIGFwcGxpY2FiaWxpdHkg dG8KKyAqIHRoZSB0YXJnZXQgdHlwZS4KKyAqLworc3RhdGljIEpzb25SZXR1cm5pbmcgKgor dHJhbnNmb3JtSnNvbk91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEpzb25PdXRw dXQgKm91dHB1dCwKKwkJCQkJYm9vbCBhbGxvd19mb3JtYXQpCit7CisJSnNvblJldHVybmlu ZyAqcmV0OworCisJLyogaWYgb3V0cHV0IGNsYXVzZSBpcyBub3Qgc3BlY2lmaWVkLCBtYWtl IGRlZmF1bHQgY2xhdXNlIHZhbHVlICovCisJaWYgKCFvdXRwdXQpCisJeworCQlyZXQgPSBt YWtlTm9kZShKc29uUmV0dXJuaW5nKTsKKworCQlyZXQtPmZvcm1hdCA9IG1ha2VKc29uRm9y bWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQlyZXQtPnR5 cGlkID0gSW52YWxpZE9pZDsKKwkJcmV0LT50eXBtb2QgPSAtMTsKKworCQlyZXR1cm4gcmV0 OworCX0KKworCXJldCA9IGNvcHlPYmplY3Qob3V0cHV0LT5yZXR1cm5pbmcpOworCisJdHlw ZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCBvdXRwdXQtPnR5cGVOYW1lLCAmcmV0LT50eXBp ZCwgJnJldC0+dHlwbW9kKTsKKworCWlmIChvdXRwdXQtPnR5cGVOYW1lLT5zZXRvZikKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJIGVycm1zZygicmV0dXJuaW5nIFNFVE9GIHR5cGVzIGlzIG5vdCBzdXBw b3J0ZWQgaW4gU1FML0pTT04gZnVuY3Rpb25zIikpKTsKKworCWlmIChyZXQtPmZvcm1hdC0+ Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0RFRkFVTFQpCisJCS8qIGFzc2lnbiBKU09OQiBm b3JtYXQgd2hlbiByZXR1cm5pbmcganNvbmIsIG9yIEpTT04gZm9ybWF0IG90aGVyd2lzZSAq LworCQlyZXQtPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPQorCQkJcmV0LT50eXBpZCA9PSBKU09O Qk9JRCA/IEpTX0ZPUk1BVF9KU09OQiA6IEpTX0ZPUk1BVF9KU09OOworCWVsc2UKKwkJY2hl Y2tKc29uT3V0cHV0Rm9ybWF0KHBzdGF0ZSwgcmV0LT5mb3JtYXQsIHJldC0+dHlwaWQsIGFs bG93X2Zvcm1hdCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogVHJhbnNmb3JtIEpT T04gb3V0cHV0IGNsYXVzZSBvZiBKU09OIGNvbnRydWN0b3IgZnVuY3Rpb25zLgorICoKKyAq IERlcml2ZSBSRVRVUk5JTkcgdHlwZSwgaWYgbm90IHNwZWNpZmllZCwgZnJvbSBhcmd1bWVu dCB0eXBlcy4KKyAqLworc3RhdGljIEpzb25SZXR1cm5pbmcgKgordHJhbnNmb3JtSnNvbkNv bnN0cnVjdG9yT3V0cHV0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbk91dHB1dCAqb3V0cHV0 LAorCQkJCQkJCSAgIExpc3QgKmFyZ3MpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5n ID0gdHJhbnNmb3JtSnNvbk91dHB1dChwc3RhdGUsIG91dHB1dCwgdHJ1ZSk7CisKKwlpZiAo IU9pZElzVmFsaWQocmV0dXJuaW5nLT50eXBpZCkpCisJeworCQlMaXN0Q2VsbCAgICpsYzsK KwkJYm9vbAkJaGF2ZV9qc29uID0gZmFsc2U7CisJCWJvb2wJCWhhdmVfanNvbmIgPSBmYWxz ZTsKKworCQlmb3JlYWNoKGxjLCBhcmdzKQorCQl7CisJCQlOb2RlCSAgICpleHByID0gbGZp cnN0KGxjKTsKKwkJCU9pZAkJCXR5cGlkID0gZXhwclR5cGUoZXhwcik7CisKKwkJCWhhdmVf anNvbiB8PSB0eXBpZCA9PSBKU09OT0lEOworCQkJaGF2ZV9qc29uYiB8PSB0eXBpZCA9PSBK U09OQk9JRDsKKworCQkJaWYgKGhhdmVfanNvbmIpCisJCQkJYnJlYWs7CisJCX0KKworCQlp ZiAoaGF2ZV9qc29uYikKKwkJeworCQkJcmV0dXJuaW5nLT50eXBpZCA9IEpTT05CT0lEOwor CQkJcmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID0gSlNfRk9STUFUX0pTT05COwor CQl9CisJCWVsc2UKKwkJeworCQkJLyogTm90ZTogdGhpcyBpbmNsdWRlcyB0aGUgaGF2ZV9q c29uIGNhc2UgKi8KKwkJCQorCQkJLyogWFhYIFRFWFQgaXMgZGVmYXVsdCBieSB0aGUgc3Rh bmRhcmQsIGJ1dCB3ZSByZXR1cm4gSlNPTiAqLworCQkJcmV0dXJuaW5nLT50eXBpZCA9IEpT T05PSUQ7CisJCQlyZXR1cm5pbmctPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPSBKU19GT1JNQVRf SlNPTjsKKwkJfQorCisJCXJldHVybmluZy0+dHlwbW9kID0gLTE7CisJfQorCisJcmV0dXJu IHJldHVybmluZzsKK30KKworLyoKKyAqIENvZXJjZSBqc29uW2JdLXZhbHVlZCBmdW5jdGlv biBleHByZXNzaW9uIHRvIHRoZSBvdXRwdXQgdHlwZS4KKyAqLworc3RhdGljIE5vZGUgKgor Y29lcmNlSnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwKKwkJ CQkgICBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIGJvb2wgcmVwb3J0X2Vycm9y KQoreworCU5vZGUJICAgKnJlczsKKwlpbnQJCQlsb2NhdGlvbjsKKwlPaWQJCQlleHBydHlw ZSA9IGV4cHJUeXBlKGV4cHIpOworCisJLyogaWYgb3V0cHV0IHR5cGUgaXMgbm90IHNwZWNp ZmllZCBvciBlcXVhbHMgdG8gZnVuY3Rpb24gdHlwZSwgcmV0dXJuICovCisJaWYgKCFPaWRJ c1ZhbGlkKHJldHVybmluZy0+dHlwaWQpIHx8IHJldHVybmluZy0+dHlwaWQgPT0gZXhwcnR5 cGUpCisJCXJldHVybiBleHByOworCisJbG9jYXRpb24gPSBleHByTG9jYXRpb24oZXhwcik7 CisKKwlpZiAobG9jYXRpb24gPCAwKQorCQlsb2NhdGlvbiA9IHJldHVybmluZyA/IHJldHVy bmluZy0+Zm9ybWF0LT5sb2NhdGlvbiA6IC0xOworCisJLyogc3BlY2lhbCBjYXNlIGZvciBS RVRVUk5JTkcgYnl0ZWEgRk9STUFUIGpzb24gKi8KKwlpZiAocmV0dXJuaW5nLT5mb3JtYXQt PmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9KU09OICYmCisJCXJldHVybmluZy0+dHlwaWQg PT0gQllURUFPSUQpCisJeworCQkvKiBlbmNvZGUganNvbiB0ZXh0IGludG8gYnl0ZWEgdXNp bmcgcGdfY29udmVydF90bygpICovCisJCU5vZGUJICAgKnRleHByID0gY29lcmNlX3RvX3Nw ZWNpZmljX3R5cGUocHN0YXRlLCBleHByLCBURVhUT0lELAorCQkJCQkJCQkJCQkJCSJKU09O X0ZVTkNUSU9OIik7CisJCUNvbnN0CSAgICplbmMgPSBnZXRKc29uRW5jb2RpbmdDb25zdChy ZXR1cm5pbmctPmZvcm1hdCk7CisJCUZ1bmNFeHByICAgKmZleHByID0gbWFrZUZ1bmNFeHBy KEZfQ09OVkVSVF9UTywgQllURUFPSUQsCisJCQkJCQkJCQkJIGxpc3RfbWFrZTIodGV4cHIs IGVuYyksCisJCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkJ IENPRVJDRV9FWFBMSUNJVF9DQUxMKTsKKwkJZmV4cHItPmxvY2F0aW9uID0gbG9jYXRpb247 CisKKwkJcmV0dXJuIChOb2RlICopIGZleHByOworCX0KKworCS8qIHRyeSB0byBjb2VyY2Ug ZXhwcmVzc2lvbiB0byB0aGUgb3V0cHV0IHR5cGUgKi8KKwlyZXMgPSBjb2VyY2VfdG9fdGFy Z2V0X3R5cGUocHN0YXRlLCBleHByLCBleHBydHlwZSwKKwkJCQkJCQkJcmV0dXJuaW5nLT50 eXBpZCwgcmV0dXJuaW5nLT50eXBtb2QsCisJCQkJCQkJCS8qIFhYWCB0aHJvd2luZyBlcnJv cnMgd2hlbiBjYXN0aW5nIHRvIGNoYXIoTikgKi8KKwkJCQkJCQkJQ09FUkNJT05fRVhQTElD SVQsCisJCQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQVNULAorCQkJCQkJCQlsb2NhdGlvbik7 CisKKwlpZiAoIXJlcyAmJiByZXBvcnRfZXJyb3IpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3Qg Y2FzdCB0eXBlICVzIHRvICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJ0eXBlKSwK KwkJCQkJCWZvcm1hdF90eXBlX2JlKHJldHVybmluZy0+dHlwaWQpKSwKKwkJCQkgcGFyc2Vy X2NvZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24sIGV4cHIpKSk7CisKKwly ZXR1cm4gcmVzOworfQorCitzdGF0aWMgTm9kZSAqCittYWtlSnNvbkNvbnN0cnVjdG9yRXhw cihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25Db25zdHJ1Y3RvclR5cGUgdHlwZSwKKwkJCQkJ CUxpc3QgKmFyZ3MsIEV4cHIgKmZleHByLCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJ CQkJCQlib29sIHVuaXF1ZSwgYm9vbCBhYnNlbnRfb25fbnVsbCwgaW50IGxvY2F0aW9uKQor eworCUpzb25Db25zdHJ1Y3RvckV4cHIgKmpzY3RvciA9IG1ha2VOb2RlKEpzb25Db25zdHJ1 Y3RvckV4cHIpOworCU5vZGUJICAgKnBsYWNlaG9sZGVyOworCU5vZGUJICAgKmNvZXJjaW9u OworCU9pZAkJCWludGVybWVkaWF0ZV90eXBpZCA9CisJCXJldHVybmluZy0+Zm9ybWF0LT5m b3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfSlNPTkIgPyBKU09OQk9JRCA6IEpTT05PSUQ7CisK Kwlqc2N0b3ItPmFyZ3MgPSBhcmdzOworCWpzY3Rvci0+ZnVuYyA9IGZleHByOworCWpzY3Rv ci0+dHlwZSA9IHR5cGU7CisJanNjdG9yLT5yZXR1cm5pbmcgPSByZXR1cm5pbmc7CisJanNj dG9yLT51bmlxdWUgPSB1bmlxdWU7CisJanNjdG9yLT5hYnNlbnRfb25fbnVsbCA9IGFic2Vu dF9vbl9udWxsOworCWpzY3Rvci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCWlmIChmZXhw cikKKwkJcGxhY2Vob2xkZXIgPSBtYWtlQ2FzZVRlc3RFeHByKChOb2RlICopIGZleHByKTsK KwllbHNlCisJeworCQlDYXNlVGVzdEV4cHIgKmN0ZSA9IG1ha2VOb2RlKENhc2VUZXN0RXhw cik7CisKKwkJY3RlLT50eXBlSWQgPSBpbnRlcm1lZGlhdGVfdHlwaWQ7CisJCWN0ZS0+dHlw ZU1vZCA9IC0xOworCQljdGUtPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJcGxhY2Vo b2xkZXIgPSAoTm9kZSAqKSBjdGU7CisJfQorCisJY29lcmNpb24gPSBjb2VyY2VKc29uRnVu Y0V4cHIocHN0YXRlLCBwbGFjZWhvbGRlciwgcmV0dXJuaW5nLCB0cnVlKTsKKworCWlmIChj b2VyY2lvbiAhPSBwbGFjZWhvbGRlcikKKwkJanNjdG9yLT5jb2VyY2lvbiA9IChFeHByICop IGNvZXJjaW9uOworCisJcmV0dXJuIChOb2RlICopIGpzY3RvcjsKK30KKworLyoKKyAqIFRy YW5zZm9ybSBKU09OX09CSkVDVCgpIGNvbnN0cnVjdG9yLgorICoKKyAqIEpTT05fT0JKRUNU KCkgaXMgdHJhbnNmb3JtZWQgaW50byBqc29uW2JdX2J1aWxkX29iamVjdFtfZXh0XSgpIGNh bGwKKyAqIGRlcGVuZGluZyBvbiB0aGUgb3V0cHV0IEpTT04gZm9ybWF0LiBUaGUgZmlyc3Qg dHdvIGFyZ3VtZW50cyBvZgorICoganNvbltiXV9idWlsZF9vYmplY3RfZXh0KCkgYXJlIGFi c2VudF9vbl9udWxsIGFuZCBjaGVja19rZXlfdW5pcXVlbmVzcy4KKyAqCisgKiBUaGVuIGZ1 bmN0aW9uIGNhbGwgcmVzdWx0IGlzIGNvZXJjZWQgdG8gdGhlIHRhcmdldCB0eXBlLgorICov CitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VT dGF0ZSAqcHN0YXRlLCBKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpCit7CisJSnNvblJl dHVybmluZyAqcmV0dXJuaW5nOworCUxpc3QJICAgKmFyZ3MgPSBOSUw7CisKKwkvKiB0cmFu c2Zvcm0ga2V5LXZhbHVlIHBhaXJzLCBpZiBhbnkgKi8KKwlpZiAoY3Rvci0+ZXhwcnMpCisJ eworCQlMaXN0Q2VsbCAgICpsYzsKKworCQkvKiB0cmFuc2Zvcm0gYW5kIGFwcGVuZCBrZXkt dmFsdWUgYXJndW1lbnRzICovCisJCWZvcmVhY2gobGMsIGN0b3ItPmV4cHJzKQorCQl7CisJ CQlKc29uS2V5VmFsdWUgKmt2ID0gY2FzdE5vZGUoSnNvbktleVZhbHVlLCBsZmlyc3QobGMp KTsKKwkJCU5vZGUJICAgKmtleSA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgKE5v ZGUgKikga3YtPmtleSk7CisJCQlOb2RlCSAgICp2YWwgPSB0cmFuc2Zvcm1Kc29uVmFsdWVF eHByRGVmYXVsdChwc3RhdGUsIGt2LT52YWx1ZSk7CisKKwkJCWFyZ3MgPSBsYXBwZW5kKGFy Z3MsIGtleSk7CisJCQlhcmdzID0gbGFwcGVuZChhcmdzLCB2YWwpOworCQl9CisJfQorCisJ cmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbkNvbnN0cnVjdG9yT3V0cHV0KHBzdGF0ZSwgY3Rv ci0+b3V0cHV0LCBhcmdzKTsKKworCXJldHVybiBtYWtlSnNvbkNvbnN0cnVjdG9yRXhwcihw c3RhdGUsIEpTQ1RPUl9KU09OX09CSkVDVCwgYXJncywgTlVMTCwKKwkJCQkJCQkJICAgcmV0 dXJuaW5nLCBjdG9yLT51bmlxdWUsCisJCQkJCQkJCSAgIGN0b3ItPmFic2VudF9vbl9udWxs LCBjdG9yLT5sb2NhdGlvbik7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTl9BUlJBWShx dWVyeSBbRk9STUFUXSBbUkVUVVJOSU5HXSBbT04gTlVMTF0pIGludG8KKyAqICAoU0VMRUNU ICBKU09OX0FSUkFZQUdHKGEgIFtGT1JNQVRdIFtSRVRVUk5JTkddIFtPTiBOVUxMXSkgRlJP TSAocXVlcnkpIHEoYSkpCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25BcnJh eVF1ZXJ5Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkgICBKc29u QXJyYXlRdWVyeUNvbnN0cnVjdG9yICpjdG9yKQoreworCVN1YkxpbmsJICAgKnN1Ymxpbmsg PSBtYWtlTm9kZShTdWJMaW5rKTsKKwlTZWxlY3RTdG10ICpzZWxlY3QgPSBtYWtlTm9kZShT ZWxlY3RTdG10KTsKKwlSYW5nZVN1YnNlbGVjdCAqcmFuZ2UgPSBtYWtlTm9kZShSYW5nZVN1 YnNlbGVjdCk7CisJQWxpYXMJICAgKmFsaWFzID0gbWFrZU5vZGUoQWxpYXMpOworCVJlc1Rh cmdldCAgKnRhcmdldCA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisJSnNvbkFycmF5QWdnICph Z2cgPSBtYWtlTm9kZShKc29uQXJyYXlBZ2cpOworCUNvbHVtblJlZiAgKmNvbHJlZiA9IG1h a2VOb2RlKENvbHVtblJlZik7CisJUXVlcnkJICAgKnF1ZXJ5OworCVBhcnNlU3RhdGUgKnFw c3RhdGU7CisKKwkvKiBUcmFuc2Zvcm0gcXVlcnkgb25seSBmb3IgY291bnRpbmcgdGFyZ2V0 IGxpc3QgZW50cmllcy4gKi8KKwlxcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKHBzdGF0ZSk7 CisKKwlxdWVyeSA9IHRyYW5zZm9ybVN0bXQocXBzdGF0ZSwgY3Rvci0+cXVlcnkpOworCisJ aWYgKGNvdW50X25vbmp1bmtfdGxpc3RfZW50cmllcyhxdWVyeS0+dGFyZ2V0TGlzdCkgIT0g MSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJIGVycm1zZygic3VicXVlcnkgbXVzdCByZXR1cm4gb25seSBvbmUgY29sdW1u IiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGN0b3ItPmxvY2F0aW9uKSkp OworCisJZnJlZV9wYXJzZXN0YXRlKHFwc3RhdGUpOworCisJY29scmVmLT5maWVsZHMgPSBs aXN0X21ha2UyKG1ha2VTdHJpbmcocHN0cmR1cCgicSIpKSwKKwkJCQkJCQkJbWFrZVN0cmlu Zyhwc3RyZHVwKCJhIikpKTsKKwljb2xyZWYtPmxvY2F0aW9uID0gY3Rvci0+bG9jYXRpb247 CisKKwlhZ2ctPmFyZyA9IG1ha2VKc29uVmFsdWVFeHByKChFeHByICopIGNvbHJlZiwgY3Rv ci0+Zm9ybWF0KTsKKwlhZ2ctPmFic2VudF9vbl9udWxsID0gY3Rvci0+YWJzZW50X29uX251 bGw7CisJYWdnLT5jb25zdHJ1Y3RvciA9IG1ha2VOb2RlKEpzb25BZ2dDb25zdHJ1Y3Rvcik7 CisJYWdnLT5jb25zdHJ1Y3Rvci0+YWdnX29yZGVyID0gTklMOworCWFnZy0+Y29uc3RydWN0 b3ItPm91dHB1dCA9IGN0b3ItPm91dHB1dDsKKwlhZ2ctPmNvbnN0cnVjdG9yLT5sb2NhdGlv biA9IGN0b3ItPmxvY2F0aW9uOworCisJdGFyZ2V0LT5uYW1lID0gTlVMTDsKKwl0YXJnZXQt PmluZGlyZWN0aW9uID0gTklMOworCXRhcmdldC0+dmFsID0gKE5vZGUgKikgYWdnOworCXRh cmdldC0+bG9jYXRpb24gPSBjdG9yLT5sb2NhdGlvbjsKKworCWFsaWFzLT5hbGlhc25hbWUg PSBwc3RyZHVwKCJxIik7CisJYWxpYXMtPmNvbG5hbWVzID0gbGlzdF9tYWtlMShtYWtlU3Ry aW5nKHBzdHJkdXAoImEiKSkpOworCisJcmFuZ2UtPmxhdGVyYWwgPSBmYWxzZTsKKwlyYW5n ZS0+c3VicXVlcnkgPSBjdG9yLT5xdWVyeTsKKwlyYW5nZS0+YWxpYXMgPSBhbGlhczsKKwor CXNlbGVjdC0+dGFyZ2V0TGlzdCA9IGxpc3RfbWFrZTEodGFyZ2V0KTsKKwlzZWxlY3QtPmZy b21DbGF1c2UgPSBsaXN0X21ha2UxKHJhbmdlKTsKKworCXN1YmxpbmstPnN1YkxpbmtUeXBl ID0gRVhQUl9TVUJMSU5LOworCXN1YmxpbmstPnN1YkxpbmtJZCA9IDA7CisJc3VibGluay0+ dGVzdGV4cHIgPSBOVUxMOworCXN1YmxpbmstPm9wZXJOYW1lID0gTklMOworCXN1Ymxpbmst PnN1YnNlbGVjdCA9IChOb2RlICopIHNlbGVjdDsKKwlzdWJsaW5rLT5sb2NhdGlvbiA9IGN0 b3ItPmxvY2F0aW9uOworCisJcmV0dXJuIHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwg KE5vZGUgKikgc3VibGluayk7Cit9CisKKy8qCisgKiBDb21tb24gY29kZSBmb3IgSlNPTl9P QkpFQ1RBR0cgYW5kIEpTT05fQVJSQVlBR0cgdHJhbnNmb3JtYXRpb24uCisgKi8KK3N0YXRp YyBOb2RlICoKK3RyYW5zZm9ybUpzb25BZ2dDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3Rh dGUsIEpzb25BZ2dDb25zdHJ1Y3RvciAqYWdnX2N0b3IsCisJCQkJCQkJSnNvblJldHVybmlu ZyAqcmV0dXJuaW5nLCBMaXN0ICphcmdzLAorCQkJCQkJCWNvbnN0IGNoYXIgKmFnZ2ZuLCBP aWQgYWdndHlwZSwKKwkJCQkJCQlKc29uQ29uc3RydWN0b3JUeXBlIGN0b3JfdHlwZSwKKwkJ CQkJCQlib29sIHVuaXF1ZSwgYm9vbCBhYnNlbnRfb25fbnVsbCkKK3sKKwlPaWQJCQlhZ2dm bm9pZDsKKwlOb2RlCSAgICpub2RlOworCUV4cHIJICAgKmFnZ2ZpbHRlciA9IGFnZ19jdG9y LT5hZ2dfZmlsdGVyID8gKEV4cHIgKikKKwkJdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRl LCBhZ2dfY3Rvci0+YWdnX2ZpbHRlciwKKwkJCQkJCQkgRVhQUl9LSU5EX0ZJTFRFUiwgIkZJ TFRFUiIpIDogTlVMTDsKKworCWFnZ2Zub2lkID0gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5j dGlvbkNhbGwxKHJlZ3Byb2NpbiwKKwkJCQkJCQkJCQkJCSBDU3RyaW5nR2V0RGF0dW0oYWdn Zm4pKSk7CisKKwlpZiAoYWdnX2N0b3ItPm92ZXIpCisJeworCQkvKiB3aW5kb3cgZnVuY3Rp b24gKi8KKwkJV2luZG93RnVuYyAqd2Z1bmMgPSBtYWtlTm9kZShXaW5kb3dGdW5jKTsKKwor CQl3ZnVuYy0+d2luZm5vaWQgPSBhZ2dmbm9pZDsKKwkJd2Z1bmMtPndpbnR5cGUgPSBhZ2d0 eXBlOworCQkvKiB3aW5jb2xsaWQgYW5kIGlucHV0Y29sbGlkIHdpbGwgYmUgc2V0IGJ5IHBh cnNlX2NvbGxhdGUuYyAqLworCQl3ZnVuYy0+YXJncyA9IGFyZ3M7CisJCS8qIHdpbnJlZiB3 aWxsIGJlIHNldCBieSB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbCAqLworCQl3ZnVuYy0+d2lu c3RhciA9IGZhbHNlOworCQl3ZnVuYy0+d2luYWdnID0gdHJ1ZTsKKwkJd2Z1bmMtPmFnZ2Zp bHRlciA9IGFnZ2ZpbHRlcjsKKwkJd2Z1bmMtPmxvY2F0aW9uID0gYWdnX2N0b3ItPmxvY2F0 aW9uOworCisJCS8qCisJCSAqIG9yZGVyZWQgYWdncyBub3QgYWxsb3dlZCBpbiB3aW5kb3dz IHlldAorCQkgKi8KKwkJaWYgKGFnZ19jdG9yLT5hZ2dfb3JkZXIgIT0gTklMKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkgZXJybXNnKCJhZ2dyZWdhdGUgT1JERVIgQlkgaXMgbm90IGltcGxlbWVu dGVkIGZvciB3aW5kb3cgZnVuY3Rpb25zIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBhZ2dfY3Rvci0+bG9jYXRpb24pKSk7CisKKwkJLyogcGFyc2VfYWdnLmMgZG9l cyBhZGRpdGlvbmFsIHdpbmRvdy1mdW5jLXNwZWNpZmljIHByb2Nlc3NpbmcgKi8KKwkJdHJh bnNmb3JtV2luZG93RnVuY0NhbGwocHN0YXRlLCB3ZnVuYywgYWdnX2N0b3ItPm92ZXIpOwor CisJCW5vZGUgPSAoTm9kZSAqKSB3ZnVuYzsKKwl9CisJZWxzZQorCXsKKwkJQWdncmVmCSAg ICphZ2dyZWYgPSBtYWtlTm9kZShBZ2dyZWYpOworCisJCWFnZ3JlZi0+YWdnZm5vaWQgPSBh Z2dmbm9pZDsKKwkJYWdncmVmLT5hZ2d0eXBlID0gYWdndHlwZTsKKworCQkvKiBhZ2djb2xs aWQgYW5kIGlucHV0Y29sbGlkIHdpbGwgYmUgc2V0IGJ5IHBhcnNlX2NvbGxhdGUuYyAqLwor CQlhZ2dyZWYtPmFnZ3RyYW5zdHlwZSA9IEludmFsaWRPaWQ7CQkvKiB3aWxsIGJlIHNldCBi eSBwbGFubmVyICovCisJCS8qIGFnZ2FyZ3R5cGVzIHdpbGwgYmUgc2V0IGJ5IHRyYW5zZm9y bUFnZ3JlZ2F0ZUNhbGwgKi8KKwkJLyogYWdnZGlyZWN0YXJncyBhbmQgYXJncyB3aWxsIGJl IHNldCBieSB0cmFuc2Zvcm1BZ2dyZWdhdGVDYWxsICovCisJCS8qIGFnZ29yZGVyIGFuZCBh Z2dkaXN0aW5jdCB3aWxsIGJlIHNldCBieSB0cmFuc2Zvcm1BZ2dyZWdhdGVDYWxsICovCisJ CWFnZ3JlZi0+YWdnZmlsdGVyID0gYWdnZmlsdGVyOworCQlhZ2dyZWYtPmFnZ3N0YXIgPSBm YWxzZTsKKwkJYWdncmVmLT5hZ2d2YXJpYWRpYyA9IGZhbHNlOworCQlhZ2dyZWYtPmFnZ2tp bmQgPSBBR0dLSU5EX05PUk1BTDsKKwkJLyogYWdnbGV2ZWxzdXAgd2lsbCBiZSBzZXQgYnkg dHJhbnNmb3JtQWdncmVnYXRlQ2FsbCAqLworCQlhZ2dyZWYtPmFnZ3NwbGl0ID0gQUdHU1BM SVRfU0lNUExFOwkJLyogcGxhbm5lciBtaWdodCBjaGFuZ2UgdGhpcyAqLworCQlhZ2dyZWYt PmxvY2F0aW9uID0gYWdnX2N0b3ItPmxvY2F0aW9uOworCisJCXRyYW5zZm9ybUFnZ3JlZ2F0 ZUNhbGwocHN0YXRlLCBhZ2dyZWYsIGFyZ3MsIGFnZ19jdG9yLT5hZ2dfb3JkZXIsIGZhbHNl KTsKKworCQlub2RlID0gKE5vZGUgKikgYWdncmVmOworCX0KKworCXJldHVybiBtYWtlSnNv bkNvbnN0cnVjdG9yRXhwcihwc3RhdGUsIGN0b3JfdHlwZSwgTklMLCAoRXhwciAqKSBub2Rl LAorCQkJCQkJCQkgICByZXR1cm5pbmcsIHVuaXF1ZSwgYWJzZW50X29uX251bGwsCisJCQkJ CQkJCSAgIGFnZ19jdG9yLT5sb2NhdGlvbik7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNP Tl9PQkpFQ1RBR0coKSBhZ2dyZWdhdGUgZnVuY3Rpb24uCisgKgorICogSlNPTl9PQkpFQ1RB R0coKSBpcyB0cmFuc2Zvcm1lZCBpbnRvCisgKiBqc29uW2JdX29iamVjdGFnZyhrZXksIHZh bHVlLCBhYnNlbnRfb25fbnVsbCwgY2hlY2tfdW5pcXVlKSBjYWxsIGRlcGVuZGluZyBvbgor ICogdGhlIG91dHB1dCBKU09OIGZvcm1hdC4gIFRoZW4gdGhlIGZ1bmN0aW9uIGNhbGwgcmVz dWx0IGlzIGNvZXJjZWQgdG8gdGhlCisgKiB0YXJnZXQgb3V0cHV0IHR5cGUuCisgKi8KK3N0 YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25PYmplY3RBZ2coUGFyc2VTdGF0ZSAqcHN0YXRl LCBKc29uT2JqZWN0QWdnICphZ2cpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOwor CU5vZGUJICAgKmtleTsKKwlOb2RlCSAgICp2YWw7CisJTGlzdAkgICAqYXJnczsKKwljb25z dCBjaGFyICphZ2dmbm5hbWU7CisJT2lkCQkJYWdndHlwZTsKKworCWtleSA9IHRyYW5zZm9y bUV4cHJSZWN1cnNlKHBzdGF0ZSwgKE5vZGUgKikgYWdnLT5hcmctPmtleSk7CisJdmFsID0g dHJhbnNmb3JtSnNvblZhbHVlRXhwckRlZmF1bHQocHN0YXRlLCBhZ2ctPmFyZy0+dmFsdWUp OworCWFyZ3MgPSBsaXN0X21ha2UyKGtleSwgdmFsKTsKKworCXJldHVybmluZyA9IHRyYW5z Zm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUsIGFnZy0+Y29uc3RydWN0b3ItPm91 dHB1dCwKKwkJCQkJCQkJCQkJICAgYXJncyk7CisKKwlpZiAocmV0dXJuaW5nLT5mb3JtYXQt PmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9KU09OQikKKwl7CisJCWlmIChhZ2ctPmFic2Vu dF9vbl9udWxsKQorCQkJaWYgKGFnZy0+dW5pcXVlKQorCQkJCWFnZ2ZubmFtZSA9ICJwZ19j YXRhbG9nLmpzb25iX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdCI7IC8qIEZfSlNPTkJfT0JK RUNUX0FHR19VTklRVUVfU1RSSUNUICovCisJCQllbHNlCisJCQkJYWdnZm5uYW1lID0gInBn X2NhdGFsb2cuanNvbmJfb2JqZWN0X2FnZ19zdHJpY3QiOyAvKiBGX0pTT05CX09CSkVDVF9B R0dfU1RSSUNUICovCisJCWVsc2UKKwkJCWlmIChhZ2ctPnVuaXF1ZSkKKwkJCQlhZ2dmbm5h bWUgPSAicGdfY2F0YWxvZy5qc29uYl9vYmplY3RfYWdnX3VuaXF1ZSI7IC8qIEZfSlNPTkJf T0JKRUNUX0FHR19VTklRVUUgKi8KKwkJCWVsc2UKKwkJCQlhZ2dmbm5hbWUgPSAicGdfY2F0 YWxvZy5qc29uYl9vYmplY3RfYWdnIjsgLyogRl9KU09OQl9PQkpFQ1RfQUdHICovCisKKwkJ YWdndHlwZSA9IEpTT05CT0lEOworCX0KKwllbHNlCisJeworCQlpZiAoYWdnLT5hYnNlbnRf b25fbnVsbCkKKwkJCWlmIChhZ2ctPnVuaXF1ZSkKKwkJCQlhZ2dmbm5hbWUgPSAicGdfY2F0 YWxvZy5qc29uX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdCI7IC8qIEZfSlNPTl9PQkpFQ1Rf QUdHX1VOSVFVRV9TVFJJQ1QgKi8KKwkJCWVsc2UKKwkJCQlhZ2dmbm5hbWUgPSAicGdfY2F0 YWxvZy5qc29uX29iamVjdF9hZ2dfc3RyaWN0IjsgLyogRl9KU09OX09CSkVDVF9BR0dfU1RS SUNUICovCisJCWVsc2UKKwkJCWlmIChhZ2ctPnVuaXF1ZSkKKwkJCQlhZ2dmbm5hbWUgPSAi cGdfY2F0YWxvZy5qc29uX29iamVjdF9hZ2dfdW5pcXVlIjsgLyogRl9KU09OX09CSkVDVF9B R0dfVU5JUVVFICovCisJCQllbHNlCisJCQkJYWdnZm5uYW1lID0gInBnX2NhdGFsb2cuanNv bl9vYmplY3RfYWdnIjsgLyogRl9KU09OX09CSkVDVF9BR0cgKi8KKworCQlhZ2d0eXBlID0g SlNPTk9JRDsKKwl9CisKKwlyZXR1cm4gdHJhbnNmb3JtSnNvbkFnZ0NvbnN0cnVjdG9yKHBz dGF0ZSwgYWdnLT5jb25zdHJ1Y3RvciwgcmV0dXJuaW5nLAorCQkJCQkJCQkJICAgYXJncywg YWdnZm5uYW1lLCBhZ2d0eXBlLAorCQkJCQkJCQkJICAgSlNDVE9SX0pTT05fT0JKRUNUQUdH LAorCQkJCQkJCQkJICAgYWdnLT51bmlxdWUsIGFnZy0+YWJzZW50X29uX251bGwpOworfQor CisvKgorICogVHJhbnNmb3JtIEpTT05fQVJSQVlBR0coKSBhZ2dyZWdhdGUgZnVuY3Rpb24u CisgKgorICogSlNPTl9BUlJBWUFHRygpIGlzIHRyYW5zZm9ybWVkIGludG8ganNvbltiXV9h Z2dbX3N0cmljdF0oKSBjYWxsIGRlcGVuZGluZworICogb24gdGhlIG91dHB1dCBKU09OIGZv cm1hdCBhbmQgYWJzZW50X29uX251bGwuICBUaGVuIHRoZSBmdW5jdGlvbiBjYWxsIHJlc3Vs dAorICogaXMgY29lcmNlZCB0byB0aGUgdGFyZ2V0IG91dHB1dCB0eXBlLgorICovCitzdGF0 aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uQXJyYXlBZ2coUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uQXJyYXlBZ2cgKmFnZykKK3sKKwlKc29uUmV0dXJuaW5nICpyZXR1cm5pbmc7CisJTm9k ZQkgICAqYXJnOworCWNvbnN0IGNoYXIgKmFnZ2ZubmFtZTsKKwlPaWQJCQlhZ2d0eXBlOwor CisJYXJnID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwckRlZmF1bHQocHN0YXRlLCBhZ2ctPmFy Zyk7CisKKwlyZXR1cm5pbmcgPSB0cmFuc2Zvcm1Kc29uQ29uc3RydWN0b3JPdXRwdXQocHN0 YXRlLCBhZ2ctPmNvbnN0cnVjdG9yLT5vdXRwdXQsCisJCQkJCQkJCQkJCSAgIGxpc3RfbWFr ZTEoYXJnKSk7CisKKwlpZiAocmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID09IEpT X0ZPUk1BVF9KU09OQikKKwl7CisJCWFnZ2ZubmFtZSA9IGFnZy0+YWJzZW50X29uX251bGwg PworCQkJInBnX2NhdGFsb2cuanNvbmJfYWdnX3N0cmljdCIgOiAicGdfY2F0YWxvZy5qc29u Yl9hZ2ciOworCQlhZ2d0eXBlID0gSlNPTkJPSUQ7CisJfQorCWVsc2UKKwl7CisJCWFnZ2Zu bmFtZSA9IGFnZy0+YWJzZW50X29uX251bGwgPworCQkJInBnX2NhdGFsb2cuanNvbl9hZ2df c3RyaWN0IiA6ICJwZ19jYXRhbG9nLmpzb25fYWdnIjsKKwkJYWdndHlwZSA9IEpTT05PSUQ7 CisJfQorCisJcmV0dXJuIHRyYW5zZm9ybUpzb25BZ2dDb25zdHJ1Y3Rvcihwc3RhdGUsIGFn Zy0+Y29uc3RydWN0b3IsIHJldHVybmluZywKKwkJCQkJCQkJCSAgIGxpc3RfbWFrZTEoYXJn KSwgYWdnZm5uYW1lLCBhZ2d0eXBlLAorCQkJCQkJCQkJICAgSlNDVE9SX0pTT05fQVJSQVlB R0csCisJCQkJCQkJCQkgICBmYWxzZSwgYWdnLT5hYnNlbnRfb25fbnVsbCk7Cit9CisKKy8q CisgKiBUcmFuc2Zvcm0gSlNPTl9BUlJBWSgpIGNvbnN0cnVjdG9yLgorICoKKyAqIEpTT05f QVJSQVkoKSBpcyB0cmFuc2Zvcm1lZCBpbnRvIGpzb25bYl1fYnVpbGRfYXJyYXlbX2V4dF0o KSBjYWxsCisgKiBkZXBlbmRpbmcgb24gdGhlIG91dHB1dCBKU09OIGZvcm1hdC4gVGhlIGZp cnN0IGFyZ3VtZW50IG9mCisgKiBqc29uW2JdX2J1aWxkX2FycmF5X2V4dCgpIGlzIGFic2Vu dF9vbl9udWxsLgorICoKKyAqIFRoZW4gZnVuY3Rpb24gY2FsbCByZXN1bHQgaXMgY29lcmNl ZCB0byB0aGUgdGFyZ2V0IHR5cGUuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpz b25BcnJheUNvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkFycmF5Q29uc3Ry dWN0b3IgKmN0b3IpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOworCUxpc3QJICAg KmFyZ3MgPSBOSUw7CisKKwkvKiB0cmFuc2Zvcm0gZWxlbWVudCBleHByZXNzaW9ucywgaWYg YW55ICovCisJaWYgKGN0b3ItPmV4cHJzKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJ LyogdHJhbnNmb3JtIGFuZCBhcHBlbmQgZWxlbWVudCBhcmd1bWVudHMgKi8KKwkJZm9yZWFj aChsYywgY3Rvci0+ZXhwcnMpCisJCXsKKwkJCUpzb25WYWx1ZUV4cHIgKmpzdmFsID0gY2Fz dE5vZGUoSnNvblZhbHVlRXhwciwgbGZpcnN0KGxjKSk7CisJCQlOb2RlCSAgICp2YWwgPSB0 cmFuc2Zvcm1Kc29uVmFsdWVFeHByRGVmYXVsdChwc3RhdGUsIGpzdmFsKTsKKworCQkJYXJn cyA9IGxhcHBlbmQoYXJncywgdmFsKTsKKwkJfQorCX0KKworCXJldHVybmluZyA9IHRyYW5z Zm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUsIGN0b3ItPm91dHB1dCwgYXJncyk7 CisKKwlyZXR1cm4gbWFrZUpzb25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBKU0NUT1JfSlNP Tl9BUlJBWSwgYXJncywgTlVMTCwKKwkJCQkJCQkJICAgcmV0dXJuaW5nLCBmYWxzZSwgY3Rv ci0+YWJzZW50X29uX251bGwsCisJCQkJCQkJCSAgIGN0b3ItPmxvY2F0aW9uKTsKK30KKwor c3RhdGljIE5vZGUgKgordHJhbnNmb3JtSnNvblBhcnNlQXJnKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqanNleHByLCBKc29uRm9ybWF0ICpmb3JtYXQsCisJCQkJCSAgT2lkICpleHBy dHlwZSkKK3sKKwlOb2RlCSAgICpyYXdfZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBz dGF0ZSwganNleHByKTsKKwlOb2RlCSAgICpleHByID0gcmF3X2V4cHI7CisKKwkqZXhwcnR5 cGUgPSBleHByVHlwZShleHByKTsKKworCS8qIHByZXBhcmUgaW5wdXQgZG9jdW1lbnQgKi8K KwlpZiAoKmV4cHJ0eXBlID09IEJZVEVBT0lEKQorCXsKKwkJSnNvblZhbHVlRXhwciAqanZl OworCisJCWV4cHIgPSBtYWtlQ2FzZVRlc3RFeHByKHJhd19leHByKTsKKwkJZXhwciA9IG1h a2VKc29uQnl0ZWFUb1RleHRDb252ZXJzaW9uKGV4cHIsIGZvcm1hdCwgZXhwckxvY2F0aW9u KGV4cHIpKTsKKwkJKmV4cHJ0eXBlID0gVEVYVE9JRDsKKworCQlqdmUgPSBtYWtlSnNvblZh bHVlRXhwcigoRXhwciAqKSByYXdfZXhwciwgZm9ybWF0KTsKKworCQlqdmUtPmZvcm1hdHRl ZF9leHByID0gKEV4cHIgKikgZXhwcjsKKwkJZXhwciA9IChOb2RlICopIGp2ZTsKKwl9CisJ ZWxzZQorCXsKKwkJY2hhcgkJdHlwY2F0ZWdvcnk7CisJCWJvb2wJCXR5cGlzcHJlZmVycmVk OworCisJCWdldF90eXBlX2NhdGVnb3J5X3ByZWZlcnJlZCgqZXhwcnR5cGUsICZ0eXBjYXRl Z29yeSwgJnR5cGlzcHJlZmVycmVkKTsKKworCQlpZiAoKmV4cHJ0eXBlID09IFVOS05PV05P SUQgfHwgdHlwY2F0ZWdvcnkgPT0gVFlQQ0FURUdPUllfU1RSSU5HKQorCQl7CisJCQlleHBy ID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgKE5vZGUgKikgZXhwciwgKmV4cHJ0 eXBlLAorCQkJCQkJCQkJCSBURVhUT0lELCAtMSwKKwkJCQkJCQkJCQkgQ09FUkNJT05fSU1Q TElDSVQsCisJCQkJCQkJCQkJIENPRVJDRV9JTVBMSUNJVF9DQVNULCAtMSk7CisJCQkqZXhw cnR5cGUgPSBURVhUT0lEOworCQl9CisKKwkJaWYgKGZvcm1hdC0+ZW5jb2RpbmcgIT0gSlNf RU5DX0RFRkFVTFQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBmb3JtYXQtPmxvY2F0aW9uKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IHVzZSBKU09O IEZPUk1BVCBFTkNPRElORyBjbGF1c2UgZm9yIG5vbi1ieXRlYSBpbnB1dCB0eXBlcyIpKSk7 CisJfQorCisJcmV0dXJuIGV4cHI7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSVMgSlNPTiBw cmVkaWNhdGUgaW50bworICoganNvbltiXV9pc192YWxpZChqc29uLCB2YWx1ZV90eXBlIFss IGNoZWNrX2tleV91bmlxdWVuZXNzXSkgY2FsbC4KKyAqLworc3RhdGljIE5vZGUgKgordHJh bnNmb3JtSnNvbklzUHJlZGljYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbklzUHJlZGlj YXRlICpwcmVkKQoreworCU9pZAkJCWV4cHJ0eXBlOworCU5vZGUJICAgKmV4cHIgPSB0cmFu c2Zvcm1Kc29uUGFyc2VBcmcocHN0YXRlLCBwcmVkLT5leHByLCBwcmVkLT5mb3JtYXQsCisJ CQkJCQkJCQkJCSAmZXhwcnR5cGUpOworCisJLyogbWFrZSByZXN1bHRpbmcgZXhwcmVzc2lv biAqLworCWlmIChleHBydHlwZSAhPSBURVhUT0lEICYmIGV4cHJ0eXBlICE9IEpTT05PSUQg JiYgZXhwcnR5cGUgIT0gSlNPTkJPSUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiY2Fubm90IHVz ZSB0eXBlICVzIGluIElTIEpTT04gcHJlZGljYXRlIiwKKwkJCQkJCWZvcm1hdF90eXBlX2Jl KGV4cHJ0eXBlKSkpKTsKKworCXJldHVybiBtYWtlSnNvbklzUHJlZGljYXRlKGV4cHIsIE5V TEwsIHByZWQtPnZhbHVlX3R5cGUsCisJCQkJCQkJICAgcHJlZC0+dW5pcXVlX2tleXMsIHBy ZWQtPmxvY2F0aW9uKTsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBhIEpTT04gUEFTU0lORyBj bGF1c2UuCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uRm9ybWF0VHlwZSBmb3JtYXQsIExpc3QgKmFyZ3MsCisJ CQkJCQkgTGlzdCAqKnBhc3NpbmdfdmFsdWVzLCBMaXN0ICoqcGFzc2luZ19uYW1lcykKK3sK KwlMaXN0Q2VsbCAgICpsYzsKKworCSpwYXNzaW5nX3ZhbHVlcyA9IE5JTDsKKwkqcGFzc2lu Z19uYW1lcyA9IE5JTDsKKworCWZvcmVhY2gobGMsIGFyZ3MpCisJeworCQlKc29uQXJndW1l bnQgKmFyZyA9IGNhc3ROb2RlKEpzb25Bcmd1bWVudCwgbGZpcnN0KGxjKSk7CisJCU5vZGUJ ICAgKmV4cHIgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByRXh0KHBzdGF0ZSwgYXJnLT52YWws CisJCQkJCQkJCQkJCQkJIGZvcm1hdCwgdHJ1ZSwgSW52YWxpZE9pZCk7CisKKwkJYXNzaWdu X2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGV4cHIpOworCisJCSpwYXNzaW5nX3ZhbHVlcyA9 IGxhcHBlbmQoKnBhc3NpbmdfdmFsdWVzLCBleHByKTsKKwkJKnBhc3NpbmdfbmFtZXMgPSBs YXBwZW5kKCpwYXNzaW5nX25hbWVzLCBtYWtlU3RyaW5nKGFyZy0+bmFtZSkpOworCX0KK30K KworLyoKKyAqIFRyYW5zZm9ybSBhIEpTT04gQkVIQVZJT1IgY2xhdXNlLgorICovCitzdGF0 aWMgSnNvbkJlaGF2aW9yICoKK3RyYW5zZm9ybUpzb25CZWhhdmlvcihQYXJzZVN0YXRlICpw c3RhdGUsIEpzb25CZWhhdmlvciAqYmVoYXZpb3IsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlw ZSBkZWZhdWx0X2JlaGF2aW9yKQoreworCUpzb25CZWhhdmlvclR5cGUgYmVoYXZpb3JfdHlw ZTsKKwlOb2RlCSAgICpkZWZhdWx0X2V4cHI7CisKKwliZWhhdmlvcl90eXBlID0gYmVoYXZp b3IgPyBiZWhhdmlvci0+YnR5cGUgOiBkZWZhdWx0X2JlaGF2aW9yOworCWRlZmF1bHRfZXhw ciA9IGJlaGF2aW9yX3R5cGUgIT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUID8gTlVMTCA6CisJ CXRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYmVoYXZpb3ItPmRlZmF1bHRfZXhwcik7 CisKKwlyZXR1cm4gbWFrZUpzb25CZWhhdmlvcihiZWhhdmlvcl90eXBlLCBkZWZhdWx0X2V4 cHIpOworfQorCisvKgorICogQ29tbW9uIGNvZGUgZm9yIEpTT05fVkFMVUUsIEpTT05fUVVF UlksIEpTT05fRVhJU1RTIHRyYW5zZm9ybWF0aW9uCisgKiBpbnRvIGEgSnNvbkV4cHIgbm9k ZS4KKyAqLworc3RhdGljIEpzb25FeHByICoKK3RyYW5zZm9ybUpzb25FeHByQ29tbW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQoreworCUpzb25FeHByICAg KmpzZXhwciA9IG1ha2VOb2RlKEpzb25FeHByKTsKKwlOb2RlCSAgICpwYXRoc3BlYzsKKwlK c29uRm9ybWF0VHlwZSBmb3JtYXQ7CisKKwlpZiAoZnVuYy0+Y29tbW9uLT5wYXRobmFtZSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJIGVycm1zZygiSlNPTl9UQUJMRSBwYXRoIG5hbWUgaXMgbm90IGFsbG93ZWQgaGVy ZSIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmdW5jLT5sb2NhdGlvbikp KTsKKworCWpzZXhwci0+bG9jYXRpb24gPSBmdW5jLT5sb2NhdGlvbjsKKwlqc2V4cHItPm9w ID0gZnVuYy0+b3A7CisJanNleHByLT5mb3JtYXR0ZWRfZXhwciA9IHRyYW5zZm9ybUpzb25W YWx1ZUV4cHIocHN0YXRlLCBmdW5jLT5jb21tb24tPmV4cHIpOworCisJYXNzaWduX2V4cHJf Y29sbGF0aW9ucyhwc3RhdGUsIGpzZXhwci0+Zm9ybWF0dGVkX2V4cHIpOworCisJLyogZm9y bWF0IGlzIGRldGVybWluZWQgYnkgY29udGV4dCBpdGVtIHR5cGUgKi8KKwlmb3JtYXQgPSBl eHByVHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSA9PSBKU09OQk9JRCA/IEpTX0ZPUk1B VF9KU09OQiA6IEpTX0ZPUk1BVF9KU09OOworCisJanNleHByLT5yZXN1bHRfY29lcmNpb24g PSBOVUxMOworCWpzZXhwci0+b21pdF9xdW90ZXMgPSBmYWxzZTsKKworCWpzZXhwci0+Zm9y bWF0ID0gZnVuYy0+Y29tbW9uLT5leHByLT5mb3JtYXQ7CisKKwlwYXRoc3BlYyA9IHRyYW5z Zm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgZnVuYy0+Y29tbW9uLT5wYXRoc3BlYyk7CisKKwlq c2V4cHItPnBhdGhfc3BlYyA9CisJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIHBh dGhzcGVjLCBleHByVHlwZShwYXRoc3BlYyksCisJCQkJCQkJICBKU09OUEFUSE9JRCwgLTEs CisJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJ CQkJCQkJICBleHByTG9jYXRpb24ocGF0aHNwZWMpKTsKKwlpZiAoIWpzZXhwci0+cGF0aF9z cGVjKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coIkpTT04gcGF0aCBleHByZXNzaW9uIG11c3QgYmUg dHlwZSAlcywgbm90IHR5cGUgJXMiLAorCQkJCQkJImpzb25wYXRoIiwgZm9ybWF0X3R5cGVf YmUoZXhwclR5cGUocGF0aHNwZWMpKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihwYXRoc3BlYykpKSk7CisKKwkvKiB0cmFuc2Zvcm0gYW5kIGNv ZXJjZSB0byBqc29uW2JdIHBhc3NpbmcgYXJndW1lbnRzICovCisJdHJhbnNmb3JtSnNvblBh c3NpbmdBcmdzKHBzdGF0ZSwgZm9ybWF0LCBmdW5jLT5jb21tb24tPnBhc3NpbmcsCisJCQkJ CQkJICZqc2V4cHItPnBhc3NpbmdfdmFsdWVzLCAmanNleHByLT5wYXNzaW5nX25hbWVzKTsK KworCWlmIChmdW5jLT5vcCAhPSBJU19KU09OX0VYSVNUUykKKwkJanNleHByLT5vbl9lbXB0 eSA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2VtcHR5LAorCQkJ CQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfTlVMTCk7CisKKwlqc2V4cHItPm9uX2Vycm9yID0g dHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJCQkJ CQkJCSBmdW5jLT5vcCA9PSBJU19KU09OX0VYSVNUUyA/CisJCQkJCQkJCQkJCSBKU09OX0JF SEFWSU9SX0ZBTFNFIDoKKwkJCQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfTlVMTCk7CisKKwly ZXR1cm4ganNleHByOworfQorCisvKgorICogQXNzaWduIGRlZmF1bHQgSlNPTiByZXR1cm5p bmcgdHlwZSBmcm9tIHRoZSBzcGVjaWZpZWQgZm9ybWF0IG9yIGZyb20KKyAqIHRoZSBjb250 ZXh0IGl0ZW0gdHlwZS4KKyAqLworc3RhdGljIHZvaWQKK2Fzc2lnbkRlZmF1bHRKc29uUmV0 dXJuaW5nVHlwZShOb2RlICpjb250ZXh0X2l0ZW0sIEpzb25Gb3JtYXQgKmNvbnRleHRfZm9y bWF0LAorCQkJCQkJCSAgIEpzb25SZXR1cm5pbmcgKnJldCkKK3sKKwlib29sCQlpc19qc29u YjsKKworCXJldC0+Zm9ybWF0ID0gY29weU9iamVjdChjb250ZXh0X2Zvcm1hdCk7CisKKwlp ZiAocmV0LT5mb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9ERUZBVUxUKQorCQlp c19qc29uYiA9IGV4cHJUeXBlKGNvbnRleHRfaXRlbSkgPT0gSlNPTkJPSUQ7CisJZWxzZQor CQlpc19qc29uYiA9IHJldC0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfSlNP TkI7CisKKwlyZXQtPnR5cGlkID0gaXNfanNvbmIgPyBKU09OQk9JRCA6IEpTT05PSUQ7CisJ cmV0LT50eXBtb2QgPSAtMTsKK30KKworLyoKKyAqIFRyeSB0byBjb2VyY2UgZXhwcmVzc2lv biB0byB0aGUgb3V0cHV0IHR5cGUgb3IKKyAqIHVzZSBqc29uX3BvcHVsYXRlX3R5cGUoKSBm b3IgY29tcG9zaXRlLCBhcnJheSBhbmQgZG9tYWluIHR5cGVzIG9yCisgKiB1c2UgY29lcmNp b24gdmlhIEkvTy4KKyAqLworc3RhdGljIEpzb25Db2VyY2lvbiAqCitjb2VyY2VKc29uRXhw cihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIGNvbnN0IEpzb25SZXR1cm5pbmcg KnJldHVybmluZykKK3sKKwljaGFyCQl0eXB0eXBlOworCUpzb25Db2VyY2lvbiAqY29lcmNp b24gPSBtYWtlTm9kZShKc29uQ29lcmNpb24pOworCisJY29lcmNpb24tPmV4cHIgPSBjb2Vy Y2VKc29uRnVuY0V4cHIocHN0YXRlLCBleHByLCByZXR1cm5pbmcsIGZhbHNlKTsKKworCWlm IChjb2VyY2lvbi0+ZXhwcikKKwl7CisJCWlmIChjb2VyY2lvbi0+ZXhwciA9PSBleHByKQor CQkJY29lcmNpb24tPmV4cHIgPSBOVUxMOworCisJCXJldHVybiBjb2VyY2lvbjsKKwl9CisK Kwl0eXB0eXBlID0gZ2V0X3R5cHR5cGUocmV0dXJuaW5nLT50eXBpZCk7CisKKwlpZiAocmV0 dXJuaW5nLT50eXBpZCA9PSBSRUNPUkRPSUQgfHwKKwkJdHlwdHlwZSA9PSBUWVBUWVBFX0NP TVBPU0lURSB8fAorCQl0eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOIHx8CisJCXR5cGVfaXNf YXJyYXkocmV0dXJuaW5nLT50eXBpZCkpCisJCWNvZXJjaW9uLT52aWFfcG9wdWxhdGUgPSB0 cnVlOworCWVsc2UKKwkJY29lcmNpb24tPnZpYV9pbyA9IHRydWU7CisKKwlyZXR1cm4gY29l cmNpb247Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gYSBKU09OIG91dHB1dCBjbGF1c2Ugb2Yg SlNPTl9WQUxVRSBhbmQgSlNPTl9RVUVSWS4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9y bUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsCUpzb25GdW5jRXhwciAq ZnVuYywKKwkJCQkJCQlKc29uRXhwciAqanNleHByKQoreworCU5vZGUJICAgKmV4cHIgPSBq c2V4cHItPmZvcm1hdHRlZF9leHByOworCisJanNleHByLT5yZXR1cm5pbmcgPSB0cmFuc2Zv cm1Kc29uT3V0cHV0KHBzdGF0ZSwgZnVuYy0+b3V0cHV0LCBmYWxzZSk7CisKKwkvKiBKU09O X1ZBTFVFIHJldHVybnMgdGV4dCBieSBkZWZhdWx0ICovCisJaWYgKGZ1bmMtPm9wID09IElT X0pTT05fVkFMVUUgJiYgIU9pZElzVmFsaWQoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSkK Kwl7CisJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IFRFWFRPSUQ7CisJCWpzZXhwci0+ cmV0dXJuaW5nLT50eXBtb2QgPSAtMTsKKwl9CisKKwlpZiAoT2lkSXNWYWxpZChqc2V4cHIt PnJldHVybmluZy0+dHlwaWQpKQorCXsKKwkJSnNvblJldHVybmluZyByZXQ7CisKKwkJaWYg KGZ1bmMtPm9wID09IElTX0pTT05fVkFMVUUgJiYKKwkJCWpzZXhwci0+cmV0dXJuaW5nLT50 eXBpZCAhPSBKU09OT0lEICYmCisJCQlqc2V4cHItPnJldHVybmluZy0+dHlwaWQgIT0gSlNP TkJPSUQpCisJCXsKKwkJCS8qIEZvcmNlZCBjb2VyY2lvbiB2aWEgSS9PIGZvciBKU09OX1ZB TFVFIGZvciBub24tSlNPTiB0eXBlcyAqLworCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24g PSBtYWtlTm9kZShKc29uQ29lcmNpb24pOworCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24t PmV4cHIgPSBOVUxMOworCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24tPnZpYV9pbyA9IHRy dWU7CisJCQlyZXR1cm47CisJCX0KKworCQlhc3NpZ25EZWZhdWx0SnNvblJldHVybmluZ1R5 cGUoanNleHByLT5mb3JtYXR0ZWRfZXhwciwganNleHByLT5mb3JtYXQsICZyZXQpOworCisJ CWlmIChyZXQudHlwaWQgIT0ganNleHByLT5yZXR1cm5pbmctPnR5cGlkIHx8CisJCQlyZXQu dHlwbW9kICE9IGpzZXhwci0+cmV0dXJuaW5nLT50eXBtb2QpCisJCXsKKwkJCU5vZGUJICAg KnBsYWNlaG9sZGVyID0gbWFrZUNhc2VUZXN0RXhwcihleHByKTsKKworCQkJQXNzZXJ0KCgo Q2FzZVRlc3RFeHByICopIHBsYWNlaG9sZGVyKS0+dHlwZUlkID09IHJldC50eXBpZCk7CisJ CQlBc3NlcnQoKChDYXNlVGVzdEV4cHIgKikgcGxhY2Vob2xkZXIpLT50eXBlTW9kID09IHJl dC50eXBtb2QpOworCisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25F eHByKHBzdGF0ZSwgcGxhY2Vob2xkZXIsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJu aW5nKTsKKwkJfQorCX0KKwllbHNlCisJCWFzc2lnbkRlZmF1bHRKc29uUmV0dXJuaW5nVHlw ZShqc2V4cHItPmZvcm1hdHRlZF9leHByLCBqc2V4cHItPmZvcm1hdCwKKwkJCQkJCQkJCSAg IGpzZXhwci0+cmV0dXJuaW5nKTsKK30KKworLyoKKyAqIENvZXJjZSBhIGV4cHJlc3Npb24g aW4gSlNPTiBERUZBVUxUIGJlaGF2aW9yIHRvIHRoZSB0YXJnZXQgb3V0cHV0IHR5cGUuCisg Ki8KK3N0YXRpYyBOb2RlICoKK2NvZXJjZURlZmF1bHRKc29uRXhwcihQYXJzZVN0YXRlICpw c3RhdGUsIEpzb25FeHByICpqc2V4cHIsIE5vZGUgKmRlZmV4cHIpCit7CisJaW50CQkJbG9j YXRpb247CisJT2lkCQkJZXhwcnR5cGU7CisKKwlpZiAoIWRlZmV4cHIpCisJCXJldHVybiBO VUxMOworCisJZXhwcnR5cGUgPSBleHByVHlwZShkZWZleHByKTsKKwlsb2NhdGlvbiA9IGV4 cHJMb2NhdGlvbihkZWZleHByKTsKKworCWlmIChsb2NhdGlvbiA8IDApCisJCWxvY2F0aW9u ID0ganNleHByLT5sb2NhdGlvbjsKKworCWRlZmV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5 cGUocHN0YXRlLAorCQkJCQkJCQkJZGVmZXhwciwKKwkJCQkJCQkJCWV4cHJ0eXBlLAorCQkJ CQkJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkLAorCQkJCQkJCQkJanNleHByLT5yZXR1 cm5pbmctPnR5cG1vZCwKKwkJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJ Q09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCQlsb2NhdGlvbik7CisKKwlpZiAoIWRl ZmV4cHIpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5OT1Rf Q09FUkNFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCBERUZBVUxUIGV4cHJlc3Npb24g dHlwZSAlcyB0byAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwZSksCisJCQkJ CQlmb3JtYXRfdHlwZV9iZShqc2V4cHItPnJldHVybmluZy0+dHlwaWQpKSwKKwkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisKKwlyZXR1cm4gZGVmZXhw cjsKK30KKworLyoKKyAqIEluaXRpYWxpemUgU1FML0pTT04gaXRlbSBjb2VyY2lvbiBmcm9t IHRoZSBTUUwgdHlwZSAidHlwaWQiIHRvIHRoZSB0YXJnZXQKKyAqICJyZXR1cm5pbmciIHR5 cGUuCisgKi8KK3N0YXRpYyBKc29uQ29lcmNpb24gKgoraW5pdEpzb25JdGVtQ29lcmNpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBPaWQgdHlwaWQsCisJCQkJCSBjb25zdCBKc29uUmV0dXJu aW5nICpyZXR1cm5pbmcpCit7CisJTm9kZQkgICAqZXhwcjsKKworCWlmICh0eXBpZCA9PSBV TktOT1dOT0lEKQorCXsKKwkJZXhwciA9IChOb2RlICopIG1ha2VOdWxsQ29uc3QoVU5LTk9X Tk9JRCwgLTEsIEludmFsaWRPaWQpOworCX0KKwllbHNlCisJeworCQlDYXNlVGVzdEV4cHIg KnBsYWNlaG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKworCQlwbGFjZWhvbGRl ci0+dHlwZUlkID0gdHlwaWQ7CisJCXBsYWNlaG9sZGVyLT50eXBlTW9kID0gLTE7CisJCXBs YWNlaG9sZGVyLT5jb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCisJCWV4cHIgPSAoTm9kZSAq KSBwbGFjZWhvbGRlcjsKKwl9CisKKwlyZXR1cm4gY29lcmNlSnNvbkV4cHIocHN0YXRlLCBl eHByLCByZXR1cm5pbmcpOworfQorCitzdGF0aWMgdm9pZAoraW5pdEpzb25JdGVtQ29lcmNp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkl0ZW1Db2VyY2lvbnMgKmNvZXJjaW9ucywK KwkJCQkJICBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIE9pZCBjb250ZXh0SXRl bVR5cGVJZCkKK3sKKwlzdHJ1Y3QKKwl7CisJCUpzb25Db2VyY2lvbiAqKmNvZXJjaW9uOwor CQlPaWQJCQl0eXBpZDsKKwl9CQkgICAqcCwKKwkJCQljb2VyY2lvblR5cGlkc1tdID0KKwkJ CQl7CisJCQkJCXsgJmNvZXJjaW9ucy0+bnVsbCwgVU5LTk9XTk9JRCB9LAorCQkJCQl7ICZj b2VyY2lvbnMtPnN0cmluZywgVEVYVE9JRCB9LAorCQkJCQl7ICZjb2VyY2lvbnMtPm51bWVy aWMsIE5VTUVSSUNPSUQgfSwKKwkJCQkJeyAmY29lcmNpb25zLT5ib29sZWFuLCBCT09MT0lE IH0sCisJCQkJCXsgJmNvZXJjaW9ucy0+ZGF0ZSwgREFURU9JRCB9LAorCQkJCQl7ICZjb2Vy Y2lvbnMtPnRpbWUsIFRJTUVPSUQgfSwKKwkJCQkJeyAmY29lcmNpb25zLT50aW1ldHosIFRJ TUVUWk9JRCB9LAorCQkJCQl7ICZjb2VyY2lvbnMtPnRpbWVzdGFtcCwgVElNRVNUQU1QT0lE IH0sCisJCQkJCXsgJmNvZXJjaW9ucy0+dGltZXN0YW1wdHosIFRJTUVTVEFNUFRaT0lEIH0s CisJCQkJCXsgJmNvZXJjaW9ucy0+Y29tcG9zaXRlLCBjb250ZXh0SXRlbVR5cGVJZCB9LAor CQkJCQl7IE5VTEwsIEludmFsaWRPaWQgfQorCQkJCX07CisKKwlmb3IgKHAgPSBjb2VyY2lv blR5cGlkczsgcC0+Y29lcmNpb247IHArKykKKwkJKnAtPmNvZXJjaW9uID0gaW5pdEpzb25J dGVtQ29lcmNpb24ocHN0YXRlLCBwLT50eXBpZCwgcmV0dXJuaW5nKTsKK30KKworLyoKKyAq IFRyYW5zZm9ybSBKU09OX1ZBTFVFLCBKU09OX1FVRVJZLCBKU09OX0VYSVNUUyBmdW5jdGlv bnMgaW50byBhIEpzb25FeHByIG5vZGUuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9y bUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykK K3sKKwlKc29uRXhwciAgICpqc2V4cHIgPSB0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihwc3Rh dGUsIGZ1bmMpOworCWNvbnN0IGNoYXIgKmZ1bmNfbmFtZSA9IE5VTEw7CisJTm9kZQkgICAq Y29udGV4dEl0ZW1FeHByID0ganNleHByLT5mb3JtYXR0ZWRfZXhwcjsKKworCXN3aXRjaCAo ZnVuYy0+b3ApCisJeworCQljYXNlIElTX0pTT05fVkFMVUU6CisJCQlmdW5jX25hbWUgPSAi SlNPTl9WQUxVRSI7CisKKwkJCXRyYW5zZm9ybUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUs IGZ1bmMsIGpzZXhwcik7CisKKwkJCWpzZXhwci0+cmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1h dF90eXBlID0gSlNfRk9STUFUX0RFRkFVTFQ7CisJCQlqc2V4cHItPnJldHVybmluZy0+Zm9y bWF0LT5lbmNvZGluZyA9IEpTX0VOQ19ERUZBVUxUOworCisJCQlqc2V4cHItPm9uX2VtcHR5 LT5kZWZhdWx0X2V4cHIgPQorCQkJCWNvZXJjZURlZmF1bHRKc29uRXhwcihwc3RhdGUsIGpz ZXhwciwKKwkJCQkJCQkJCSAganNleHByLT5vbl9lbXB0eS0+ZGVmYXVsdF9leHByKTsKKwor CQkJanNleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByID0KKwkJCQljb2VyY2VEZWZhdWx0 SnNvbkV4cHIocHN0YXRlLCBqc2V4cHIsCisJCQkJCQkJCQkgIGpzZXhwci0+b25fZXJyb3It PmRlZmF1bHRfZXhwcik7CisKKwkJCWpzZXhwci0+Y29lcmNpb25zID0gbWFrZU5vZGUoSnNv bkl0ZW1Db2VyY2lvbnMpOworCQkJaW5pdEpzb25JdGVtQ29lcmNpb25zKHBzdGF0ZSwganNl eHByLT5jb2VyY2lvbnMsIGpzZXhwci0+cmV0dXJuaW5nLAorCQkJCQkJCQkgIGV4cHJUeXBl KGNvbnRleHRJdGVtRXhwcikpOworCisJCQlicmVhazsKKworCQljYXNlIElTX0pTT05fUVVF Ulk6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9RVUVSWSI7CisKKwkJCXRyYW5zZm9ybUpzb25G dW5jRXhwck91dHB1dChwc3RhdGUsIGZ1bmMsIGpzZXhwcik7CisKKwkJCWpzZXhwci0+b25f ZW1wdHktPmRlZmF1bHRfZXhwciA9CisJCQkJY29lcmNlRGVmYXVsdEpzb25FeHByKHBzdGF0 ZSwganNleHByLAorCQkJCQkJCQkJICBqc2V4cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIp OworCisJCQlqc2V4cHItPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIgPQorCQkJCWNvZXJjZURl ZmF1bHRKc29uRXhwcihwc3RhdGUsIGpzZXhwciwKKwkJCQkJCQkJCSAganNleHByLT5vbl9l cnJvci0+ZGVmYXVsdF9leHByKTsKKworCQkJanNleHByLT53cmFwcGVyID0gZnVuYy0+d3Jh cHBlcjsKKwkJCWpzZXhwci0+b21pdF9xdW90ZXMgPSBmdW5jLT5vbWl0X3F1b3RlczsKKwor CQkJYnJlYWs7CisKKwkJY2FzZSBJU19KU09OX0VYSVNUUzoKKwkJCWZ1bmNfbmFtZSA9ICJK U09OX0VYSVNUUyI7CisKKwkJCWpzZXhwci0+cmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbk91 dHB1dChwc3RhdGUsIGZ1bmMtPm91dHB1dCwgZmFsc2UpOworCisJCQlqc2V4cHItPnJldHVy bmluZy0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9IEpTX0ZPUk1BVF9ERUZBVUxUOworCQkJanNl eHByLT5yZXR1cm5pbmctPmZvcm1hdC0+ZW5jb2RpbmcgPSBKU19FTkNfREVGQVVMVDsKKwor CQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCkpCisJCQl7CisJ CQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkID0gQk9PTE9JRDsKKwkJCQlqc2V4cHItPnJl dHVybmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisJCQllbHNlIGlmIChqc2V4cHItPnJldHVy bmluZy0+dHlwaWQgIT0gQk9PTE9JRCkKKwkJCXsKKwkJCQlDYXNlVGVzdEV4cHIgKnBsYWNl aG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKwkJCQlpbnQJCQlsb2NhdGlvbiA9 IGV4cHJMb2NhdGlvbigoTm9kZSAqKSBqc2V4cHIpOworCisJCQkJcGxhY2Vob2xkZXItPnR5 cGVJZCA9IEJPT0xPSUQ7CisJCQkJcGxhY2Vob2xkZXItPnR5cGVNb2QgPSAtMTsKKwkJCQlw bGFjZWhvbGRlci0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQkJCWpzZXhwci0+cmVz dWx0X2NvZXJjaW9uID0gbWFrZU5vZGUoSnNvbkNvZXJjaW9uKTsKKwkJCQlqc2V4cHItPnJl c3VsdF9jb2VyY2lvbi0+ZXhwciA9CisJCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3Rh dGUsIChOb2RlICopIHBsYWNlaG9sZGVyLCBCT09MT0lELAorCQkJCQkJCQkJCSAganNleHBy LT5yZXR1cm5pbmctPnR5cGlkLAorCQkJCQkJCQkJCSAganNleHByLT5yZXR1cm5pbmctPnR5 cG1vZCwKKwkJCQkJCQkJCQkgIENPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCSAgQ09F UkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJICBsb2NhdGlvbik7CisKKwkJCQlpZiAo IWpzZXhwci0+cmVzdWx0X2NvZXJjaW9uLT5leHByKQorCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJCQkJCQkJIGVycm1z ZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIsCisJCQkJCQkJCQlmb3JtYXRfdHlwZV9i ZShCT09MT0lEKSwKKwkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGpzZXhwci0+cmV0dXJuaW5n LT50eXBpZCkpLAorCQkJCQkJCSBwYXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRl LCBsb2NhdGlvbiwgKE5vZGUgKikganNleHByKSkpOworCisJCQkJaWYgKGpzZXhwci0+cmVz dWx0X2NvZXJjaW9uLT5leHByID09IChOb2RlICopIHBsYWNlaG9sZGVyKQorCQkJCQlqc2V4 cHItPnJlc3VsdF9jb2VyY2lvbi0+ZXhwciA9IE5VTEw7CisJCQl9CisJCQlicmVhazsKKwl9 CisKKwlpZiAoZXhwclR5cGUoY29udGV4dEl0ZW1FeHByKSAhPSBKU09OQk9JRCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJIGVycm1zZygiJXMoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciBqc29u IHR5cGUiLCBmdW5jX25hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBm dW5jLT5sb2NhdGlvbikpKTsKKworCXJldHVybiAoTm9kZSAqKSBqc2V4cHI7Cit9CisKK3N0 YXRpYyBKc29uUmV0dXJuaW5nICoKK3RyYW5zZm9ybUpzb25Db25zdHJ1Y3RvclJldChQYXJz ZVN0YXRlICpwc3RhdGUsIEpzb25PdXRwdXQgKm91dHB1dCwgY29uc3QgY2hhciAqZm5hbWUp Cit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOworCisJaWYgKG91dHB1dCkKKwl7CisJ CXJldHVybmluZyA9IHRyYW5zZm9ybUpzb25PdXRwdXQocHN0YXRlLCBvdXRwdXQsIGZhbHNl KTsKKworCQlBc3NlcnQoT2lkSXNWYWxpZChyZXR1cm5pbmctPnR5cGlkKSk7CisKKwkJaWYg KHJldHVybmluZy0+dHlwaWQgIT0gSlNPTk9JRCAmJiByZXR1cm5pbmctPnR5cGlkICE9IEpT T05CT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgUkVUVVJOSU5HIHR5 cGUgJXMgaW4gJXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHJldHVybmluZy0+dHlwaWQp LCBmbmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdXRwdXQtPnR5 cGVOYW1lLT5sb2NhdGlvbikpKTsKKwl9CisJZWxzZQorCXsKKwkJT2lkCQkJdGFyZ2V0dHlw ZSA9IFNRTEpTT05fVFlQRV9PSUQoKTsKKwkJSnNvbkZvcm1hdFR5cGUgZm9ybWF0ID0KKwkJ CVNRTEpTT05fVFlQRV9JU19KU09OQigpID8gSlNfRk9STUFUX0pTT05CIDogSlNfRk9STUFU X0pTT047CisKKwkJcmV0dXJuaW5nID0gbWFrZU5vZGUoSnNvblJldHVybmluZyk7CisJCXJl dHVybmluZy0+Zm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoZm9ybWF0LCBKU19FTkNfREVGQVVM VCwgLTEpOworCQlyZXR1cm5pbmctPnR5cGlkID0gdGFyZ2V0dHlwZTsKKwkJcmV0dXJuaW5n LT50eXBtb2QgPSAtMTsKKwl9CisKKwlyZXR1cm4gcmV0dXJuaW5nOworfQorCisvKgorICog VHJhbnNmb3JtIGEgSlNPTigpIGV4cHJlc3Npb24uCisgKi8KK3N0YXRpYyBOb2RlICoKK3Ry YW5zZm9ybUpzb25QYXJzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uUGFyc2VFeHBy ICpqc2V4cHIpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nID0gdHJhbnNmb3JtSnNv bkNvbnN0cnVjdG9yUmV0KHBzdGF0ZSwganNleHByLT5vdXRwdXQsCisJCQkJCQkJCQkJCQkJ IkpTT04oKSIpOworCU5vZGUJICAgKmFyZzsKKworCWlmIChqc2V4cHItPnVuaXF1ZV9rZXlz KQorCXsKKwkJLyoKKwkJICogQ29lcmNlIHN0cmluZyBhcmd1bWVudCB0byB0ZXh0IGFuZCB0 aGVuIHRvIGpzb25bYl0gaW4gdGhlIGV4ZWN1dG9yCisJCSAqIG5vZGUgd2l0aCBrZXkgdW5p cXVlbmVzcyBjaGVjay4KKwkJICovCisJCUpzb25WYWx1ZUV4cHIgKmp2ZSA9IGpzZXhwci0+ ZXhwcjsKKwkJT2lkCQkJYXJnX3R5cGU7CisKKwkJYXJnID0gdHJhbnNmb3JtSnNvblBhcnNl QXJnKHBzdGF0ZSwgKE5vZGUgKikganZlLT5yYXdfZXhwciwganZlLT5mb3JtYXQsCisJCQkJ CQkJCQkmYXJnX3R5cGUpOworCisJCWlmIChhcmdfdHlwZSAhPSBURVhUT0lEKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks CisJCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ugbm9uLXN0cmluZyB0eXBlcyB3aXRoIFdJVEgg VU5JUVVFIEtFWVMgY2xhdXNlIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBqc2V4cHItPmxvY2F0aW9uKSkpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDb2Vy Y2UgYXJndW1lbnQgdG8gdGFyZ2V0IHR5cGUgdXNpbmcgQ0FTVCBmb3IgY29tcGF0aWJpbHR5 IHdpdGggUEcKKwkJICogZnVuY3Rpb24tbGlrZSBDQVNUcy4KKwkJICovCisJCWFyZyA9IHRy YW5zZm9ybUpzb25WYWx1ZUV4cHJFeHQocHN0YXRlLCBqc2V4cHItPmV4cHIsIEpTX0ZPUk1B VF9KU09OLAorCQkJCQkJCQkJCWZhbHNlLCByZXR1cm5pbmctPnR5cGlkKTsKKwl9CisKKwly ZXR1cm4gbWFrZUpzb25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBKU0NUT1JfSlNPTl9QQVJT RSwgbGlzdF9tYWtlMShhcmcpLCBOVUxMLAorCQkJCQkJCXJldHVybmluZywganNleHByLT51 bmlxdWVfa2V5cywgZmFsc2UsCisJCQkJCQkJanNleHByLT5sb2NhdGlvbik7Cit9CisKKy8q CisgKiBUcmFuc2Zvcm0gYSBKU09OX1NDQUxBUigpIGV4cHJlc3Npb24uCisgKi8KK3N0YXRp YyBOb2RlICoKK3RyYW5zZm9ybUpzb25TY2FsYXJFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvblNjYWxhckV4cHIgKmpzZXhwcikKK3sKKwlOb2RlCSAgICphcmcgPSB0cmFuc2Zvcm1F eHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIGpzZXhwci0+ZXhwcik7CisJSnNvblJldHVy bmluZyAqcmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbkNvbnN0cnVjdG9yUmV0KHBzdGF0ZSwg anNleHByLT5vdXRwdXQsCisJCQkJCQkJCQkJCQkJIkpTT05fU0NBTEFSKCkiKTsKKworCWlm IChleHByVHlwZShhcmcpID09IFVOS05PV05PSUQpCisJCWFyZyA9IGNvZXJjZV90b19zcGVj aWZpY190eXBlKHBzdGF0ZSwgYXJnLCBURVhUT0lELCAiSlNPTl9TQ0FMQVIiKTsKKworCXJl dHVybiBtYWtlSnNvbkNvbnN0cnVjdG9yRXhwcihwc3RhdGUsIEpTQ1RPUl9KU09OX1NDQUxB UiwgbGlzdF9tYWtlMShhcmcpLCBOVUxMLAorCQkJCQkJCXJldHVybmluZywgZmFsc2UsIGZh bHNlLCBqc2V4cHItPmxvY2F0aW9uKTsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBhIEpTT05f U0VSSUFMSVpFKCkgZXhwcmVzc2lvbi4KKyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3Jt SnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2VyaWFsaXplRXhw ciAqZXhwcikKK3sKKwlOb2RlCSAgICphcmcgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBz dGF0ZSwgZXhwci0+ZXhwcik7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOworCisJaWYg KGV4cHItPm91dHB1dCkKKwkJcmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbk91dHB1dChwc3Rh dGUsIGV4cHItPm91dHB1dCwgdHJ1ZSk7CisJZWxzZQorCXsKKwkJLyogUkVUVVJOSU5HIFRF WFQgRk9STUFUIEpTT04gaXMgYnkgZGVmYXVsdCAqLworCQlyZXR1cm5pbmcgPSBtYWtlTm9k ZShKc29uUmV0dXJuaW5nKTsKKwkJcmV0dXJuaW5nLT5mb3JtYXQgPSBtYWtlSnNvbkZvcm1h dChKU19GT1JNQVRfSlNPTiwgSlNfRU5DX0RFRkFVTFQsIC0xKTsKKwkJcmV0dXJuaW5nLT50 eXBpZCA9IFRFWFRPSUQ7CisJCXJldHVybmluZy0+dHlwbW9kID0gLTE7CisJfQorCisJcmV0 dXJuIG1ha2VKc29uQ29uc3RydWN0b3JFeHByKHBzdGF0ZSwgSlNDVE9SX0pTT05fU0VSSUFM SVpFLCBsaXN0X21ha2UxKGFyZyksCisJCQkJCQkJTlVMTCwgcmV0dXJuaW5nLCBmYWxzZSwg ZmFsc2UsIGV4cHItPmxvY2F0aW9uKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQu YwppbmRleCAwNTllZWI5ZTk0Li44MjljMGY5NDk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jCkBAIC0xOTU3LDYgKzE5NTcsNDMgQEAgRmlndXJlQ29sbmFtZUludGVybmFs KE5vZGUgKm5vZGUsIGNoYXIgKipuYW1lKQogCQljYXNlIFRfWG1sU2VyaWFsaXplOgogCQkJ Km5hbWUgPSAieG1sc2VyaWFsaXplIjsKIAkJCXJldHVybiAyOworCQljYXNlIFRfSnNvblBh cnNlRXhwcjoKKwkJCSpuYW1lID0gImpzb24iOworCQkJcmV0dXJuIDI7CisJCWNhc2UgVF9K c29uU2NhbGFyRXhwcjoKKwkJCSpuYW1lID0gImpzb25fc2NhbGFyIjsKKwkJCXJldHVybiAy OworCQljYXNlIFRfSnNvblNlcmlhbGl6ZUV4cHI6CisJCQkqbmFtZSA9ICJqc29uX3Nlcmlh bGl6ZSI7CisJCQlyZXR1cm4gMjsKKwkJY2FzZSBUX0pzb25PYmplY3RDb25zdHJ1Y3RvcjoK KwkJCSpuYW1lID0gImpzb25fb2JqZWN0IjsKKwkJCXJldHVybiAyOworCQljYXNlIFRfSnNv bkFycmF5Q29uc3RydWN0b3I6CisJCWNhc2UgVF9Kc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9y OgorCQkJKm5hbWUgPSAianNvbl9hcnJheSI7CisJCQlyZXR1cm4gMjsKKwkJY2FzZSBUX0pz b25PYmplY3RBZ2c6CisJCQkqbmFtZSA9ICJqc29uX29iamVjdGFnZyI7CisJCQlyZXR1cm4g MjsKKwkJY2FzZSBUX0pzb25BcnJheUFnZzoKKwkJCSpuYW1lID0gImpzb25fYXJyYXlhZ2ci OworCQkJcmV0dXJuIDI7CisJCWNhc2UgVF9Kc29uRnVuY0V4cHI6CisJCQkvKiBtYWtlIFNR TC9KU09OIGZ1bmN0aW9ucyBhY3QgbGlrZSBhIHJlZ3VsYXIgZnVuY3Rpb24gKi8KKwkJCXN3 aXRjaCAoKChKc29uRnVuY0V4cHIgKikgbm9kZSktPm9wKQorCQkJeworCQkJCWNhc2UgSVNf SlNPTl9RVUVSWToKKwkJCQkJKm5hbWUgPSAianNvbl9xdWVyeSI7CisJCQkJCXJldHVybiAy OworCQkJCWNhc2UgSVNfSlNPTl9WQUxVRToKKwkJCQkJKm5hbWUgPSAianNvbl92YWx1ZSI7 CisJCQkJCXJldHVybiAyOworCQkJCWNhc2UgSVNfSlNPTl9FWElTVFM6CisJCQkJCSpuYW1l ID0gImpzb25fZXhpc3RzIjsKKwkJCQkJcmV0dXJuIDI7CisJCQl9CisJCQlicmVhazsKIAkJ ZGVmYXVsdDoKIAkJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZXIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZXIuYwppbmRleCA1MDIyN2Nj MDk4Li5lZWUwYTI5YzA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vy LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlci5jCkBAIC0xNTAsNiArMTUwLDkg QEAgYmFzZV95eWxleChZWVNUWVBFICpsdmFscCwgWVlMVFlQRSAqbGxvY3AsIGNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKQogCQljYXNlIFVTQ09OU1Q6CiAJCQljdXJfdG9rZW5fbGVuZ3Ro ID0gc3RybGVuKHl5ZXh0cmEtPmNvcmVfeXlfZXh0cmEuc2NhbmJ1ZiArICpsbG9jcCk7CiAJ CQlicmVhazsKKwkJY2FzZSBXSVRIT1VUOgorCQkJY3VyX3Rva2VuX2xlbmd0aCA9IDc7CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiBjdXJfdG9rZW47CiAJfQpAQCAtMjIx LDYgKzIyNCwxOSBAQCBiYXNlX3l5bGV4KFlZU1RZUEUgKmx2YWxwLCBZWUxUWVBFICpsbG9j cCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJY2FzZSBPUkRJTkFMSVRZOgogCQkJ CQljdXJfdG9rZW4gPSBXSVRIX0xBOwogCQkJCQlicmVhazsKKwkJCQljYXNlIFVOSVFVRToK KwkJCQkJY3VyX3Rva2VuID0gV0lUSF9MQV9VTklRVUU7CisJCQkJCWJyZWFrOworCQkJfQor CQkJYnJlYWs7CisKKwkJY2FzZSBXSVRIT1VUOgorCQkJLyogUmVwbGFjZSBXSVRIT1VUIGJ5 IFdJVEhPVVRfTEEgaWYgaXQncyBmb2xsb3dlZCBieSBUSU1FICovCisJCQlzd2l0Y2ggKG5l eHRfdG9rZW4pCisJCQl7CisJCQkJY2FzZSBUSU1FOgorCQkJCQljdXJfdG9rZW4gPSBXSVRI T1VUX0xBOworCQkJCQlicmVhazsKIAkJCX0KIAkJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9mb3JtYXRfdHlwZS5jCmluZGV4IDI5MThmZGJmYjYuLmZlMTYyN2RlZGMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j bHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9udW1lcmljLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTI5NCw2ICsyOTUsMTQgQEAgZm9y bWF0X3R5cGVfZXh0ZW5kZWQoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLCBiaXRzMTYg ZmxhZ3MpCiAJCQllbHNlCiAJCQkJYnVmID0gcHN0cmR1cCgiY2hhcmFjdGVyIHZhcnlpbmci KTsKIAkJCWJyZWFrOworCisJCWNhc2UgSlNPTk9JRDoKKwkJCWJ1ZiA9IHBzdHJkdXAoU1FM SlNPTl9UWVBFX0lTX0pTT05CKCkgPyAicGdfY2F0YWxvZy5qc29uIiA6ICJqc29uIik7CisJ CQlicmVhazsKKworCQljYXNlIEpTT05CT0lEOgorCQkJYnVmID0gcHN0cmR1cChTUUxKU09O X1RZUEVfSVNfSlNPTkIoKSA/ICJqc29uIiA6ICJqc29uYiIpOworCQkJYnJlYWs7CiAJfQog CiAJaWYgKGJ1ZiA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2Zvcm1hdHRpbmcuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKaW5k ZXggZDRjMmU3YjA2OS4uZmIzOTViNmY3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdHRpbmcuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0 dGluZy5jCkBAIC0xMDE3LDExICsxMDE3LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTlVNUHJvYwog CQkJICAgKkxfY3VycmVuY3lfc3ltYm9sOwogfSBOVU1Qcm9jOwogCi0vKiBSZXR1cm4gZmxh Z3MgZm9yIERDSF9mcm9tX2NoYXIoKSAqLwotI2RlZmluZSBEQ0hfREFURUQJMHgwMQotI2Rl ZmluZSBEQ0hfVElNRUQJMHgwMgotI2RlZmluZSBEQ0hfWk9ORUQJMHgwNAotCiAvKiAtLS0t LS0tLS0tCiAgKiBGdW5jdGlvbnMKICAqIC0tLS0tLS0tLS0KQEAgLTY2NjYsMyArNjY2MSw0 MyBAQCBmbG9hdDhfdG9fY2hhcihQR19GVU5DVElPTl9BUkdTKQogCU5VTV9UT0NIQVJfZmlu aXNoOwogCVBHX1JFVFVSTl9URVhUX1AocmVzdWx0KTsKIH0KKworaW50CitkYXRldGltZV9m b3JtYXRfZmxhZ3MoY29uc3QgY2hhciAqZm10X3N0ciwgYm9vbCAqaGF2ZV9lcnJvcikKK3sK Kwlib29sCQlpbmNhY2hlOworCWludAkJCWZtdF9sZW4gPSBzdHJsZW4oZm10X3N0cik7CisJ aW50CQkJcmVzdWx0OworCUZvcm1hdE5vZGUgKmZvcm1hdDsKKworCWlmIChmbXRfbGVuID4g RENIX0NBQ0hFX1NJWkUpCisJeworCQkvKgorCQkgKiBBbGxvY2F0ZSBuZXcgbWVtb3J5IGlm IGZvcm1hdCBwaWN0dXJlIGlzIGJpZ2dlciB0aGFuIHN0YXRpYyBjYWNoZQorCQkgKiBhbmQg ZG8gbm90IHVzZSBjYWNoZSAoY2FsbCBwYXJzZXIgYWx3YXlzKQorCQkgKi8KKwkJaW5jYWNo ZSA9IGZhbHNlOworCisJCWZvcm1hdCA9IChGb3JtYXROb2RlICopIHBhbGxvYygoZm10X2xl biArIDEpICogc2l6ZW9mKEZvcm1hdE5vZGUpKTsKKworCQlwYXJzZV9mb3JtYXQoZm9ybWF0 LCBmbXRfc3RyLCBEQ0hfa2V5d29yZHMsCisJCQkJCSBEQ0hfc3VmZiwgRENIX2luZGV4LCBE Q0hfRkxBRywgTlVMTCk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFVzZSBjYWNoZSBi dWZmZXJzCisJCSAqLworCQlEQ0hDYWNoZUVudHJ5ICplbnQgPSBEQ0hfY2FjaGVfZmV0Y2go Zm10X3N0ciwgZmFsc2UpOworCisJCWluY2FjaGUgPSB0cnVlOworCQlmb3JtYXQgPSBlbnQt PmZvcm1hdDsKKwl9CisKKwlyZXN1bHQgPSBEQ0hfZGF0ZXRpbWVfdHlwZShmb3JtYXQsIGhh dmVfZXJyb3IpOworCisJaWYgKCFpbmNhY2hlKQorCQlwZnJlZShmb3JtYXQpOworCisJcmV0 dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDc4NzlmMzQyZTYuLjQ5 Mjc5NmViODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYwpAQCAtMTMsNyArMTMsMTAgQEAKICAq LwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgorI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgi CiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK QEAgLTI3LDIwICszMCw0MSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKLXR5cGVkZWYgZW51bQkJCQkJLyogdHlwZSBj YXRlZ29yaWVzIGZvciBkYXR1bV90b19qc29uICovCisvKiBDb21tb24gY29udGV4dCBmb3Ig a2V5IHVuaXF1ZW5lc3MgY2hlY2sgKi8KK3R5cGVkZWYgc3RydWN0IEhUQUIgKkpzb25Vbmlx dWVDaGVja1N0YXRlOwkvKiBoYXNoIHRhYmxlIGZvciBrZXkgbmFtZXMgKi8KKworLyogSGFz aCBlbnRyeSBmb3IgSnNvblVuaXF1ZUNoZWNrU3RhdGUgKi8KK3R5cGVkZWYgc3RydWN0IEpz b25VbmlxdWVIYXNoRW50cnkKK3sKKwljb25zdCBjaGFyICprZXk7CisJaW50CQkJa2V5X2xl bjsKKwlpbnQJCQlvYmplY3RfaWQ7Cit9IEpzb25VbmlxdWVIYXNoRW50cnk7CisKKy8qIENv bnRleHQgZm9yIGtleSB1bmlxdWVuZXNzIGNoZWNrIGluIGJ1aWxkZXIgZnVuY3Rpb25zICov Cit0eXBlZGVmIHN0cnVjdCBKc29uVW5pcXVlQnVpbGRlclN0YXRlCit7CisJSnNvblVuaXF1 ZUNoZWNrU3RhdGUgY2hlY2s7CS8qIHVuaXF1ZSBjaGVjayAqLworCVN0cmluZ0luZm9EYXRh IHNraXBwZWRfa2V5czsJLyogc2tpcHBlZCBrZXlzIHdpdGggTlVMTCB2YWx1ZXMgKi8KKwlN ZW1vcnlDb250ZXh0IG1jeHQ7CQkJCS8qIGNvbnRleHQgZm9yIHNhdmluZyBza2lwcGVkIGtl eXMgKi8KK30gSnNvblVuaXF1ZUJ1aWxkZXJTdGF0ZTsKKworLyogRWxlbWVudCBvZiBvYmpl Y3Qgc3RhY2sgZm9yIGtleSB1bmlxdWVuZXNzIGNoZWNrIGR1cmluZyBqc29uIHBhcnNpbmcg Ki8KK3R5cGVkZWYgc3RydWN0IEpzb25VbmlxdWVTdGFja0VudHJ5CiB7Ci0JSlNPTlRZUEVf TlVMTCwJCQkJLyogbnVsbCwgc28gd2UgZGlkbid0IGJvdGhlciB0byBpZGVudGlmeSAqLwot CUpTT05UWVBFX0JPT0wsCQkJCS8qIGJvb2xlYW4gKGJ1aWx0LWluIHR5cGVzIG9ubHkpICov Ci0JSlNPTlRZUEVfTlVNRVJJQywJCQkvKiBudW1lcmljIChkaXR0bykgKi8KLQlKU09OVFlQ RV9EQVRFLAkJCQkvKiB3ZSB1c2Ugc3BlY2lhbCBmb3JtYXR0aW5nIGZvciBkYXRldGltZXMg Ki8KLQlKU09OVFlQRV9USU1FU1RBTVAsCi0JSlNPTlRZUEVfVElNRVNUQU1QVFosCi0JSlNP TlRZUEVfSlNPTiwJCQkJLyogSlNPTiBpdHNlbGYgKGFuZCBKU09OQikgKi8KLQlKU09OVFlQ RV9BUlJBWSwJCQkJLyogYXJyYXkgKi8KLQlKU09OVFlQRV9DT01QT1NJVEUsCQkJLyogY29t cG9zaXRlICovCi0JSlNPTlRZUEVfQ0FTVCwJCQkJLyogc29tZXRoaW5nIHdpdGggYW4gZXhw bGljaXQgY2FzdCB0byBKU09OICovCi0JSlNPTlRZUEVfT1RIRVIJCQkJLyogYWxsIGVsc2Ug Ki8KLX0gSnNvblR5cGVDYXRlZ29yeTsKKwlzdHJ1Y3QgSnNvblVuaXF1ZVN0YWNrRW50cnkg KnBhcmVudDsKKwlpbnQJCQlvYmplY3RfaWQ7Cit9IEpzb25VbmlxdWVTdGFja0VudHJ5Owor CisvKiBTdGF0ZSBmb3Iga2V5IHVuaXF1ZW5lc3MgY2hlY2sgZHVyaW5nIGpzb24gcGFyc2lu ZyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblVuaXF1ZVBhcnNpbmdTdGF0ZQoreworCUpzb25M ZXhDb250ZXh0ICpsZXg7CisJSnNvblVuaXF1ZUNoZWNrU3RhdGUgY2hlY2s7CisJSnNvblVu aXF1ZVN0YWNrRW50cnkgKnN0YWNrOworCWludAkJCWlkX2NvdW50ZXI7CisJYm9vbAkJdW5p cXVlOworfSBKc29uVW5pcXVlUGFyc2luZ1N0YXRlOwogCiB0eXBlZGVmIHN0cnVjdCBKc29u QWdnU3RhdGUKIHsKQEAgLTQ5LDYgKzczLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkFnZ1N0 YXRlCiAJT2lkCQkJa2V5X291dHB1dF9mdW5jOwogCUpzb25UeXBlQ2F0ZWdvcnkgdmFsX2Nh dGVnb3J5OwogCU9pZAkJCXZhbF9vdXRwdXRfZnVuYzsKKwlKc29uVW5pcXVlQnVpbGRlclN0 YXRlIHVuaXF1ZV9jaGVjazsKIH0gSnNvbkFnZ1N0YXRlOwogCiBzdGF0aWMgdm9pZCBjb21w b3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LApAQCAt NTksOSArODQsNiBAQCBzdGF0aWMgdm9pZCBhcnJheV9kaW1fdG9fanNvbihTdHJpbmdJbmZv IHJlc3VsdCwgaW50IGRpbSwgaW50IG5kaW1zLCBpbnQgKmRpbXMsCiAJCQkJCQkJICBib29s IHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5X3RvX2pzb25faW50ZXJuYWwo RGF0dW0gYXJyYXksIFN0cmluZ0luZm8gcmVzdWx0LAogCQkJCQkJCQkgICBib29sIHVzZV9s aW5lX2ZlZWRzKTsKLXN0YXRpYyB2b2lkIGpzb25fY2F0ZWdvcml6ZV90eXBlKE9pZCB0eXBv aWQsCi0JCQkJCQkJCSBKc29uVHlwZUNhdGVnb3J5ICp0Y2F0ZWdvcnksCi0JCQkJCQkJCSBP aWQgKm91dGZ1bmNvaWQpOwogc3RhdGljIHZvaWQgZGF0dW1fdG9fanNvbihEYXR1bSB2YWws IGJvb2wgaXNfbnVsbCwgU3RyaW5nSW5mbyByZXN1bHQsCiAJCQkJCQkgIEpzb25UeXBlQ2F0 ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0ZnVuY29pZCwKIAkJCQkJCSAgYm9vbCBrZXlfc2Nh bGFyKTsKQEAgLTE0MCw3ICsxNjIsNyBAQCBqc29uX3JlY3YoUEdfRlVOQ1RJT05fQVJHUykK ICAqIG91dHB1dCBmdW5jdGlvbiBPSUQuICBJZiB0aGUgcmV0dXJuZWQgY2F0ZWdvcnkgaXMg SlNPTlRZUEVfQ0FTVCwgd2UKICAqIHJldHVybiB0aGUgT0lEIG9mIHRoZSB0eXBlLT5KU09O IGNhc3QgZnVuY3Rpb24gaW5zdGVhZC4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGpzb25f Y2F0ZWdvcml6ZV90eXBlKE9pZCB0eXBvaWQsCiAJCQkJCSBKc29uVHlwZUNhdGVnb3J5ICp0 Y2F0ZWdvcnksCiAJCQkJCSBPaWQgKm91dGZ1bmNvaWQpCkBAIC03MjIsNiArNzQ0LDQ4IEBA IHJvd190b19qc29uX3ByZXR0eShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhU X1AoY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4p KTsKIH0KIAorRGF0dW0KK3RvX2pzb25fd29ya2VyKERhdHVtIHZhbCwgSnNvblR5cGVDYXRl Z29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5jb2lkKQoreworCVN0cmluZ0luZm8JcmVzdWx0 ID0gbWFrZVN0cmluZ0luZm8oKTsKKworCWRhdHVtX3RvX2pzb24odmFsLCBmYWxzZSwgcmVz dWx0LCB0Y2F0ZWdvcnksIG91dGZ1bmNvaWQsIGZhbHNlKTsKKworCXJldHVybiBQb2ludGVy R2V0RGF0dW0oY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ZGF0YSwgcmVzdWx0 LT5sZW4pKTsKK30KKworYm9vbAordG9fanNvbl9pc19pbW11dGFibGUoT2lkIHR5cG9pZCkK K3sKKwlKc29uVHlwZUNhdGVnb3J5IHRjYXRlZ29yeTsKKwlPaWQJCQlvdXRmdW5jb2lkOwor CisJanNvbl9jYXRlZ29yaXplX3R5cGUodHlwb2lkLCAmdGNhdGVnb3J5LCAmb3V0ZnVuY29p ZCk7CisKKwlzd2l0Y2ggKHRjYXRlZ29yeSkKKwl7CisJCWNhc2UgSlNPTlRZUEVfQk9PTDoK KwkJY2FzZSBKU09OVFlQRV9KU09OOgorCQkJcmV0dXJuIHRydWU7CisKKwkJY2FzZSBKU09O VFlQRV9EQVRFOgorCQljYXNlIEpTT05UWVBFX1RJTUVTVEFNUDoKKwkJY2FzZSBKU09OVFlQ RV9USU1FU1RBTVBUWjoKKwkJCXJldHVybiBmYWxzZTsKKworCQljYXNlIEpTT05UWVBFX0FS UkFZOgorCQkJcmV0dXJuIGZhbHNlOwkvKiBUT0RPIHJlY3Vyc2UgaW50byBlbGVtZW50cyAq LworCisJCWNhc2UgSlNPTlRZUEVfQ09NUE9TSVRFOgorCQkJcmV0dXJuIGZhbHNlOwkvKiBU T0RPIHJlY3Vyc2UgaW50byBmaWVsZHMgKi8KKworCQljYXNlIEpTT05UWVBFX05VTUVSSUM6 CisJCWNhc2UgSlNPTlRZUEVfQ0FTVDoKKwkJZGVmYXVsdDoKKwkJCXJldHVybiBmdW5jX3Zv bGF0aWxlKG91dGZ1bmNvaWQpID09IFBST1ZPTEFUSUxFX0lNTVVUQUJMRTsKKwl9Cit9CisK IC8qCiAgKiBTUUwgZnVuY3Rpb24gdG9fanNvbihhbnl2YWx1ZSkKICAqLwpAQCAtNzMwLDcg Kzc5NCw2IEBAIHRvX2pzb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlEYXR1bQkJdmFsID0g UEdfR0VUQVJHX0RBVFVNKDApOwogCU9pZAkJCXZhbF90eXBlID0gZ2V0X2ZuX2V4cHJfYXJn dHlwZShmY2luZm8tPmZsaW5mbywgMCk7Ci0JU3RyaW5nSW5mbwlyZXN1bHQ7CiAJSnNvblR5 cGVDYXRlZ29yeSB0Y2F0ZWdvcnk7CiAJT2lkCQkJb3V0ZnVuY29pZDsKIApAQCAtNzQyLDEx ICs4MDUsNyBAQCB0b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJanNvbl9jYXRlZ29yaXpl X3R5cGUodmFsX3R5cGUsCiAJCQkJCQkgJnRjYXRlZ29yeSwgJm91dGZ1bmNvaWQpOwogCi0J cmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKLQotCWRhdHVtX3RvX2pzb24odmFsLCBmYWxz ZSwgcmVzdWx0LCB0Y2F0ZWdvcnksIG91dGZ1bmNvaWQsIGZhbHNlKTsKLQotCVBHX1JFVFVS Tl9URVhUX1AoY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ZGF0YSwgcmVzdWx0 LT5sZW4pKTsKKwlQR19SRVRVUk5fREFUVU0odG9fanNvbl93b3JrZXIodmFsLCB0Y2F0ZWdv cnksIG91dGZ1bmNvaWQpKTsKIH0KIAogLyoKQEAgLTc1NCw4ICs4MTMsOCBAQCB0b19qc29u KFBHX0ZVTkNUSU9OX0FSR1MpCiAgKgogICogYWdncmVnYXRlIGlucHV0IGNvbHVtbiBhcyBh IGpzb24gYXJyYXkgdmFsdWUuCiAgKi8KLURhdHVtCi1qc29uX2FnZ190cmFuc2ZuKFBHX0ZV TkNUSU9OX0FSR1MpCitzdGF0aWMgRGF0dW0KK2pzb25fYWdnX3RyYW5zZm5fd29ya2VyKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGFic2VudF9vbl9udWxsKQogewogCU1lbW9y eUNvbnRleHQgYWdnY29udGV4dCwKIAkJCQlvbGRjb250ZXh0OwpAQCAtNzk1LDkgKzg1NCwx NCBAQCBqc29uX2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZWxzZQogCXsKIAkJ c3RhdGUgPSAoSnNvbkFnZ1N0YXRlICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKHN0YXRlLT5zdHIsICIsICIpOwogCX0KIAorCWlmIChhYnNl bnRfb25fbnVsbCAmJiBQR19BUkdJU05VTEwoMSkpCisJCVBHX1JFVFVSTl9QT0lOVEVSKHN0 YXRlKTsKKworCWlmIChzdGF0ZS0+c3RyLT5sZW4gPiAxKQorCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKHN0YXRlLT5zdHIsICIsICIpOworCiAJLyogZmFzdCBwYXRoIGZvciBOVUxMcyAq LwogCWlmIChQR19BUkdJU05VTEwoMSkpCiAJewpAQCAtODA5LDcgKzg3Myw3IEBAIGpzb25f YWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAl2YWwgPSBQR19HRVRBUkdfREFUVU0o MSk7CiAKIAkvKiBhZGQgc29tZSB3aGl0ZXNwYWNlIGlmIHN0cnVjdHVyZWQgdHlwZSBhbmQg bm90IGZpcnN0IGl0ZW0gKi8KLQlpZiAoIVBHX0FSR0lTTlVMTCgwKSAmJgorCWlmICghUEdf QVJHSVNOVUxMKDApICYmIHN0YXRlLT5zdHItPmxlbiA+IDEgJiYKIAkJKHN0YXRlLT52YWxf Y2F0ZWdvcnkgPT0gSlNPTlRZUEVfQVJSQVkgfHwKIAkJIHN0YXRlLT52YWxfY2F0ZWdvcnkg PT0gSlNPTlRZUEVfQ09NUE9TSVRFKSkKIAl7CkBAIC04MjcsNiArODkxLDI1IEBAIGpzb25f YWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fUE9JTlRFUihzdGF0 ZSk7CiB9CiAKKworLyoKKyAqIGpzb25fYWdnIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICovCitE YXR1bQoranNvbl9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBq c29uX2FnZ190cmFuc2ZuX3dvcmtlcihmY2luZm8sIGZhbHNlKTsKK30KKworLyoKKyAqIGpz b25fYWdnX3N0cmljdCBhZ2dyZWdhdGUgZnVuY3Rpb24KKyAqLworRGF0dW0KK2pzb25fYWdn X3N0cmljdF90cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIGpzb25fYWdn X3RyYW5zZm5fd29ya2VyKGZjaW5mbywgdHJ1ZSk7Cit9CisKIC8qCiAgKiBqc29uX2FnZyBm aW5hbCBmdW5jdGlvbgogICovCkBAIC04NTAsMTggKzkzMywxMjIgQEAganNvbl9hZ2dfZmlu YWxmbihQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhUX1AoY2F0ZW5hdGVfc3Ry aW5naW5mb19zdHJpbmcoc3RhdGUtPnN0ciwgIl0iKSk7CiB9CiAKKy8qIEZ1bmN0aW9ucyBp bXBsZW1lbnRpbmcgaGFzaCB0YWJsZSBmb3Iga2V5IHVuaXF1ZW5lc3MgY2hlY2sgKi8KK3N0 YXRpYyB1aW50MzIKK2pzb25fdW5pcXVlX2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtl eXNpemUpCit7CisJY29uc3QgSnNvblVuaXF1ZUhhc2hFbnRyeSAqZW50cnkgPSAoSnNvblVu aXF1ZUhhc2hFbnRyeSAqKSBrZXk7CisJdWludDMyCQloYXNoID0gIGhhc2hfYnl0ZXNfdWlu dDMyKGVudHJ5LT5vYmplY3RfaWQpOworCisJaGFzaCBePSBoYXNoX2J5dGVzKChjb25zdCB1 bnNpZ25lZCBjaGFyICopIGVudHJ5LT5rZXksIGVudHJ5LT5rZXlfbGVuKTsKKworCXJldHVy biBEYXR1bUdldFVJbnQzMihoYXNoKTsKK30KKworc3RhdGljIGludAoranNvbl91bmlxdWVf aGFzaF9tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtl eXNpemUpCit7CisJY29uc3QgSnNvblVuaXF1ZUhhc2hFbnRyeSAqZW50cnkxID0gKGNvbnN0 IEpzb25VbmlxdWVIYXNoRW50cnkgKikga2V5MTsKKwljb25zdCBKc29uVW5pcXVlSGFzaEVu dHJ5ICplbnRyeTIgPSAoY29uc3QgSnNvblVuaXF1ZUhhc2hFbnRyeSAqKSBrZXkyOworCisJ aWYgKGVudHJ5MS0+b2JqZWN0X2lkICE9IGVudHJ5Mi0+b2JqZWN0X2lkKQorCQlyZXR1cm4g ZW50cnkxLT5vYmplY3RfaWQgPiBlbnRyeTItPm9iamVjdF9pZCA/IDEgOiAtMTsKKworCWlm IChlbnRyeTEtPmtleV9sZW4gIT0gZW50cnkyLT5rZXlfbGVuKQorCQlyZXR1cm4gZW50cnkx LT5rZXlfbGVuID4gZW50cnkyLT5rZXlfbGVuID8gMSA6IC0xOworCisJcmV0dXJuIHN0cm5j bXAoZW50cnkxLT5rZXksIGVudHJ5Mi0+a2V5LCBlbnRyeTEtPmtleV9sZW4pOworfQorCisv KiBGdW5jdGlvbnMgaW1wbGVtZW50aW5nIG9iamVjdCBrZXkgdW5pcXVlbmVzcyBjaGVjayAq Lworc3RhdGljIHZvaWQKK2pzb25fdW5pcXVlX2NoZWNrX2luaXQoSnNvblVuaXF1ZUNoZWNr U3RhdGUgKmN4dCkKK3sKKwlIQVNIQ1RMCQljdGw7CisKKwltZW1zZXQoJmN0bCwgMCwgc2l6 ZW9mKGN0bCkpOworCWN0bC5rZXlzaXplID0gc2l6ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkp OworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7CisJY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwljdGwuaGFzaCA9IGpzb25fdW5pcXVl X2hhc2g7CisJY3RsLm1hdGNoID0ganNvbl91bmlxdWVfaGFzaF9tYXRjaDsKKworCSpjeHQg PSBoYXNoX2NyZWF0ZSgianNvbiBvYmplY3QgaGFzaHRhYmxlIiwKKwkJCQkJICAgMzIsCisJ CQkJCSAgICZjdGwsCisJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hf RlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworfQorCitzdGF0aWMgdm9pZAoranNvbl91bmlx dWVfY2hlY2tfZnJlZShKc29uVW5pcXVlQ2hlY2tTdGF0ZSAqY3h0KQoreworCWhhc2hfZGVz dHJveSgqY3h0KTsKK30KKworc3RhdGljIGJvb2wKK2pzb25fdW5pcXVlX2NoZWNrX2tleShK c29uVW5pcXVlQ2hlY2tTdGF0ZSAqY3h0LCBjb25zdCBjaGFyICprZXksIGludCBvYmplY3Rf aWQpCit7CisJSnNvblVuaXF1ZUhhc2hFbnRyeSBlbnRyeTsKKwlib29sCQlmb3VuZDsKKwor CWVudHJ5LmtleSA9IGtleTsKKwllbnRyeS5rZXlfbGVuID0gc3RybGVuKGtleSk7CisJZW50 cnkub2JqZWN0X2lkID0gb2JqZWN0X2lkOworCisJKHZvaWQpIGhhc2hfc2VhcmNoKCpjeHQs ICZlbnRyeSwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKworCXJldHVybiAhZm91bmQ7Cit9CisK K3N0YXRpYyB2b2lkCitqc29uX3VuaXF1ZV9idWlsZGVyX2luaXQoSnNvblVuaXF1ZUJ1aWxk ZXJTdGF0ZSAqY3h0KQoreworCWpzb25fdW5pcXVlX2NoZWNrX2luaXQoJmN4dC0+Y2hlY2sp OworCWN4dC0+bWN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCWN4dC0+c2tpcHBlZF9r ZXlzLmRhdGEgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAoranNvbl91bmlxdWVfYnVpbGRl cl9mcmVlKEpzb25VbmlxdWVCdWlsZGVyU3RhdGUgKmN4dCkKK3sKKwlqc29uX3VuaXF1ZV9j aGVja19mcmVlKCZjeHQtPmNoZWNrKTsKKworCWlmIChjeHQtPnNraXBwZWRfa2V5cy5kYXRh KQorCQlwZnJlZShjeHQtPnNraXBwZWRfa2V5cy5kYXRhKTsKK30KKworLyogT24tZGVtYW5k IGluaXRpYWxpemF0aW9uIG9mIHNraXBwZWRfa2V5cyBTdHJpbmdJbmZvIHN0cnVjdHVyZSAq Lworc3RhdGljIFN0cmluZ0luZm8KK2pzb25fdW5pcXVlX2J1aWxkZXJfZ2V0X3NraXBwZWRf a2V5cyhKc29uVW5pcXVlQnVpbGRlclN0YXRlICpjeHQpCit7CisJU3RyaW5nSW5mbwlvdXQg PSAmY3h0LT5za2lwcGVkX2tleXM7CisKKwlpZiAoIW91dC0+ZGF0YSkKKwl7CisJCU1lbW9y eUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN4dC0+bWN4dCk7CisJ CWluaXRTdHJpbmdJbmZvKG91dCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OworCX0KKworCXJldHVybiBvdXQ7Cit9CisKIC8qCiAgKiBqc29uX29iamVjdF9hZ2cgdHJh bnNpdGlvbiBmdW5jdGlvbi4KICAqCiAgKiBhZ2dyZWdhdGUgdHdvIGlucHV0IGNvbHVtbnMg YXMgYSBzaW5nbGUganNvbiBvYmplY3QgdmFsdWUuCiAgKi8KLURhdHVtCi1qc29uX29iamVj dF9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQorc3RhdGljIERhdHVtCitqc29uX29i amVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCisJCQkJ CQkJICAgYm9vbCBhYnNlbnRfb25fbnVsbCwgYm9vbCB1bmlxdWVfa2V5cykKIHsKIAlNZW1v cnlDb250ZXh0IGFnZ2NvbnRleHQsCiAJCQkJb2xkY29udGV4dDsKIAlKc29uQWdnU3RhdGUg KnN0YXRlOworCVN0cmluZ0luZm8Jb3V0OwogCURhdHVtCQlhcmc7CisJYm9vbAkJc2tpcDsK KwlpbnQJCQlrZXlfb2Zmc2V0OwogCiAJaWYgKCFBZ2dDaGVja0NhbGxDb250ZXh0KGZjaW5m bywgJmFnZ2NvbnRleHQpKQogCXsKQEAgLTg4Miw2ICsxMDY5LDEwIEBAIGpzb25fb2JqZWN0 X2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oYWdnY29udGV4dCk7CiAJCXN0YXRlID0gKEpzb25BZ2dTdGF0ZSAq KSBwYWxsb2Moc2l6ZW9mKEpzb25BZ2dTdGF0ZSkpOwogCQlzdGF0ZS0+c3RyID0gbWFrZVN0 cmluZ0luZm8oKTsKKwkJaWYgKHVuaXF1ZV9rZXlzKQorCQkJanNvbl91bmlxdWVfYnVpbGRl cl9pbml0KCZzdGF0ZS0+dW5pcXVlX2NoZWNrKTsKKwkJZWxzZQorCQkJbWVtc2V0KCZzdGF0 ZS0+dW5pcXVlX2NoZWNrLCAwLCBzaXplb2Yoc3RhdGUtPnVuaXF1ZV9jaGVjaykpOwogCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJYXJnX3R5cGUgPSBnZXRf Zm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAxKTsKQEAgLTkwOSw3ICsxMTAwLDYg QEAganNvbl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAllbHNlCiAJ ewogCQlzdGF0ZSA9IChKc29uQWdnU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0J CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RhdGUtPnN0ciwgIiwgIik7CiAJfQogCiAJLyoK QEAgLTkyNSwxMSArMTExNSw0OSBAQCBqc29uX29iamVjdF9hZ2dfdHJhbnNmbihQR19GVU5D VElPTl9BUkdTKQogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAogCQkJCSBlcnJtc2coImZpZWxkIG5hbWUgbXVzdCBub3QgYmUgbnVsbCIpKSk7CiAK KwkvKiBTa2lwIG51bGwgdmFsdWVzIGlmIGFic2VudF9vbl9udWxsICovCisJc2tpcCA9IGFi c2VudF9vbl9udWxsICYmIFBHX0FSR0lTTlVMTCgyKTsKKworCWlmIChza2lwKQorCXsKKwkJ LyogSWYga2V5IHVuaXF1ZW5lc3MgY2hlY2sgaXMgbmVlZGVkIHdlIG11c3Qgc2F2ZSBza2lw cGVkIGtleXMgKi8KKwkJaWYgKCF1bmlxdWVfa2V5cykKKwkJCVBHX1JFVFVSTl9QT0lOVEVS KHN0YXRlKTsKKworCQlvdXQgPSBqc29uX3VuaXF1ZV9idWlsZGVyX2dldF9za2lwcGVkX2tl eXMoJnN0YXRlLT51bmlxdWVfY2hlY2spOworCX0KKwllbHNlCisJeworCQlvdXQgPSBzdGF0 ZS0+c3RyOworCisJCS8qCisJCSAqIEFwcGVuZCBjb21tYSBkZWxpbWl0ZXIgb25seSBpZiB3 ZSBoYXZlIGFscmVhZHkgb3V0cHV0dGVkIHNvbWUgZmllbGRzCisJCSAqIGFmdGVyIHRoZSBp bml0aWFsIHN0cmluZyAieyAiLgorCQkgKi8KKwkJaWYgKG91dC0+bGVuID4gMikKKwkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcob3V0LCAiLCAiKTsKKwl9CisKIAlhcmcgPSBQR19HRVRB UkdfREFUVU0oMSk7CiAKLQlkYXR1bV90b19qc29uKGFyZywgZmFsc2UsIHN0YXRlLT5zdHIs IHN0YXRlLT5rZXlfY2F0ZWdvcnksCisJa2V5X29mZnNldCA9IG91dC0+bGVuOworCisJZGF0 dW1fdG9fanNvbihhcmcsIGZhbHNlLCBvdXQsIHN0YXRlLT5rZXlfY2F0ZWdvcnksCiAJCQkJ ICBzdGF0ZS0+a2V5X291dHB1dF9mdW5jLCB0cnVlKTsKIAorCWlmICh1bmlxdWVfa2V5cykK Kwl7CisJCWNvbnN0IGNoYXIgKmtleSA9ICZvdXQtPmRhdGFba2V5X29mZnNldF07CisKKwkJ aWYgKCFqc29uX3VuaXF1ZV9jaGVja19rZXkoJnN0YXRlLT51bmlxdWVfY2hlY2suY2hlY2ss IGtleSwgMCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RV UExJQ0FURV9KU09OX09CSkVDVF9LRVlfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJkdXBsaWNh dGUgSlNPTiBrZXkgJXMiLCBrZXkpKSk7CisKKwkJaWYgKHNraXApCisJCQlQR19SRVRVUk5f UE9JTlRFUihzdGF0ZSk7CisJfQorCiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdGF0ZS0+ c3RyLCAiIDogIik7CiAKIAlpZiAoUEdfQVJHSVNOVUxMKDIpKQpAQCAtOTQzLDYgKzExNzEs NDIgQEAganNvbl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19S RVRVUk5fUE9JTlRFUihzdGF0ZSk7CiB9CiAKKy8qCisgKiBqc29uX29iamVjdF9hZ2cgYWdn cmVnYXRlIGZ1bmN0aW9uCisgKi8KK0RhdHVtCitqc29uX29iamVjdF9hZ2dfdHJhbnNmbihQ R19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBqc29uX29iamVjdF9hZ2dfdHJhbnNmbl93 b3JrZXIoZmNpbmZvLCBmYWxzZSwgZmFsc2UpOworfQorCisvKgorICoganNvbl9vYmplY3Rf YWdnX3N0cmljdCBhZ2dyZWdhdGUgZnVuY3Rpb24KKyAqLworRGF0dW0KK2pzb25fb2JqZWN0 X2FnZ19zdHJpY3RfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBqc29u X29iamVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoZmNpbmZvLCB0cnVlLCBmYWxzZSk7Cit9CisK Ky8qCisgKiBqc29uX29iamVjdF9hZ2dfdW5pcXVlIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICov CitEYXR1bQoranNvbl9vYmplY3RfYWdnX3VuaXF1ZV90cmFuc2ZuKFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJcmV0dXJuIGpzb25fb2JqZWN0X2FnZ190cmFuc2ZuX3dvcmtlcihmY2luZm8s IGZhbHNlLCB0cnVlKTsKK30KKworLyoKKyAqIGpzb25fb2JqZWN0X2FnZ191bmlxdWVfc3Ry aWN0IGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICovCitEYXR1bQoranNvbl9vYmplY3RfYWdnX3Vu aXF1ZV9zdHJpY3RfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBqc29u X29iamVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoZmNpbmZvLCB0cnVlLCB0cnVlKTsKK30KKwog LyoKICAqIGpzb25fb2JqZWN0X2FnZyBmaW5hbCBmdW5jdGlvbi4KICAqLwpAQCAtOTYwLDYg KzEyMjQsOCBAQCBqc29uX29iamVjdF9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQog CWlmIChzdGF0ZSA9PSBOVUxMKQogCQlQR19SRVRVUk5fTlVMTCgpOwogCisJanNvbl91bmlx dWVfYnVpbGRlcl9mcmVlKCZzdGF0ZS0+dW5pcXVlX2NoZWNrKTsKKwogCS8qIEVsc2UgcmV0 dXJuIHN0YXRlIHdpdGggYXBwcm9wcmlhdGUgb2JqZWN0IHRlcm1pbmF0b3IgYWRkZWQgKi8K IAlQR19SRVRVUk5fVEVYVF9QKGNhdGVuYXRlX3N0cmluZ2luZm9fc3RyaW5nKHN0YXRlLT5z dHIsICIgfSIpKTsKIH0KQEAgLTk4NCwyNSArMTI1MCwxNCBAQCBjYXRlbmF0ZV9zdHJpbmdp bmZvX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZmZlciwgY29uc3QgY2hhciAqYWRkb24pCiAJcmV0 dXJuIHJlc3VsdDsKIH0KIAotLyoKLSAqIFNRTCBmdW5jdGlvbiBqc29uX2J1aWxkX29iamVj dCh2YXJpYWRpYyAiYW55IikKLSAqLwogRGF0dW0KLWpzb25fYnVpbGRfb2JqZWN0KFBHX0ZV TkNUSU9OX0FSR1MpCitqc29uX2J1aWxkX29iamVjdF93b3JrZXIoaW50IG5hcmdzLCBEYXR1 bSAqYXJncywgYm9vbCAqbnVsbHMsIE9pZCAqdHlwZXMsCisJCQkJCQkgYm9vbCBhYnNlbnRf b25fbnVsbCwgYm9vbCB1bmlxdWVfa2V5cykKIHsKLQlpbnQJCQluYXJnczsKIAlpbnQJCQlp OwogCWNvbnN0IGNoYXIgKnNlcCA9ICIiOwogCVN0cmluZ0luZm8JcmVzdWx0OwotCURhdHVt CSAgICphcmdzOwotCWJvb2wJICAgKm51bGxzOwotCU9pZAkJICAgKnR5cGVzOwotCi0JLyog ZmV0Y2ggYXJndW1lbnQgdmFsdWVzIHRvIGJ1aWxkIHRoZSBvYmplY3QgKi8KLQluYXJncyA9 IGV4dHJhY3RfdmFyaWFkaWNfYXJncyhmY2luZm8sIDAsIGZhbHNlLCAmYXJncywgJnR5cGVz LCAmbnVsbHMpOwotCi0JaWYgKG5hcmdzIDwgMCkKLQkJUEdfUkVUVVJOX05VTEwoKTsKKwlK c29uVW5pcXVlQnVpbGRlclN0YXRlIHVuaXF1ZV9jaGVjazsKIAogCWlmIChuYXJncyAlIDIg IT0gMCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTEwMTYsMTkgKzEyNzEsNTggQEAganNvbl9i dWlsZF9vYmplY3QoUEdfRlVOQ1RJT05fQVJHUykKIAogCWFwcGVuZFN0cmluZ0luZm9DaGFy KHJlc3VsdCwgJ3snKTsKIAorCWlmICh1bmlxdWVfa2V5cykKKwkJanNvbl91bmlxdWVfYnVp bGRlcl9pbml0KCZ1bmlxdWVfY2hlY2spOworCiAJZm9yIChpID0gMDsgaSA8IG5hcmdzOyBp ICs9IDIpCiAJewotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHJlc3VsdCwgc2VwKTsKLQkJ c2VwID0gIiwgIjsKKwkJU3RyaW5nSW5mbwlvdXQ7CisJCWJvb2wJCXNraXA7CisJCWludAkJ CWtleV9vZmZzZXQ7CisKKwkJLyogU2tpcCBudWxsIHZhbHVlcyBpZiBhYnNlbnRfb25fbnVs bCAqLworCQlza2lwID0gYWJzZW50X29uX251bGwgJiYgbnVsbHNbaSArIDFdOworCisJCWlm IChza2lwKQorCQl7CisJCQkvKiBJZiBrZXkgdW5pcXVlbmVzcyBjaGVjayBpcyBuZWVkZWQg d2UgbXVzdCBzYXZlIHNraXBwZWQga2V5cyAqLworCQkJaWYgKCF1bmlxdWVfa2V5cykKKwkJ CQljb250aW51ZTsKKworCQkJb3V0ID0ganNvbl91bmlxdWVfYnVpbGRlcl9nZXRfc2tpcHBl ZF9rZXlzKCZ1bmlxdWVfY2hlY2spOworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhyZXN1bHQsIHNlcCk7CisJCQlzZXAgPSAiLCAiOworCQkJb3V0ID0g cmVzdWx0OworCQl9CiAKIAkJLyogcHJvY2VzcyBrZXkgKi8KIAkJaWYgKG51bGxzW2ldKQog CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCi0JCQkJCSBlcnJtc2coImFyZ3VtZW50ICVkIGNhbm5vdCBiZSBudWxs IiwgaSArIDEpLAorCQkJCQkgZXJybXNnKCJhcmd1bWVudCAlZCBjYW5ub3QgYmUgbnVsbCIs ICBpICsgMSksCiAJCQkJCSBlcnJoaW50KCJPYmplY3Qga2V5cyBzaG91bGQgYmUgdGV4dC4i KSkpOwogCi0JCWFkZF9qc29uKGFyZ3NbaV0sIGZhbHNlLCByZXN1bHQsIHR5cGVzW2ldLCB0 cnVlKTsKKwkJLyogc2F2ZSBrZXkgb2Zmc2V0IGJlZm9yZSBrZXkgYXBwZW5kaW5nICovCisJ CWtleV9vZmZzZXQgPSBvdXQtPmxlbjsKKworCQlhZGRfanNvbihhcmdzW2ldLCBmYWxzZSwg b3V0LCB0eXBlc1tpXSwgdHJ1ZSk7CisKKwkJaWYgKHVuaXF1ZV9rZXlzKQorCQl7CisJCQkv KiBjaGVjayBrZXkgdW5pcXVlbmVzcyBhZnRlciBrZXkgYXBwZW5kaW5nICovCisJCQljb25z dCBjaGFyICprZXkgPSAmb3V0LT5kYXRhW2tleV9vZmZzZXRdOworCisJCQlpZiAoIWpzb25f dW5pcXVlX2NoZWNrX2tleSgmdW5pcXVlX2NoZWNrLmNoZWNrLCBrZXksIDApKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9KU09OX09C SkVDVF9LRVlfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiZHVwbGljYXRlIEpTT04ga2V5ICVz Iiwga2V5KSkpOworCisJCQlpZiAoc2tpcCkKKwkJCQljb250aW51ZTsKKwkJfQogCiAJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcocmVzdWx0LCAiIDogIik7CiAKQEAgLTEwMzgsNyArMTMz MiwyOSBAQCBqc29uX2J1aWxkX29iamVjdChQR19GVU5DVElPTl9BUkdTKQogCiAJYXBwZW5k U3RyaW5nSW5mb0NoYXIocmVzdWx0LCAnfScpOwogCi0JUEdfUkVUVVJOX1RFWFRfUChjc3Ry aW5nX3RvX3RleHRfd2l0aF9sZW4ocmVzdWx0LT5kYXRhLCByZXN1bHQtPmxlbikpOworCWlm ICh1bmlxdWVfa2V5cykKKwkJanNvbl91bmlxdWVfYnVpbGRlcl9mcmVlKCZ1bmlxdWVfY2hl Y2spOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShjc3RyaW5nX3RvX3RleHRfd2l0aF9s ZW4ocmVzdWx0LT5kYXRhLCByZXN1bHQtPmxlbikpOworfQorCisvKgorICogU1FMIGZ1bmN0 aW9uIGpzb25fYnVpbGRfb2JqZWN0KHZhcmlhZGljICJhbnkiKQorICovCitEYXR1bQoranNv bl9idWlsZF9vYmplY3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlEYXR1bQkgICAqYXJnczsK Kwlib29sCSAgICpudWxsczsKKwlPaWQJCSAgICp0eXBlczsKKwkvKiBidWlsZCBhcmd1bWVu dCB2YWx1ZXMgdG8gYnVpbGQgdGhlIG9iamVjdCAqLworCWludAkJCW5hcmdzID0gZXh0cmFj dF92YXJpYWRpY19hcmdzKGZjaW5mbywgMCwgdHJ1ZSwKKwkJCQkJCQkJCQkJICAmYXJncywg JnR5cGVzLCAmbnVsbHMpOworCisJaWYgKG5hcmdzIDwgMCkKKwkJUEdfUkVUVVJOX05VTEwo KTsKKworCVBHX1JFVFVSTl9EQVRVTShqc29uX2J1aWxkX29iamVjdF93b3JrZXIobmFyZ3Ms IGFyZ3MsIG51bGxzLCB0eXBlcywgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIC8qCkBAIC0xMDUw LDI1ICsxMzY2LDEzIEBAIGpzb25fYnVpbGRfb2JqZWN0X25vYXJncyhQR19GVU5DVElPTl9B UkdTKQogCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKCJ7fSIs IDIpKTsKIH0KIAotLyoKLSAqIFNRTCBmdW5jdGlvbiBqc29uX2J1aWxkX2FycmF5KHZhcmlh ZGljICJhbnkiKQotICovCiBEYXR1bQotanNvbl9idWlsZF9hcnJheShQR19GVU5DVElPTl9B UkdTKQoranNvbl9idWlsZF9hcnJheV93b3JrZXIoaW50IG5hcmdzLCBEYXR1bSAqYXJncywg Ym9vbCAqbnVsbHMsIE9pZCAqdHlwZXMsCisJCQkJCQlib29sIGFic2VudF9vbl9udWxsKQog ewotCWludAkJCW5hcmdzOwogCWludAkJCWk7CiAJY29uc3QgY2hhciAqc2VwID0gIiI7CiAJ U3RyaW5nSW5mbwlyZXN1bHQ7Ci0JRGF0dW0JICAgKmFyZ3M7Ci0JYm9vbAkgICAqbnVsbHM7 Ci0JT2lkCQkgICAqdHlwZXM7Ci0KLQkvKiBmZXRjaCBhcmd1bWVudCB2YWx1ZXMgdG8gYnVp bGQgdGhlIGFycmF5ICovCi0JbmFyZ3MgPSBleHRyYWN0X3ZhcmlhZGljX2FyZ3MoZmNpbmZv LCAwLCBmYWxzZSwgJmFyZ3MsICZ0eXBlcywgJm51bGxzKTsKLQotCWlmIChuYXJncyA8IDAp Ci0JCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlyZXN1bHQgPSBtYWtlU3RyaW5nSW5mbygpOwog CkBAIC0xMDc2LDYgKzEzODAsOSBAQCBqc29uX2J1aWxkX2FycmF5KFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKIAl7CisJCWlmIChhYnNlbnRf b25fbnVsbCAmJiBudWxsc1tpXSkKKwkJCWNvbnRpbnVlOworCiAJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcocmVzdWx0LCBzZXApOwogCQlzZXAgPSAiLCAiOwogCQlhZGRfanNvbihhcmdz W2ldLCBudWxsc1tpXSwgcmVzdWx0LCB0eXBlc1tpXSwgZmFsc2UpOwpAQCAtMTA4Myw3ICsx MzkwLDI2IEBAIGpzb25fYnVpbGRfYXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKIAogCWFwcGVu ZFN0cmluZ0luZm9DaGFyKHJlc3VsdCwgJ10nKTsKIAotCVBHX1JFVFVSTl9URVhUX1AoY3N0 cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pKTsKKwly ZXR1cm4gUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dF93aXRoX2xlbihyZXN1bHQt PmRhdGEsIHJlc3VsdC0+bGVuKSk7Cit9CisKKy8qCisgKiBTUUwgZnVuY3Rpb24ganNvbl9i dWlsZF9hcnJheSh2YXJpYWRpYyAiYW55IikKKyAqLworRGF0dW0KK2pzb25fYnVpbGRfYXJy YXkoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlEYXR1bQkgICAqYXJnczsKKwlib29sCSAgICpu dWxsczsKKwlPaWQJCSAgICp0eXBlczsKKwkvKiBidWlsZCBhcmd1bWVudCB2YWx1ZXMgdG8g YnVpbGQgdGhlIG9iamVjdCAqLworCWludAkJCW5hcmdzID0gZXh0cmFjdF92YXJpYWRpY19h cmdzKGZjaW5mbywgMCwgdHJ1ZSwKKwkJCQkJCQkJCQkJICAmYXJncywgJnR5cGVzLCAmbnVs bHMpOworCisJaWYgKG5hcmdzIDwgMCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JF VFVSTl9EQVRVTShqc29uX2J1aWxkX2FycmF5X3dvcmtlcihuYXJncywgYXJncywgbnVsbHMs IHR5cGVzLCBmYWxzZSkpOwogfQogCiAvKgpAQCAtMTMxNyw2ICsxNjQzLDEwNiBAQCBlc2Nh cGVfanNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyKQogCWFwcGVuZFN0cmlu Z0luZm9DaGFyTWFjcm8oYnVmLCAnIicpOwogfQogCisvKiBTZW1hbnRpYyBhY3Rpb25zIGZv ciBrZXkgdW5pcXVlbmVzcyBjaGVjayAqLworc3RhdGljIHZvaWQKK2pzb25fdW5pcXVlX29i amVjdF9zdGFydCh2b2lkICpfc3RhdGUpCit7CisJSnNvblVuaXF1ZVBhcnNpbmdTdGF0ZSAq c3RhdGUgPSBfc3RhdGU7CisJSnNvblVuaXF1ZVN0YWNrRW50cnkgKmVudHJ5OworCisJaWYg KCFzdGF0ZS0+dW5pcXVlKQorCQlyZXR1cm47CisKKwkvKiBwdXNoIG9iamVjdCBlbnRyeSB0 byBzdGFjayAqLworCWVudHJ5ID0gcGFsbG9jKHNpemVvZigqZW50cnkpKTsKKwllbnRyeS0+ b2JqZWN0X2lkID0gc3RhdGUtPmlkX2NvdW50ZXIrKzsKKwllbnRyeS0+cGFyZW50ID0gc3Rh dGUtPnN0YWNrOworCXN0YXRlLT5zdGFjayA9IGVudHJ5OworfQorCitzdGF0aWMgdm9pZAor anNvbl91bmlxdWVfb2JqZWN0X2VuZCh2b2lkICpfc3RhdGUpCit7CisJSnNvblVuaXF1ZVBh cnNpbmdTdGF0ZSAqc3RhdGUgPSBfc3RhdGU7CisJSnNvblVuaXF1ZVN0YWNrRW50cnkgKmVu dHJ5OworCisJaWYgKCFzdGF0ZS0+dW5pcXVlKQorCQlyZXR1cm47CisKKwllbnRyeSA9IHN0 YXRlLT5zdGFjazsKKwlzdGF0ZS0+c3RhY2sgPSBlbnRyeS0+cGFyZW50OwkvKiBwb3Agb2Jq ZWN0IGZyb20gc3RhY2sgKi8KKwlwZnJlZShlbnRyeSk7Cit9CisKK3N0YXRpYyB2b2lkCitq c29uX3VuaXF1ZV9vYmplY3RfZmllbGRfc3RhcnQodm9pZCAqX3N0YXRlLCBjaGFyICpmaWVs ZCwgYm9vbCBpc251bGwpCit7CisJSnNvblVuaXF1ZVBhcnNpbmdTdGF0ZSAqc3RhdGUgPSBf c3RhdGU7CisJSnNvblVuaXF1ZVN0YWNrRW50cnkgKmVudHJ5OworCisJaWYgKCFzdGF0ZS0+ dW5pcXVlKQorCQlyZXR1cm47CisKKwkvKiBmaW5kIGtleSBjb2xsaXNpb24gaW4gdGhlIGN1 cnJlbnQgb2JqZWN0ICovCisJaWYgKGpzb25fdW5pcXVlX2NoZWNrX2tleSgmc3RhdGUtPmNo ZWNrLCBmaWVsZCwgc3RhdGUtPnN0YWNrLT5vYmplY3RfaWQpKQorCQlyZXR1cm47CisKKwlz dGF0ZS0+dW5pcXVlID0gZmFsc2U7CisKKwkvKiBwb3AgYWxsIG9iamVjdHMgZW50cmllcyAq LworCXdoaWxlICgoZW50cnkgPSBzdGF0ZS0+c3RhY2spKQorCXsKKwkJc3RhdGUtPnN0YWNr ID0gZW50cnktPnBhcmVudDsKKwkJcGZyZWUoZW50cnkpOworCX0KK30KKworLyogVmFsaWRh dGUgSlNPTiB0ZXh0IGFuZCBhZGRpdGlvbmFsbHkgY2hlY2sga2V5IHVuaXF1ZW5lc3MgKi8K K2Jvb2wKK2pzb25fdmFsaWRhdGUodGV4dCAqanNvbiwgYm9vbCBjaGVja191bmlxdWVfa2V5 cywgYm9vbCB0aHJvd19lcnJvcikKK3sKKwlKc29uTGV4Q29udGV4dCAqbGV4ID0gbWFrZUpz b25MZXhDb250ZXh0KGpzb24sIGNoZWNrX3VuaXF1ZV9rZXlzKTsKKwlKc29uU2VtQWN0aW9u IHVuaXF1ZVNlbUFjdGlvbiA9IHswfTsKKwlKc29uVW5pcXVlUGFyc2luZ1N0YXRlIHN0YXRl OworCUpzb25QYXJzZUVycm9yVHlwZSByZXN1bHQ7CisKKwlpZiAoY2hlY2tfdW5pcXVlX2tl eXMpCisJeworCQlzdGF0ZS5sZXggPSBsZXg7CisJCXN0YXRlLnN0YWNrID0gTlVMTDsKKwkJ c3RhdGUuaWRfY291bnRlciA9IDA7CisJCXN0YXRlLnVuaXF1ZSA9IHRydWU7CisJCWpzb25f dW5pcXVlX2NoZWNrX2luaXQoJnN0YXRlLmNoZWNrKTsKKworCQl1bmlxdWVTZW1BY3Rpb24u c2Vtc3RhdGUgPSAmc3RhdGU7CisJCXVuaXF1ZVNlbUFjdGlvbi5vYmplY3Rfc3RhcnQgPSBq c29uX3VuaXF1ZV9vYmplY3Rfc3RhcnQ7CisJCXVuaXF1ZVNlbUFjdGlvbi5vYmplY3RfZmll bGRfc3RhcnQgPSBqc29uX3VuaXF1ZV9vYmplY3RfZmllbGRfc3RhcnQ7CisJCXVuaXF1ZVNl bUFjdGlvbi5vYmplY3RfZW5kID0ganNvbl91bmlxdWVfb2JqZWN0X2VuZDsKKwl9CisKKwly ZXN1bHQgPSBwZ19wYXJzZV9qc29uKGxleCwgY2hlY2tfdW5pcXVlX2tleXMgPyAmdW5pcXVl U2VtQWN0aW9uIDogJm51bGxTZW1BY3Rpb24pOworCisJaWYgKHJlc3VsdCAhPSBKU09OX1NV Q0NFU1MpCisJeworCQlpZiAodGhyb3dfZXJyb3IpCisJCQlqc29uX2VyZXBvcnRfZXJyb3Io cmVzdWx0LCBsZXgpOworCisJCXJldHVybiBmYWxzZTsJLyogaW52YWxpZCBqc29uICovCisJ fQorCisJaWYgKGNoZWNrX3VuaXF1ZV9rZXlzICYmICFzdGF0ZS51bmlxdWUpCisJeworCQlp ZiAodGhyb3dfZXJyb3IpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0RVUExJQ0FURV9KU09OX09CSkVDVF9LRVlfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJk dXBsaWNhdGUgSlNPTiBvYmplY3Qga2V5IHZhbHVlIikpKTsKKworCQlyZXR1cm4gZmFsc2U7 CS8qIG5vdCB1bmlxdWUga2V5cyAqLworCX0KKworCXJldHVybiB0cnVlOwkvKiBvayAqLwor fQorCiAvKgogICogU1FMIGZ1bmN0aW9uIGpzb25fdHlwZW9mKGpzb24pIC0+IHRleHQKICAq CkBAIC0xMzMyLDIxICsxNzU4LDEzIEBAIGVzY2FwZV9qc29uKFN0cmluZ0luZm8gYnVmLCBj b25zdCBjaGFyICpzdHIpCiBEYXR1bQoganNvbl90eXBlb2YoUEdfRlVOQ1RJT05fQVJHUykK IHsKLQl0ZXh0CSAgICpqc29uOwotCi0JSnNvbkxleENvbnRleHQgKmxleDsKLQlKc29uVG9r ZW5UeXBlIHRvazsKKwl0ZXh0CSAgICpqc29uID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7CiAJ Y2hhcgkgICAqdHlwZTsKLQlKc29uUGFyc2VFcnJvclR5cGUgcmVzdWx0OwotCi0JanNvbiA9 IFBHX0dFVEFSR19URVhUX1BQKDApOwotCWxleCA9IG1ha2VKc29uTGV4Q29udGV4dChqc29u LCBmYWxzZSk7CisJSnNvblRva2VuVHlwZSB0b2s7CiAKIAkvKiBMZXggZXhhY3RseSBvbmUg dG9rZW4gZnJvbSB0aGUgaW5wdXQgYW5kIGNoZWNrIGl0cyB0eXBlLiAqLwotCXJlc3VsdCA9 IGpzb25fbGV4KGxleCk7Ci0JaWYgKHJlc3VsdCAhPSBKU09OX1NVQ0NFU1MpCi0JCWpzb25f ZXJlcG9ydF9lcnJvcihyZXN1bHQsIGxleCk7Ci0JdG9rID0gbGV4LT50b2tlbl90eXBlOwor CXRvayA9IGpzb25fZ2V0X2ZpcnN0X3Rva2VuKGpzb24sIHRydWUpOworCiAJc3dpdGNoICh0 b2spCiAJewogCQljYXNlIEpTT05fVE9LRU5fT0JKRUNUX1NUQVJUOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYwppbmRleCBmNWY0MGE5NGJkLi45MDg5YjNiMjJlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYwpAQCAtMTQsNiArMTQsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0 YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAi ZnVuY2FwaS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCkBAIC0zMywyNSArMzQs OSBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYkluU3RhdGUKIHsKIAlKc29uYlBhcnNlU3RhdGUg KnBhcnNlU3RhdGU7CiAJSnNvbmJWYWx1ZSAqcmVzOworCWJvb2wJCXVuaXF1ZV9rZXlzOwog fSBKc29uYkluU3RhdGU7CiAKLS8qIHVubGlrZSB3aXRoIGpzb24gY2F0ZWdvcmllcywgd2Ug bmVlZCB0byB0cmVhdCBqc29uIGFuZCBqc29uYiBkaWZmZXJlbnRseSAqLwotdHlwZWRlZiBl bnVtCQkJCQkvKiB0eXBlIGNhdGVnb3JpZXMgZm9yIGRhdHVtX3RvX2pzb25iICovCi17Ci0J SlNPTkJUWVBFX05VTEwsCQkJCS8qIG51bGwsIHNvIHdlIGRpZG4ndCBib3RoZXIgdG8gaWRl bnRpZnkgKi8KLQlKU09OQlRZUEVfQk9PTCwJCQkJLyogYm9vbGVhbiAoYnVpbHQtaW4gdHlw ZXMgb25seSkgKi8KLQlKU09OQlRZUEVfTlVNRVJJQywJCQkvKiBudW1lcmljIChkaXR0bykg Ki8KLQlKU09OQlRZUEVfREFURSwJCQkJLyogd2UgdXNlIHNwZWNpYWwgZm9ybWF0dGluZyBm b3IgZGF0ZXRpbWVzICovCi0JSlNPTkJUWVBFX1RJTUVTVEFNUCwJCS8qIHdlIHVzZSBzcGVj aWFsIGZvcm1hdHRpbmcgZm9yIHRpbWVzdGFtcCAqLwotCUpTT05CVFlQRV9USU1FU1RBTVBU WiwJCS8qIC4uLiBhbmQgdGltZXN0YW1wdHogKi8KLQlKU09OQlRZUEVfSlNPTiwJCQkJLyog SlNPTiAqLwotCUpTT05CVFlQRV9KU09OQiwJCQkvKiBKU09OQiAqLwotCUpTT05CVFlQRV9B UlJBWSwJCQkvKiBhcnJheSAqLwotCUpTT05CVFlQRV9DT01QT1NJVEUsCQkvKiBjb21wb3Np dGUgKi8KLQlKU09OQlRZUEVfSlNPTkNBU1QsCQkJLyogc29tZXRoaW5nIHdpdGggYW4gZXhw bGljaXQgY2FzdCB0byBKU09OICovCi0JSlNPTkJUWVBFX09USEVSCQkJCS8qIGFsbCBlbHNl ICovCi19IEpzb25iVHlwZUNhdGVnb3J5OwotCiB0eXBlZGVmIHN0cnVjdCBKc29uYkFnZ1N0 YXRlCiB7CiAJSnNvbmJJblN0YXRlICpyZXM7CkBAIC02MSw3ICs0Niw3IEBAIHR5cGVkZWYg c3RydWN0IEpzb25iQWdnU3RhdGUKIAlPaWQJCQl2YWxfb3V0cHV0X2Z1bmM7CiB9IEpzb25i QWdnU3RhdGU7CiAKLXN0YXRpYyBpbmxpbmUgRGF0dW0ganNvbmJfZnJvbV9jc3RyaW5nKGNo YXIgKmpzb24sIGludCBsZW4pOworc3RhdGljIGlubGluZSBEYXR1bSBqc29uYl9mcm9tX2Nz dHJpbmcoY2hhciAqanNvbiwgaW50IGxlbiwgYm9vbCB1bmlxdWVfa2V5cyk7CiBzdGF0aWMg c2l6ZV90IGNoZWNrU3RyaW5nTGVuKHNpemVfdCBsZW4pOwogc3RhdGljIHZvaWQganNvbmJf aW5fb2JqZWN0X3N0YXJ0KHZvaWQgKnBzdGF0ZSk7CiBzdGF0aWMgdm9pZCBqc29uYl9pbl9v YmplY3RfZW5kKHZvaWQgKnBzdGF0ZSk7CkBAIC03MCwxNyArNTUsMTEgQEAgc3RhdGljIHZv aWQganNvbmJfaW5fYXJyYXlfZW5kKHZvaWQgKnBzdGF0ZSk7CiBzdGF0aWMgdm9pZCBqc29u Yl9pbl9vYmplY3RfZmllbGRfc3RhcnQodm9pZCAqcHN0YXRlLCBjaGFyICpmbmFtZSwgYm9v bCBpc251bGwpOwogc3RhdGljIHZvaWQganNvbmJfcHV0X2VzY2FwZWRfdmFsdWUoU3RyaW5n SW5mbyBvdXQsIEpzb25iVmFsdWUgKnNjYWxhclZhbCk7CiBzdGF0aWMgdm9pZCBqc29uYl9p bl9zY2FsYXIodm9pZCAqcHN0YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlwZSB0b2tl bnR5cGUpOwotc3RhdGljIHZvaWQganNvbmJfY2F0ZWdvcml6ZV90eXBlKE9pZCB0eXBvaWQs Ci0JCQkJCQkJCSAgSnNvbmJUeXBlQ2F0ZWdvcnkgKnRjYXRlZ29yeSwKLQkJCQkJCQkJICBP aWQgKm91dGZ1bmNvaWQpOwogc3RhdGljIHZvaWQgY29tcG9zaXRlX3RvX2pzb25iKERhdHVt IGNvbXBvc2l0ZSwgSnNvbmJJblN0YXRlICpyZXN1bHQpOwogc3RhdGljIHZvaWQgYXJyYXlf ZGltX3RvX2pzb25iKEpzb25iSW5TdGF0ZSAqcmVzdWx0LCBpbnQgZGltLCBpbnQgbmRpbXMs IGludCAqZGltcywKIAkJCQkJCQkgICBEYXR1bSAqdmFscywgYm9vbCAqbnVsbHMsIGludCAq dmFsY291bnQsCiAJCQkJCQkJICAgSnNvbmJUeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQg b3V0ZnVuY29pZCk7CiBzdGF0aWMgdm9pZCBhcnJheV90b19qc29uYl9pbnRlcm5hbChEYXR1 bSBhcnJheSwgSnNvbmJJblN0YXRlICpyZXN1bHQpOwotc3RhdGljIHZvaWQganNvbmJfY2F0 ZWdvcml6ZV90eXBlKE9pZCB0eXBvaWQsCi0JCQkJCQkJCSAgSnNvbmJUeXBlQ2F0ZWdvcnkg KnRjYXRlZ29yeSwKLQkJCQkJCQkJICBPaWQgKm91dGZ1bmNvaWQpOwogc3RhdGljIHZvaWQg ZGF0dW1fdG9fanNvbmIoRGF0dW0gdmFsLCBib29sIGlzX251bGwsIEpzb25iSW5TdGF0ZSAq cmVzdWx0LAogCQkJCQkJICAgSnNvbmJUeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0 ZnVuY29pZCwKIAkJCQkJCSAgIGJvb2wga2V5X3NjYWxhcik7CkBAIC05MCw2ICs2OSw4IEBA IHN0YXRpYyBKc29uYlBhcnNlU3RhdGUgKmNsb25lX3BhcnNlX3N0YXRlKEpzb25iUGFyc2VT dGF0ZSAqc3RhdGUpOwogc3RhdGljIGNoYXIgKkpzb25iVG9DU3RyaW5nV29ya2VyKFN0cmlu Z0luZm8gb3V0LCBKc29uYkNvbnRhaW5lciAqaW4sIGludCBlc3RpbWF0ZWRfbGVuLCBib29s IGluZGVudCk7CiBzdGF0aWMgdm9pZCBhZGRfaW5kZW50KFN0cmluZ0luZm8gb3V0LCBib29s IGluZGVudCwgaW50IGxldmVsKTsKIAoraW50CQkJc3FsX2pzb25fdHlwZTsJCS8qIEdVQyBm b3IgbWFwcGluZyBqc29uYiB0byBTUUwvSlNPTiBKU09OICovCisKIC8qCiAgKiBqc29uYiB0 eXBlIGlucHV0IGZ1bmN0aW9uCiAgKi8KQEAgLTk4LDcgKzc5LDcgQEAganNvbmJfaW4oUEdf RlVOQ1RJT05fQVJHUykKIHsKIAljaGFyCSAgICpqc29uID0gUEdfR0VUQVJHX0NTVFJJTkco MCk7CiAKLQlyZXR1cm4ganNvbmJfZnJvbV9jc3RyaW5nKGpzb24sIHN0cmxlbihqc29uKSk7 CisJcmV0dXJuIGpzb25iX2Zyb21fY3N0cmluZyhqc29uLCBzdHJsZW4oanNvbiksIGZhbHNl KTsKIH0KIAogLyoKQEAgLTEyMiw3ICsxMDMsNyBAQCBqc29uYl9yZWN2KFBHX0ZVTkNUSU9O X0FSR1MpCiAJZWxzZQogCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQganNvbmIgdmVyc2lv biBudW1iZXIgJWQiLCB2ZXJzaW9uKTsKIAotCXJldHVybiBqc29uYl9mcm9tX2NzdHJpbmco c3RyLCBuYnl0ZXMpOworCXJldHVybiBqc29uYl9mcm9tX2NzdHJpbmcoc3RyLCBuYnl0ZXMs IGZhbHNlKTsKIH0KIAogLyoKQEAgLTE2Myw2ICsxNDQsMTQgQEAganNvbmJfc2VuZChQR19G VU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9CWVRFQV9QKHBxX2VuZHR5cHNlbmQoJmJ1Zikp OwogfQogCitEYXR1bQoranNvbmJfZnJvbV90ZXh0KHRleHQgKmpzLCBib29sIHVuaXF1ZV9r ZXlzKQoreworCXJldHVybiBqc29uYl9mcm9tX2NzdHJpbmcoVkFSREFUQV9BTlkoanMpLAor CQkJCQkJCSAgVkFSU0laRV9BTllfRVhIRFIoanMpLAorCQkJCQkJCSAgdW5pcXVlX2tleXMp OworfQorCiAvKgogICogR2V0IHRoZSB0eXBlIG5hbWUgb2YgYSBqc29uYiBjb250YWluZXIu CiAgKi8KQEAgLTI1Myw3ICsyNDIsNyBAQCBqc29uYl90eXBlb2YoUEdfRlVOQ1RJT05fQVJH UykKICAqIFVzZXMgdGhlIGpzb24gcGFyc2VyICh3aXRoIGhvb2tzKSB0byBjb25zdHJ1Y3Qg YSBqc29uYi4KICAqLwogc3RhdGljIGlubGluZSBEYXR1bQotanNvbmJfZnJvbV9jc3RyaW5n KGNoYXIgKmpzb24sIGludCBsZW4pCitqc29uYl9mcm9tX2NzdHJpbmcoY2hhciAqanNvbiwg aW50IGxlbiwgYm9vbCB1bmlxdWVfa2V5cykKIHsKIAlKc29uTGV4Q29udGV4dCAqbGV4Owog CUpzb25iSW5TdGF0ZSBzdGF0ZTsKQEAgLTI2Myw2ICsyNTIsOCBAQCBqc29uYl9mcm9tX2Nz dHJpbmcoY2hhciAqanNvbiwgaW50IGxlbikKIAltZW1zZXQoJnNlbSwgMCwgc2l6ZW9mKHNl bSkpOwogCWxleCA9IG1ha2VKc29uTGV4Q29udGV4dENzdHJpbmdMZW4oanNvbiwgbGVuLCBH ZXREYXRhYmFzZUVuY29kaW5nKCksIHRydWUpOwogCisJc3RhdGUudW5pcXVlX2tleXMgPSB1 bmlxdWVfa2V5czsKKwogCXNlbS5zZW1zdGF0ZSA9ICh2b2lkICopICZzdGF0ZTsKIAogCXNl bS5vYmplY3Rfc3RhcnQgPSBqc29uYl9pbl9vYmplY3Rfc3RhcnQ7CkBAIC0yOTcsNiArMjg4 LDcgQEAganNvbmJfaW5fb2JqZWN0X3N0YXJ0KHZvaWQgKnBzdGF0ZSkKIAlKc29uYkluU3Rh dGUgKl9zdGF0ZSA9IChKc29uYkluU3RhdGUgKikgcHN0YXRlOwogCiAJX3N0YXRlLT5yZXMg PSBwdXNoSnNvbmJWYWx1ZSgmX3N0YXRlLT5wYXJzZVN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKwlfc3RhdGUtPnBhcnNlU3RhdGUtPnVuaXF1ZV9rZXlzID0gX3N0YXRlLT51 bmlxdWVfa2V5czsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTYxOSw3ICs2MTEsNyBAQCBhZGRf aW5kZW50KFN0cmluZ0luZm8gb3V0LCBib29sIGluZGVudCwgaW50IGxldmVsKQogICogb3V0 cHV0IGZ1bmN0aW9uIE9JRC4gIElmIHRoZSByZXR1cm5lZCBjYXRlZ29yeSBpcyBKU09OQlRZ UEVfSlNPTkNBU1QsCiAgKiB3ZSByZXR1cm4gdGhlIE9JRCBvZiB0aGUgcmVsZXZhbnQgY2Fz dCBmdW5jdGlvbiBpbnN0ZWFkLgogICovCi1zdGF0aWMgdm9pZAordm9pZAoganNvbmJfY2F0 ZWdvcml6ZV90eXBlKE9pZCB0eXBvaWQsCiAJCQkJCSAgSnNvbmJUeXBlQ2F0ZWdvcnkgKnRj YXRlZ29yeSwKIAkJCQkJICBPaWQgKm91dGZ1bmNvaWQpCkBAIC0xMTI2LDYgKzExMTgsNTEg QEAgYWRkX2pzb25iKERhdHVtIHZhbCwgYm9vbCBpc19udWxsLCBKc29uYkluU3RhdGUgKnJl c3VsdCwKIAlkYXR1bV90b19qc29uYih2YWwsIGlzX251bGwsIHJlc3VsdCwgdGNhdGVnb3J5 LCBvdXRmdW5jb2lkLCBrZXlfc2NhbGFyKTsKIH0KIAorRGF0dW0KK3RvX2pzb25iX3dvcmtl cihEYXR1bSB2YWwsIEpzb25iVHlwZUNhdGVnb3J5IHRjYXRlZ29yeSwgT2lkIG91dGZ1bmNv aWQpCit7CisJSnNvbmJJblN0YXRlIHJlc3VsdDsKKworCW1lbXNldCgmcmVzdWx0LCAwLCBz aXplb2YoSnNvbmJJblN0YXRlKSk7CisKKwlkYXR1bV90b19qc29uYih2YWwsIGZhbHNlLCAm cmVzdWx0LCB0Y2F0ZWdvcnksIG91dGZ1bmNvaWQsIGZhbHNlKTsKKworCXJldHVybiBKc29u YlBHZXREYXR1bShKc29uYlZhbHVlVG9Kc29uYihyZXN1bHQucmVzKSk7Cit9CisKK2Jvb2wK K3RvX2pzb25iX2lzX2ltbXV0YWJsZShPaWQgdHlwb2lkKQoreworCUpzb25iVHlwZUNhdGVn b3J5IHRjYXRlZ29yeTsKKwlPaWQJCQlvdXRmdW5jb2lkOworCisJanNvbmJfY2F0ZWdvcml6 ZV90eXBlKHR5cG9pZCwgJnRjYXRlZ29yeSwgJm91dGZ1bmNvaWQpOworCisJc3dpdGNoICh0 Y2F0ZWdvcnkpCisJeworCQljYXNlIEpTT05CVFlQRV9CT09MOgorCQljYXNlIEpTT05CVFlQ RV9KU09OOgorCQljYXNlIEpTT05CVFlQRV9KU09OQjoKKwkJCXJldHVybiB0cnVlOworCisJ CWNhc2UgSlNPTkJUWVBFX0RBVEU6CisJCWNhc2UgSlNPTkJUWVBFX1RJTUVTVEFNUDoKKwkJ Y2FzZSBKU09OQlRZUEVfVElNRVNUQU1QVFo6CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJY2Fz ZSBKU09OQlRZUEVfQVJSQVk6CisJCQlyZXR1cm4gZmFsc2U7CS8qIFRPRE8gcmVjdXJzZSBp bnRvIGVsZW1lbnRzICovCisKKwkJY2FzZSBKU09OQlRZUEVfQ09NUE9TSVRFOgorCQkJcmV0 dXJuIGZhbHNlOwkvKiBUT0RPIHJlY3Vyc2UgaW50byBmaWVsZHMgKi8KKworCQljYXNlIEpT T05CVFlQRV9OVU1FUklDOgorCQljYXNlIEpTT05CVFlQRV9KU09OQ0FTVDoKKwkJZGVmYXVs dDoKKwkJCXJldHVybiBmdW5jX3ZvbGF0aWxlKG91dGZ1bmNvaWQpID09IFBST1ZPTEFUSUxF X0lNTVVUQUJMRTsKKwl9Cit9CisKIC8qCiAgKiBTUUwgZnVuY3Rpb24gdG9fanNvbmIoYW55 dmFsdWUpCiAgKi8KQEAgLTExMzQsNyArMTE3MSw2IEBAIHRvX2pzb25iKFBHX0ZVTkNUSU9O X0FSR1MpCiB7CiAJRGF0dW0JCXZhbCA9IFBHX0dFVEFSR19EQVRVTSgwKTsKIAlPaWQJCQl2 YWxfdHlwZSA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDApOwotCUpz b25iSW5TdGF0ZSByZXN1bHQ7CiAJSnNvbmJUeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5OwogCU9p ZAkJCW91dGZ1bmNvaWQ7CiAKQEAgLTExNDYsMzEgKzExODIsMTUgQEAgdG9fanNvbmIoUEdf RlVOQ1RJT05fQVJHUykKIAlqc29uYl9jYXRlZ29yaXplX3R5cGUodmFsX3R5cGUsCiAJCQkJ CQkgICZ0Y2F0ZWdvcnksICZvdXRmdW5jb2lkKTsKIAotCW1lbXNldCgmcmVzdWx0LCAwLCBz aXplb2YoSnNvbmJJblN0YXRlKSk7Ci0KLQlkYXR1bV90b19qc29uYih2YWwsIGZhbHNlLCAm cmVzdWx0LCB0Y2F0ZWdvcnksIG91dGZ1bmNvaWQsIGZhbHNlKTsKLQotCVBHX1JFVFVSTl9Q T0lOVEVSKEpzb25iVmFsdWVUb0pzb25iKHJlc3VsdC5yZXMpKTsKKwlQR19SRVRVUk5fREFU VU0odG9fanNvbmJfd29ya2VyKHZhbCwgdGNhdGVnb3J5LCBvdXRmdW5jb2lkKSk7CiB9CiAK LS8qCi0gKiBTUUwgZnVuY3Rpb24ganNvbmJfYnVpbGRfb2JqZWN0KHZhcmlhZGljICJhbnki KQotICovCiBEYXR1bQotanNvbmJfYnVpbGRfb2JqZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCitq c29uYl9idWlsZF9vYmplY3Rfd29ya2VyKGludCBuYXJncywgRGF0dW0gKmFyZ3MsIGJvb2wg Km51bGxzLCBPaWQgKnR5cGVzLAorCQkJCQkJICBib29sIGFic2VudF9vbl9udWxsLCBib29s IHVuaXF1ZV9rZXlzKQogewotCWludAkJCW5hcmdzOwogCWludAkJCWk7CiAJSnNvbmJJblN0 YXRlIHJlc3VsdDsKLQlEYXR1bQkgICAqYXJnczsKLQlib29sCSAgICpudWxsczsKLQlPaWQJ CSAgICp0eXBlczsKLQotCS8qIGJ1aWxkIGFyZ3VtZW50IHZhbHVlcyB0byBidWlsZCB0aGUg b2JqZWN0ICovCi0JbmFyZ3MgPSBleHRyYWN0X3ZhcmlhZGljX2FyZ3MoZmNpbmZvLCAwLCB0 cnVlLCAmYXJncywgJnR5cGVzLCAmbnVsbHMpOwotCi0JaWYgKG5hcmdzIDwgMCkKLQkJUEdf UkVUVVJOX05VTEwoKTsKIAogCWlmIChuYXJncyAlIDIgIT0gMCkKIAkJZXJlcG9ydChFUlJP UiwKQEAgLTExODMsMTUgKzEyMDMsMjYgQEAganNvbmJfYnVpbGRfb2JqZWN0KFBHX0ZVTkNU SU9OX0FSR1MpCiAJbWVtc2V0KCZyZXN1bHQsIDAsIHNpemVvZihKc29uYkluU3RhdGUpKTsK IAogCXJlc3VsdC5yZXMgPSBwdXNoSnNvbmJWYWx1ZSgmcmVzdWx0LnBhcnNlU3RhdGUsIFdK Ql9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCXJlc3VsdC5wYXJzZVN0YXRlLT51bmlxdWVfa2V5 cyA9IHVuaXF1ZV9rZXlzOworCXJlc3VsdC5wYXJzZVN0YXRlLT5za2lwX251bGxzID0gYWJz ZW50X29uX251bGw7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkgKz0gMikKIAl7CiAJ CS8qIHByb2Nlc3Mga2V5ICovCisJCWJvb2wJCXNraXA7CisKIAkJaWYgKG51bGxzW2ldKQog CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coImFyZ3VtZW50ICVkOiBrZXkgbXVzdCBub3Qg YmUgbnVsbCIsIGkgKyAxKSkpOwogCisJCS8qIHNraXAgbnVsbCB2YWx1ZXMgaWYgYWJzZW50 X29uX251bGwgKi8KKwkJc2tpcCA9IGFic2VudF9vbl9udWxsICYmIG51bGxzW2kgKyAxXTsK KworCQkvKiB3ZSBuZWVkIHRvIHNhdmUgc2tpcHBlZCBrZXlzIGZvciB0aGUga2V5IHVuaXF1 ZW5lc3MgY2hlY2sgKi8KKwkJaWYgKHNraXAgJiYgIXVuaXF1ZV9rZXlzKQorCQkJY29udGlu dWU7CisKIAkJYWRkX2pzb25iKGFyZ3NbaV0sIGZhbHNlLCAmcmVzdWx0LCB0eXBlc1tpXSwg dHJ1ZSk7CiAKIAkJLyogcHJvY2VzcyB2YWx1ZSAqLwpAQCAtMTIwMCw3ICsxMjMxLDI2IEBA IGpzb25iX2J1aWxkX29iamVjdChQR19GVU5DVElPTl9BUkdTKQogCiAJcmVzdWx0LnJlcyA9 IHB1c2hKc29uYlZhbHVlKCZyZXN1bHQucGFyc2VTdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5V TEwpOwogCi0JUEdfUkVUVVJOX1BPSU5URVIoSnNvbmJWYWx1ZVRvSnNvbmIocmVzdWx0LnJl cykpOworCXJldHVybiBKc29uYlBHZXREYXR1bShKc29uYlZhbHVlVG9Kc29uYihyZXN1bHQu cmVzKSk7Cit9CisKKy8qCisgKiBTUUwgZnVuY3Rpb24ganNvbmJfYnVpbGRfb2JqZWN0KHZh cmlhZGljICJhbnkiKQorICovCitEYXR1bQoranNvbmJfYnVpbGRfb2JqZWN0KFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJRGF0dW0JICAgKmFyZ3M7CisJYm9vbAkgICAqbnVsbHM7CisJT2lk CQkgICAqdHlwZXM7CisJLyogYnVpbGQgYXJndW1lbnQgdmFsdWVzIHRvIGJ1aWxkIHRoZSBv YmplY3QgKi8KKwlpbnQJCQluYXJncyA9IGV4dHJhY3RfdmFyaWFkaWNfYXJncyhmY2luZm8s IDAsIHRydWUsCisJCQkJCQkJCQkJCSAgJmFyZ3MsICZ0eXBlcywgJm51bGxzKTsKKworCWlm IChuYXJncyA8IDApCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fREFUVU0o anNvbmJfYnVpbGRfb2JqZWN0X3dvcmtlcihuYXJncywgYXJncywgbnVsbHMsIHR5cGVzLCBm YWxzZSwgZmFsc2UpKTsKIH0KIAogLyoKQEAgLTEyMTksMzcgKzEyNjksNTAgQEAganNvbmJf YnVpbGRfb2JqZWN0X25vYXJncyhQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9QT0lO VEVSKEpzb25iVmFsdWVUb0pzb25iKHJlc3VsdC5yZXMpKTsKIH0KIAotLyoKLSAqIFNRTCBm dW5jdGlvbiBqc29uYl9idWlsZF9hcnJheSh2YXJpYWRpYyAiYW55IikKLSAqLwogRGF0dW0K LWpzb25iX2J1aWxkX2FycmF5KFBHX0ZVTkNUSU9OX0FSR1MpCitqc29uYl9idWlsZF9hcnJh eV93b3JrZXIoaW50IG5hcmdzLCBEYXR1bSAqYXJncywgYm9vbCAqbnVsbHMsIE9pZCAqdHlw ZXMsCisJCQkJCQkgYm9vbCBhYnNlbnRfb25fbnVsbCkKIHsKLQlpbnQJCQluYXJnczsKIAlp bnQJCQlpOwogCUpzb25iSW5TdGF0ZSByZXN1bHQ7Ci0JRGF0dW0JICAgKmFyZ3M7Ci0JYm9v bAkgICAqbnVsbHM7Ci0JT2lkCQkgICAqdHlwZXM7Ci0KLQkvKiBidWlsZCBhcmd1bWVudCB2 YWx1ZXMgdG8gYnVpbGQgdGhlIGFycmF5ICovCi0JbmFyZ3MgPSBleHRyYWN0X3ZhcmlhZGlj X2FyZ3MoZmNpbmZvLCAwLCB0cnVlLCAmYXJncywgJnR5cGVzLCAmbnVsbHMpOwotCi0JaWYg KG5hcmdzIDwgMCkKLQkJUEdfUkVUVVJOX05VTEwoKTsKIAogCW1lbXNldCgmcmVzdWx0LCAw LCBzaXplb2YoSnNvbmJJblN0YXRlKSk7CiAKIAlyZXN1bHQucmVzID0gcHVzaEpzb25iVmFs dWUoJnJlc3VsdC5wYXJzZVN0YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOwogCiAJZm9y IChpID0gMDsgaSA8IG5hcmdzOyBpKyspCisJeworCQlpZiAoYWJzZW50X29uX251bGwgJiYg bnVsbHNbaV0pCisJCQljb250aW51ZTsKKwogCQlhZGRfanNvbmIoYXJnc1tpXSwgbnVsbHNb aV0sICZyZXN1bHQsIHR5cGVzW2ldLCBmYWxzZSk7CisJfQogCiAJcmVzdWx0LnJlcyA9IHB1 c2hKc29uYlZhbHVlKCZyZXN1bHQucGFyc2VTdGF0ZSwgV0pCX0VORF9BUlJBWSwgTlVMTCk7 CiAKLQlQR19SRVRVUk5fUE9JTlRFUihKc29uYlZhbHVlVG9Kc29uYihyZXN1bHQucmVzKSk7 CisJcmV0dXJuIEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKHJlc3VsdC5yZXMp KTsKIH0KIAorLyoKKyAqIFNRTCBmdW5jdGlvbiBqc29uYl9idWlsZF9hcnJheSh2YXJpYWRp YyAiYW55IikKKyAqLworRGF0dW0KK2pzb25iX2J1aWxkX2FycmF5KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJRGF0dW0JICAgKmFyZ3M7CisJYm9vbAkgICAqbnVsbHM7CisJT2lkCQkgICAq dHlwZXM7CisJLyogYnVpbGQgYXJndW1lbnQgdmFsdWVzIHRvIGJ1aWxkIHRoZSBvYmplY3Qg Ki8KKwlpbnQJCQluYXJncyA9IGV4dHJhY3RfdmFyaWFkaWNfYXJncyhmY2luZm8sIDAsIHRy dWUsCisJCQkJCQkJCQkJCSAgJmFyZ3MsICZ0eXBlcywgJm51bGxzKTsKKworCWlmIChuYXJn cyA8IDApCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fREFUVU0oanNvbmJf YnVpbGRfYXJyYXlfd29ya2VyKG5hcmdzLCBhcmdzLCBudWxscywgdHlwZXMsIGZhbHNlKSk7 Cit9CisKKwogLyoKICAqIGRlZ2VuZXJhdGUgY2FzZSBvZiBqc29uYl9idWlsZF9hcnJheSB3 aGVyZSBpdCBnZXRzIDAgYXJndW1lbnRzLgogICovCkBAIC0xNDkwLDYgKzE1NTMsOCBAQCBj bG9uZV9wYXJzZV9zdGF0ZShKc29uYlBhcnNlU3RhdGUgKnN0YXRlKQogCXsKIAkJb2N1cnNv ci0+Y29udFZhbCA9IGljdXJzb3ItPmNvbnRWYWw7CiAJCW9jdXJzb3ItPnNpemUgPSBpY3Vy c29yLT5zaXplOworCQlvY3Vyc29yLT51bmlxdWVfa2V5cyA9IGljdXJzb3ItPnVuaXF1ZV9r ZXlzOworCQlvY3Vyc29yLT5za2lwX251bGxzID0gaWN1cnNvci0+c2tpcF9udWxsczsKIAkJ aWN1cnNvciA9IGljdXJzb3ItPm5leHQ7CiAJCWlmIChpY3Vyc29yID09IE5VTEwpCiAJCQli cmVhazsKQEAgLTE1MDEsMTIgKzE1NjYsOCBAQCBjbG9uZV9wYXJzZV9zdGF0ZShKc29uYlBh cnNlU3RhdGUgKnN0YXRlKQogCXJldHVybiByZXN1bHQ7CiB9CiAKLQotLyoKLSAqIGpzb25i X2FnZyBhZ2dyZWdhdGUgZnVuY3Rpb24KLSAqLwotRGF0dW0KLWpzb25iX2FnZ190cmFuc2Zu KFBHX0ZVTkNUSU9OX0FSR1MpCitzdGF0aWMgRGF0dW0KK2pzb25iX2FnZ190cmFuc2ZuX3dv cmtlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBhYnNlbnRfb25fbnVsbCkKIHsK IAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQsCiAJCQkJYWdnY29udGV4dDsKQEAgLTE1NTQs NiArMTYxNSw5IEBAIGpzb25iX2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJl c3VsdCA9IHN0YXRlLT5yZXM7CiAJfQogCisJaWYgKGFic2VudF9vbl9udWxsICYmIFBHX0FS R0lTTlVMTCgxKSkKKwkJUEdfUkVUVVJOX1BPSU5URVIoc3RhdGUpOworCiAJLyogdHVybiB0 aGUgYXJndW1lbnQgaW50byBqc29uYiBpbiB0aGUgbm9ybWFsIGZ1bmN0aW9uIGNvbnRleHQg Ki8KIAogCXZhbCA9IFBHX0FSR0lTTlVMTCgxKSA/IChEYXR1bSkgMCA6IFBHX0dFVEFSR19E QVRVTSgxKTsKQEAgLTE2MjMsNiArMTY4NywyNCBAQCBqc29uYl9hZ2dfdHJhbnNmbihQR19G VU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9QT0lOVEVSKHN0YXRlKTsKIH0KIAorLyoKKyAq IGpzb25iX2FnZyBhZ2dyZWdhdGUgZnVuY3Rpb24KKyAqLworRGF0dW0KK2pzb25iX2FnZ190 cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIGpzb25iX2FnZ190cmFuc2Zu X3dvcmtlcihmY2luZm8sIGZhbHNlKTsKK30KKworLyoKKyAqIGpzb25iX2FnZ19zdHJpY3Qg YWdncmVnYXRlIGZ1bmN0aW9uCisgKi8KK0RhdHVtCitqc29uYl9hZ2dfc3RyaWN0X3RyYW5z Zm4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlyZXR1cm4ganNvbmJfYWdnX3RyYW5zZm5fd29y a2VyKGZjaW5mbywgdHJ1ZSk7Cit9CisKIERhdHVtCiBqc29uYl9hZ2dfZmluYWxmbihQR19G VU5DVElPTl9BUkdTKQogewpAQCAtMTY1NSwxMSArMTczNyw5IEBAIGpzb25iX2FnZ19maW5h bGZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1BPSU5URVIob3V0KTsKIH0KIAot LyoKLSAqIGpzb25iX29iamVjdF9hZ2cgYWdncmVnYXRlIGZ1bmN0aW9uCi0gKi8KLURhdHVt Ci1qc29uYl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKK3N0YXRpYyBE YXR1bQoranNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuX3dvcmtlcihGdW5jdGlvbkNhbGxJbmZv IGZjaW5mbywKKwkJCQkJCQkJYm9vbCBhYnNlbnRfb25fbnVsbCwgYm9vbCB1bmlxdWVfa2V5 cykKIHsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQsCiAJCQkJYWdnY29udGV4dDsKQEAg LTE2NzMsNiArMTc1Myw3IEBAIGpzb25iX29iamVjdF9hZ2dfdHJhbnNmbihQR19GVU5DVElP Tl9BUkdTKQogCQkJICAgKmpidmFsOwogCUpzb25iVmFsdWUJdjsKIAlKc29uYkl0ZXJhdG9y VG9rZW4gdHlwZTsKKwlib29sCQlza2lwOwogCiAJaWYgKCFBZ2dDaGVja0NhbGxDb250ZXh0 KGZjaW5mbywgJmFnZ2NvbnRleHQpKQogCXsKQEAgLTE2OTIsNiArMTc3Myw5IEBAIGpzb25i X29iamVjdF9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQogCQlzdGF0ZS0+cmVzID0g cmVzdWx0OwogCQlyZXN1bHQtPnJlcyA9IHB1c2hKc29uYlZhbHVlKCZyZXN1bHQtPnBhcnNl U3RhdGUsCiAJCQkJCQkJCQkgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCXJlc3VsdC0+ cGFyc2VTdGF0ZS0+dW5pcXVlX2tleXMgPSB1bmlxdWVfa2V5czsKKwkJcmVzdWx0LT5wYXJz ZVN0YXRlLT5za2lwX251bGxzID0gYWJzZW50X29uX251bGw7CisKIAkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWFyZ190eXBlID0gZ2V0X2ZuX2V4cHJfYXJn dHlwZShmY2luZm8tPmZsaW5mbywgMSk7CkBAIC0xNzI3LDYgKzE4MTEsMTUgQEAganNvbmJf b2JqZWN0X2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygiZmllbGQgbmFt ZSBtdXN0IG5vdCBiZSBudWxsIikpKTsKIAorCS8qCisJICogU2tpcCBudWxsIHZhbHVlcyBp ZiBhYnNlbnRfb25fbnVsbCB1bmxlc3Mga2V5IHVuaXF1ZW5lc3MgY2hlY2sgaXMKKwkgKiBu ZWVkZWQgKGJlY2F1c2Ugd2UgbXVzdCBzYXZlIGtleXMgaW4gdGhpcyBjYXNlKS4KKwkgKi8K Kwlza2lwID0gYWJzZW50X29uX251bGwgJiYgUEdfQVJHSVNOVUxMKDIpOworCisJaWYgKHNr aXAgJiYgIXVuaXF1ZV9rZXlzKQorCQlQR19SRVRVUk5fUE9JTlRFUihzdGF0ZSk7CisKIAl2 YWwgPSBQR19HRVRBUkdfREFUVU0oMSk7CiAKIAltZW1zZXQoJmVsZW0sIDAsIHNpemVvZihK c29uYkluU3RhdGUpKTsKQEAgLTE3ODIsNiArMTg3NSwxNiBAQCBqc29uYl9vYmplY3RfYWdn X3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQl9CiAJCQkJcmVzdWx0LT5yZXMgPSBw dXNoSnNvbmJWYWx1ZSgmcmVzdWx0LT5wYXJzZVN0YXRlLAogCQkJCQkJCQkJCQkgV0pCX0tF WSwgJnYpOworCisJCQkJaWYgKHNraXApCisJCQkJeworCQkJCQl2LnR5cGUgPSBqYnZOdWxs OworCQkJCQlyZXN1bHQtPnJlcyA9IHB1c2hKc29uYlZhbHVlKCZyZXN1bHQtPnBhcnNlU3Rh dGUsCisJCQkJCQkJCQkJCQkgV0pCX1ZBTFVFLCAmdik7CisJCQkJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJCQkJUEdfUkVUVVJOX1BPSU5URVIoc3RhdGUpOwor CQkJCX0KKwogCQkJCWJyZWFrOwogCQkJY2FzZSBXSkJfRU5EX0FSUkFZOgogCQkJCWJyZWFr OwpAQCAtMTg1NCw2ICsxOTU3LDQzIEBAIGpzb25iX29iamVjdF9hZ2dfdHJhbnNmbihQR19G VU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9QT0lOVEVSKHN0YXRlKTsKIH0KIAorLyoKKyAq IGpzb25iX29iamVjdF9hZ2cgYWdncmVnYXRlIGZ1bmN0aW9uCisgKi8KK0RhdHVtCitqc29u Yl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlyZXR1cm4ganNv bmJfb2JqZWN0X2FnZ190cmFuc2ZuX3dvcmtlcihmY2luZm8sIGZhbHNlLCBmYWxzZSk7Cit9 CisKKworLyoKKyAqIGpzb25iX29iamVjdF9hZ2dfc3RyaWN0IGFnZ3JlZ2F0ZSBmdW5jdGlv bgorICovCitEYXR1bQoranNvbmJfb2JqZWN0X2FnZ19zdHJpY3RfdHJhbnNmbihQR19GVU5D VElPTl9BUkdTKQoreworCXJldHVybiBqc29uYl9vYmplY3RfYWdnX3RyYW5zZm5fd29ya2Vy KGZjaW5mbywgdHJ1ZSwgZmFsc2UpOworfQorCisvKgorICoganNvbmJfb2JqZWN0X2FnZ191 bmlxdWUgYWdncmVnYXRlIGZ1bmN0aW9uCisgKi8KK0RhdHVtCitqc29uYl9vYmplY3RfYWdn X3VuaXF1ZV90cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIGpzb25iX29i amVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoZmNpbmZvLCBmYWxzZSwgdHJ1ZSk7Cit9CisKKy8q CisgKiBqc29uYl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3QgYWdncmVnYXRlIGZ1bmN0aW9u CisgKi8KK0RhdHVtCitqc29uYl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3RfdHJhbnNmbihQ R19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBqc29uYl9vYmplY3RfYWdnX3RyYW5zZm5f d29ya2VyKGZjaW5mbywgdHJ1ZSwgdHJ1ZSk7Cit9CisKIERhdHVtCiBqc29uYl9vYmplY3Rf YWdnX2ZpbmFsZm4oUEdfRlVOQ1RJT05fQVJHUykKIHsKQEAgLTIwODUsMyArMjIyNSw2NSBA QCBqc29uYl9mbG9hdDgoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9EQVRVTShy ZXRWYWx1ZSk7CiB9CisKKy8qCisgKiBDb25zdHJ1Y3QgYW4gZW1wdHkgYXJyYXkganNvbmIu CisgKi8KK0pzb25iICoKK0pzb25iTWFrZUVtcHR5QXJyYXkodm9pZCkKK3sKKwlKc29uYlZh bHVlIGpidjsKKworCWpidi50eXBlID0gamJ2QXJyYXk7CisJamJ2LnZhbC5hcnJheS5lbGVt cyA9IE5VTEw7CisJamJ2LnZhbC5hcnJheS5uRWxlbXMgPSAwOworCWpidi52YWwuYXJyYXku cmF3U2NhbGFyID0gZmFsc2U7CisKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIoJmpidik7 Cit9CisKKy8qCisgKiBDb25zdHJ1Y3QgYW4gZW1wdHkgb2JqZWN0IGpzb25iLgorICovCitK c29uYiAqCitKc29uYk1ha2VFbXB0eU9iamVjdCh2b2lkKQoreworCUpzb25iVmFsdWUgamJ2 OworCisJamJ2LnR5cGUgPSBqYnZPYmplY3Q7CisJamJ2LnZhbC5vYmplY3QucGFpcnMgPSBO VUxMOworCWpidi52YWwub2JqZWN0Lm5QYWlycyA9IDA7CisKKwlyZXR1cm4gSnNvbmJWYWx1 ZVRvSnNvbmIoJmpidik7Cit9CisKKy8qCisgKiBDb252ZXJ0IGpzb25iIHRvIGEgQy1zdHJp bmcgc3RyaXBwaW5nIHF1b3RlcyBmcm9tIHNjYWxhciBzdHJpbmdzLgorICovCitjaGFyICoK K0pzb25iVW5xdW90ZShKc29uYiAqamIpCit7CisJaWYgKEpCX1JPT1RfSVNfU0NBTEFSKGpi KSkKKwl7CisJCUpzb25iVmFsdWUJdjsKKworCQlKc29uYkV4dHJhY3RTY2FsYXIoJmpiLT5y b290LCAmdik7CisKKwkJaWYgKHYudHlwZSA9PSBqYnZTdHJpbmcpCisJCQlyZXR1cm4gcG5z dHJkdXAodi52YWwuc3RyaW5nLnZhbCwgdi52YWwuc3RyaW5nLmxlbik7CisJCWVsc2UgaWYg KHYudHlwZSA9PSBqYnZCb29sKQorCQkJcmV0dXJuIHBzdHJkdXAodi52YWwuYm9vbGVhbiA/ ICJ0cnVlIiA6ICJmYWxzZSIpOworCQllbHNlIGlmICh2LnR5cGUgPT0gamJ2TnVtZXJpYykK KwkJCXJldHVybiBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmlj X291dCwKKwkJCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bSh2LnZhbC5udW1lcmljKSkpOwor CQllbHNlIGlmICh2LnR5cGUgPT0gamJ2TnVsbCkKKwkJCXJldHVybiBwc3RyZHVwKCJudWxs Iik7CisJCWVsc2UKKwkJeworCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29uYiB2 YWx1ZSB0eXBlICVkIiwgdi50eXBlKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCWVs c2UKKwkJcmV0dXJuIEpzb25iVG9DU3RyaW5nKE5VTEwsICZqYi0+cm9vdCwgVkFSU0laRShq YikpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX3V0aWwu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl91dGlsLmMKaW5kZXggMjkxZmI3MjJl Mi4uNWU5ZGJkY2M0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25i X3V0aWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jCkBAIC02 Myw3ICs2Myw4IEBAIHN0YXRpYyBpbnQJbGVuZ3RoQ29tcGFyZUpzb25iU3RyaW5nVmFsdWUo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CiBzdGF0aWMgaW50CWxlbmd0aENvbXBh cmVKc29uYlN0cmluZyhjb25zdCBjaGFyICp2YWwxLCBpbnQgbGVuMSwKIAkJCQkJCQkJCSBj b25zdCBjaGFyICp2YWwyLCBpbnQgbGVuMik7CiBzdGF0aWMgaW50CWxlbmd0aENvbXBhcmVK c29uYlBhaXIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKTsKLXN0 YXRpYyB2b2lkIHVuaXF1ZWlmeUpzb25iT2JqZWN0KEpzb25iVmFsdWUgKm9iamVjdCk7Citz dGF0aWMgdm9pZCB1bmlxdWVpZnlKc29uYk9iamVjdChKc29uYlZhbHVlICpvYmplY3QsIGJv b2wgdW5pcXVlX2tleXMsCisJCQkJCQkJCSBib29sIHNraXBfbnVsbHMpOwogc3RhdGljIEpz b25iVmFsdWUgKnB1c2hKc29uYlZhbHVlU2NhbGFyKEpzb25iUGFyc2VTdGF0ZSAqKnBzdGF0 ZSwKIAkJCQkJCQkJCQlKc29uYkl0ZXJhdG9yVG9rZW4gc2VxLAogCQkJCQkJCQkJCUpzb25i VmFsdWUgKnNjYWxhclZhbCk7CkBAIC02ODgsNyArNjg5LDkgQEAgcHVzaEpzb25iVmFsdWVT Y2FsYXIoSnNvbmJQYXJzZVN0YXRlICoqcHN0YXRlLCBKc29uYkl0ZXJhdG9yVG9rZW4gc2Vx LAogCQkJYXBwZW5kRWxlbWVudCgqcHN0YXRlLCBzY2FsYXJWYWwpOwogCQkJYnJlYWs7CiAJ CWNhc2UgV0pCX0VORF9PQkpFQ1Q6Ci0JCQl1bmlxdWVpZnlKc29uYk9iamVjdCgmKCpwc3Rh dGUpLT5jb250VmFsKTsKKwkJCXVuaXF1ZWlmeUpzb25iT2JqZWN0KCYoKnBzdGF0ZSktPmNv bnRWYWwsCisJCQkJCQkJCSAoKnBzdGF0ZSktPnVuaXF1ZV9rZXlzLAorCQkJCQkJCQkgKCpw c3RhdGUpLT5za2lwX251bGxzKTsKIAkJCS8qIGZhbGwgdGhyb3VnaCEgKi8KIAkJY2FzZSBX SkJfRU5EX0FSUkFZOgogCQkJLyogU3RlcHMgaGVyZSBjb21tb24gdG8gV0pCX0VORF9PQkpF Q1QgY2FzZSAqLwpAQCAtNzMxLDYgKzczNCw5IEBAIHB1c2hTdGF0ZShKc29uYlBhcnNlU3Rh dGUgKipwc3RhdGUpCiAJSnNvbmJQYXJzZVN0YXRlICpucyA9IHBhbGxvYyhzaXplb2YoSnNv bmJQYXJzZVN0YXRlKSk7CiAKIAlucy0+bmV4dCA9ICpwc3RhdGU7CisJbnMtPnVuaXF1ZV9r ZXlzID0gZmFsc2U7CisJbnMtPnNraXBfbnVsbHMgPSBmYWxzZTsKKwogCXJldHVybiBuczsK IH0KIApAQCAtMTkzNSw3ICsxOTQxLDcgQEAgbGVuZ3RoQ29tcGFyZUpzb25iUGFpcihjb25z dCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICpiaW5lcXVhbCkKICAqIFNvcnQgYW5k IHVuaXF1ZS1pZnkgcGFpcnMgaW4gSnNvbmJWYWx1ZSBvYmplY3QKICAqLwogc3RhdGljIHZv aWQKLXVuaXF1ZWlmeUpzb25iT2JqZWN0KEpzb25iVmFsdWUgKm9iamVjdCkKK3VuaXF1ZWlm eUpzb25iT2JqZWN0KEpzb25iVmFsdWUgKm9iamVjdCwgYm9vbCB1bmlxdWVfa2V5cywgYm9v bCBza2lwX251bGxzKQogewogCWJvb2wJCWhhc05vblVuaXEgPSBmYWxzZTsKIApAQCAtMTk0 NSwxNSArMTk1MSwyMSBAQCB1bmlxdWVpZnlKc29uYk9iamVjdChKc29uYlZhbHVlICpvYmpl Y3QpCiAJCXFzb3J0X2FyZyhvYmplY3QtPnZhbC5vYmplY3QucGFpcnMsIG9iamVjdC0+dmFs Lm9iamVjdC5uUGFpcnMsIHNpemVvZihKc29uYlBhaXIpLAogCQkJCSAgbGVuZ3RoQ29tcGFy ZUpzb25iUGFpciwgJmhhc05vblVuaXEpOwogCi0JaWYgKGhhc05vblVuaXEpCisJaWYgKGhh c05vblVuaXEgJiYgdW5pcXVlX2tleXMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfSlNPTl9PQkpFQ1RfS0VZX1ZBTFVFKSwKKwkJCQkgZXJy bXNnKCJkdXBsaWNhdGUgSlNPTiBvYmplY3Qga2V5IHZhbHVlIikpKTsKKworCWlmIChoYXNO b25VbmlxIHx8IHNraXBfbnVsbHMpCiAJewogCQlKc29uYlBhaXIgICpwdHIgPSBvYmplY3Qt PnZhbC5vYmplY3QucGFpcnMgKyAxLAogCQkJCSAgICpyZXMgPSBvYmplY3QtPnZhbC5vYmpl Y3QucGFpcnM7CiAKIAkJd2hpbGUgKHB0ciAtIG9iamVjdC0+dmFsLm9iamVjdC5wYWlycyA8 IG9iamVjdC0+dmFsLm9iamVjdC5uUGFpcnMpCiAJCXsKLQkJCS8qIEF2b2lkIGNvcHlpbmcg b3ZlciBkdXBsaWNhdGUgKi8KLQkJCWlmIChsZW5ndGhDb21wYXJlSnNvbmJTdHJpbmdWYWx1 ZShwdHIsIHJlcykgIT0gMCkKKwkJCS8qIEF2b2lkIGNvcHlpbmcgb3ZlciBkdXBsaWNhdGUg b3IgbnVsbCAqLworCQkJaWYgKGxlbmd0aENvbXBhcmVKc29uYlN0cmluZ1ZhbHVlKHB0ciwg cmVzKSAhPSAwICYmCisJCQkJKCFza2lwX251bGxzIHx8IHB0ci0+dmFsdWUudHlwZSAhPSBq YnZOdWxsKSkKIAkJCXsKIAkJCQlyZXMrKzsKIAkJCQlpZiAocHRyICE9IHJlcykKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uZnVuY3MuYwppbmRleCAwMjczZjg4M2Q0Li42OWI0OTc3Mzk5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC0yNzcxLDExICsyNzcxLDExIEBA IHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCAv KiBjb250ZXh0ICovCiAKIAljaGVja19zdGFja19kZXB0aCgpOwogCi0JaWYgKGpidi0+dHlw ZSAhPSBqYnZCaW5hcnkgfHwgIUpzb25Db250YWluZXJJc0FycmF5KGpiYykpCisJaWYgKGpi di0+dHlwZSAhPSBqYnZCaW5hcnkgfHwKKwkJIUpzb25Db250YWluZXJJc0FycmF5KGpiYykg fHwKKwkJSnNvbkNvbnRhaW5lcklzU2NhbGFyKGpiYykpCiAJCXBvcHVsYXRlX2FycmF5X3Jl cG9ydF9leHBlY3RlZF9hcnJheShjdHgsIG5kaW0gLSAxKTsKIAotCUFzc2VydCghSnNvbkNv bnRhaW5lcklzU2NhbGFyKGpiYykpOwotCiAJaXQgPSBKc29uYkl0ZXJhdG9ySW5pdChqYmMp OwogCiAJdG9rID0gSnNvbmJJdGVyYXRvck5leHQoJml0LCAmdmFsLCB0cnVlKTsKQEAgLTMy NDcsNiArMzI0Nyw1MCBAQCBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoQ29sdW1uSU9EYXRhICpj b2wsCiAJfQogfQogCisvKiByZWN1cnNpdmVseSBwb3B1bGF0ZSBzcGVjaWZpZWQgdHlwZSBm cm9tIGEganNvbi9qc29uYiB2YWx1ZSAqLworRGF0dW0KK2pzb25fcG9wdWxhdGVfdHlwZShE YXR1bSBqc29uX3ZhbCwgT2lkIGpzb25fdHlwZSwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2Qs CisJCQkJICAgdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1jeHQsIGJvb2wgKmlzbnVs bCkKK3sKKwlKc1ZhbHVlCQlqc3YgPSB7IDAgfTsKKwlKc29uYlZhbHVlCWpidjsKKworCWpz di5pc19qc29uID0ganNvbl90eXBlID09IEpTT05PSUQ7CisKKwlpZiAoKmlzbnVsbCkKKwl7 CisJCWlmIChqc3YuaXNfanNvbikKKwkJCWpzdi52YWwuanNvbi5zdHIgPSBOVUxMOworCQll bHNlCisJCQlqc3YudmFsLmpzb25iID0gTlVMTDsKKwl9CisJZWxzZSBpZiAoanN2LmlzX2pz b24pCisJeworCQl0ZXh0CSAgICpqc29uID0gRGF0dW1HZXRUZXh0UFAoanNvbl92YWwpOwor CisJCWpzdi52YWwuanNvbi5zdHIgPSBWQVJEQVRBX0FOWShqc29uKTsKKwkJanN2LnZhbC5q c29uLmxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKGpzb24pOworCQlqc3YudmFsLmpzb24udHlw ZSA9IEpTT05fVE9LRU5fSU5WQUxJRDsgLyogbm90IHVzZWQgaW4gcG9wdWxhdGVfY29tcG9z aXRlKCkgKi8KKwl9CisJZWxzZQorCXsKKwkJSnNvbmIJICAgKmpzb25iID0gRGF0dW1HZXRK c29uYlAoanNvbl92YWwpOworCisJCWpzdi52YWwuanNvbmIgPSAmamJ2OworCisJCS8qIGZp bGwgYmluYXJ5IGpzb25iIHZhbHVlIHBvaW50aW5nIHRvIGpiICovCisJCWpidi50eXBlID0g amJ2QmluYXJ5OworCQlqYnYudmFsLmJpbmFyeS5kYXRhID0gJmpzb25iLT5yb290OworCQlq YnYudmFsLmJpbmFyeS5sZW4gPSBWQVJTSVpFKGpzb25iKSAtIFZBUkhEUlNaOworCX0KKwor CWlmICghKmNhY2hlKQorCQkqY2FjaGUgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKG1jeHQs IHNpemVvZihDb2x1bW5JT0RhdGEpKTsKKworCXJldHVybiBwb3B1bGF0ZV9yZWNvcmRfZmll bGQoKmNhY2hlICwgdHlwaWQsIHR5cG1vZCwgTlVMTCwgbWN4dCwKKwkJCQkJCQkJIFBvaW50 ZXJHZXREYXR1bShOVUxMKSwgJmpzdiwgaXNudWxsKTsKK30KKwogc3RhdGljIFJlY29yZElP RGF0YSAqCiBhbGxvY2F0ZV9yZWNvcmRfaW5mbyhNZW1vcnlDb250ZXh0IG1jeHQsIGludCBu Y29sdW1ucykKIHsKQEAgLTU2MzgsMyArNTY4MiwyMyBAQCB0cmFuc2Zvcm1fc3RyaW5nX3Zh bHVlc19zY2FsYXIodm9pZCAqc3RhdGUsIGNoYXIgKnRva2VuLCBKc29uVG9rZW5UeXBlIHRv a2VudHlwZQogCWVsc2UKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhfc3RhdGUtPnN0cnZh bCwgdG9rZW4pOwogfQorCitKc29uVG9rZW5UeXBlCitqc29uX2dldF9maXJzdF90b2tlbih0 ZXh0ICpqc29uLCBib29sIHRocm93X2Vycm9yKQoreworCUpzb25MZXhDb250ZXh0ICpsZXg7 CisJSnNvblBhcnNlRXJyb3JUeXBlIHJlc3VsdDsKKworCWxleCA9IG1ha2VKc29uTGV4Q29u dGV4dChqc29uLCBmYWxzZSk7CisKKwkvKiBMZXggZXhhY3RseSBvbmUgdG9rZW4gZnJvbSB0 aGUgaW5wdXQgYW5kIGNoZWNrIGl0cyB0eXBlLiAqLworCXJlc3VsdCA9IGpzb25fbGV4KGxl eCk7CisKKwlpZiAocmVzdWx0ID09IEpTT05fU1VDQ0VTUykKKwkJcmV0dXJuIGxleC0+dG9r ZW5fdHlwZTsKKworCWlmICh0aHJvd19lcnJvcikKKwkJanNvbl9lcmVwb3J0X2Vycm9yKHJl c3VsdCwgbGV4KTsKKworCXJldHVybiBKU09OX1RPS0VOX0lOVkFMSUQ7CS8qIGludmFsaWQg anNvbiAqLworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRo LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwppbmRleCA5YmU0ZTMwNWZm Li5jYTFjZmUzZDM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBh dGguYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwpAQCAtNjcsNyAr NjcsOSBAQAogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEv cHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0 aWxzL2Zvcm1hdHRpbmcuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAi dXRpbHMvanNvbnBhdGguaCIKIApAQCAtMTA3MywzICsxMDc1LDI1OCBAQCBqc3BHZXRBcnJh eVN1YnNjcmlwdChKc29uUGF0aEl0ZW0gKnYsIEpzb25QYXRoSXRlbSAqZnJvbSwgSnNvblBh dGhJdGVtICp0bywKIAogCXJldHVybiB0cnVlOwogfQorCisvKiBTUUwvSlNPTiBkYXRhdHlw ZSBzdGF0dXM6ICovCit0eXBlZGVmIGVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cworewor CWpwZHNOb25EYXRlVGltZSwJCQkvKiBudWxsLCBib29sLCBudW1lcmljLCBzdHJpbmcsIGFy cmF5LCBvYmplY3QgKi8KKwlqcGRzVW5rbm93bkRhdGVUaW1lLAkJLyogdW5rbm93biBkYXRl dGltZSB0eXBlICovCisJanBkc0RhdGVUaW1lWm9uZWQsCQkJLyogdGltZXR6LCB0aW1lc3Rh bXB0eiAqLworCWpwZHNEYXRlVGltZU5vblpvbmVkCQkvKiB0aW1lLCB0aW1lc3RhbXAsIGRh dGUgKi8KK30gSnNvblBhdGhEYXRhdHlwZVN0YXR1czsKKworLyogQ29udGV4dCBmb3IganNw SXNNdXRhYmxlV2Fsa2VyKCkgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25QYXRoTXV0YWJsZUNv bnRleHQKK3sKKwlMaXN0CSAgICp2YXJuYW1lczsJCS8qIGxpc3Qgb2YgdmFyaWFibGUgbmFt ZXMgKi8KKwlMaXN0CSAgICp2YXJleHByczsJCS8qIGxpc3Qgb2YgdmFyaWFibGUgZXhwcmVz c2lvbnMgKi8KKwlKc29uUGF0aERhdGF0eXBlU3RhdHVzIGN1cnJlbnQ7CS8qIHN0YXR1cyBv ZiBAIGl0ZW0gKi8KKwlib29sCQlsYXg7CQkJLyoganNvbnBhdGggaXMgbGF4IG9yIHN0cmlj dCAqLworCWJvb2wJCW11dGFibGU7CQkvKiByZXN1bHRpbmcgbXV0YWJpbGl0eSBzdGF0dXMg Ki8KK30gSnNvblBhdGhNdXRhYmxlQ29udGV4dDsKKworLyoKKyAqIFJlY3Vyc2l2ZSB3YWxr ZXIgZm9yIGpzcElzTXV0YWJsZSgpCisgKi8KK3N0YXRpYyBKc29uUGF0aERhdGF0eXBlU3Rh dHVzCitqc3BJc011dGFibGVXYWxrZXIoSnNvblBhdGhJdGVtICpqcGksIEpzb25QYXRoTXV0 YWJsZUNvbnRleHQgKmN4dCkKK3sKKwlKc29uUGF0aEl0ZW0gbmV4dDsKKwlKc29uUGF0aERh dGF0eXBlU3RhdHVzIHN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKworCXdoaWxlICghY3h0 LT5tdXRhYmxlKQorCXsKKwkJSnNvblBhdGhJdGVtIGFyZzsKKwkJSnNvblBhdGhEYXRhdHlw ZVN0YXR1cyBsZWZ0U3RhdHVzOworCQlKc29uUGF0aERhdGF0eXBlU3RhdHVzIHJpZ2h0U3Rh dHVzOworCisJCXN3aXRjaCAoanBpLT50eXBlKQorCQl7CisJCQljYXNlIGpwaVJvb3Q6CisJ CQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWJyZWFrOworCisJ CQljYXNlIGpwaUN1cnJlbnQ6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRp bWUpOworCQkJCXN0YXR1cyA9IGN4dC0+Y3VycmVudDsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBqcGlGaWx0ZXI6CisJCQkJeworCQkJCQlKc29uUGF0aERhdGF0eXBlU3RhdHVzIHByZXZT dGF0dXMgPSBjeHQtPmN1cnJlbnQ7CisKKwkJCQkJY3h0LT5jdXJyZW50ID0gc3RhdHVzOwor CQkJCQlqc3BHZXRBcmcoanBpLCAmYXJnKTsKKwkJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZh cmcsIGN4dCk7CisKKwkJCQkJY3h0LT5jdXJyZW50ID0gcHJldlN0YXR1czsKKwkJCQkJYnJl YWs7CisJCQkJfQorCisJCQljYXNlIGpwaVZhcmlhYmxlOgorCQkJCXsKKwkJCQkJaW50MzIJ CWxlbjsKKwkJCQkJY29uc3QgY2hhciAqbmFtZSA9IGpzcEdldFN0cmluZyhqcGksICZsZW4p OworCQkJCQlMaXN0Q2VsbCAgICpsYzE7CisJCQkJCUxpc3RDZWxsICAgKmxjMjsKKworCQkJ CQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisKKwkJCQkJZm9yYm90aChs YzEsIGN4dC0+dmFybmFtZXMsIGxjMiwgY3h0LT52YXJleHBycykKKwkJCQkJeworCQkJCQkJ U3RyaW5nCSAgICp2YXJuYW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBsYzEpOworCQkJCQkJ Tm9kZQkgICAqdmFyZXhwciA9IGxmaXJzdChsYzIpOworCisJCQkJCQlpZiAoc3RybmNtcCh2 YXJuYW1lLT5zdmFsLCBuYW1lLCBsZW4pKQorCQkJCQkJCWNvbnRpbnVlOworCisJCQkJCQlz d2l0Y2ggKGV4cHJUeXBlKHZhcmV4cHIpKQorCQkJCQkJeworCQkJCQkJCWNhc2UgREFURU9J RDoKKwkJCQkJCQljYXNlIFRJTUVPSUQ6CisJCQkJCQkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJ CQkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZU5vblpvbmVkOworCQkJCQkJCQlicmVhazsK KworCQkJCQkJCWNhc2UgVElNRVRaT0lEOgorCQkJCQkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6 CisJCQkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZVpvbmVkOworCQkJCQkJCQlicmVhazsK KworCQkJCQkJCWRlZmF1bHQ6CisJCQkJCQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsK KwkJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJ CWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBqcGlFcXVhbDoKKwkJCWNhc2UganBpTm90RXF1 YWw6CisJCQljYXNlIGpwaUxlc3M6CisJCQljYXNlIGpwaUdyZWF0ZXI6CisJCQljYXNlIGpw aUxlc3NPckVxdWFsOgorCQkJY2FzZSBqcGlHcmVhdGVyT3JFcXVhbDoKKwkJCQlBc3NlcnQo c3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJanNwR2V0TGVmdEFyZyhqcGksICZh cmcpOworCQkJCWxlZnRTdGF0dXMgPSBqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsK KworCQkJCWpzcEdldFJpZ2h0QXJnKGpwaSwgJmFyZyk7CisJCQkJcmlnaHRTdGF0dXMgPSBq c3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKworCQkJCS8qCisJCQkJICogQ29tcGFy aXNvbiBvZiBkYXRldGltZSB0eXBlIHdpdGggZGlmZmVyZW50IHRpbWV6b25lIHN0YXR1cwor CQkJCSAqIGlzIG11dGFibGUuCisJCQkJICovCisJCQkJaWYgKGxlZnRTdGF0dXMgIT0ganBk c05vbkRhdGVUaW1lICYmCisJCQkJCXJpZ2h0U3RhdHVzICE9IGpwZHNOb25EYXRlVGltZSAm JgorCQkJCQkobGVmdFN0YXR1cyA9PSBqcGRzVW5rbm93bkRhdGVUaW1lIHx8CisJCQkJCSBy aWdodFN0YXR1cyA9PSBqcGRzVW5rbm93bkRhdGVUaW1lIHx8CisJCQkJCSBsZWZ0U3RhdHVz ICE9IHJpZ2h0U3RhdHVzKSkKKwkJCQkJY3h0LT5tdXRhYmxlID0gdHJ1ZTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBqcGlOb3Q6CisJCQljYXNlIGpwaUlzVW5rbm93bjoKKwkJCWNhc2Ug anBpRXhpc3RzOgorCQkJY2FzZSBqcGlQbHVzOgorCQkJY2FzZSBqcGlNaW51czoKKwkJCQlB c3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJanNwR2V0QXJnKGpwaSwg JmFyZyk7CisJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisJCQkJYnJlYWs7 CisKKwkJCWNhc2UganBpQW5kOgorCQkJY2FzZSBqcGlPcjoKKwkJCWNhc2UganBpQWRkOgor CQkJY2FzZSBqcGlTdWI6CisJCQljYXNlIGpwaU11bDoKKwkJCWNhc2UganBpRGl2OgorCQkJ Y2FzZSBqcGlNb2Q6CisJCQljYXNlIGpwaVN0YXJ0c1dpdGg6CisJCQkJQXNzZXJ0KHN0YXR1 cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEdldExlZnRBcmcoanBpLCAmYXJnKTsK KwkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKwkJCQlqc3BHZXRSaWdodEFy ZyhqcGksICZhcmcpOworCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJ CWJyZWFrOworCisJCQljYXNlIGpwaUluZGV4QXJyYXk6CisJCQkJZm9yIChpbnQgaSA9IDA7 IGkgPCBqcGktPmNvbnRlbnQuYXJyYXkubmVsZW1zOyBpKyspCisJCQkJeworCQkJCQlKc29u UGF0aEl0ZW0gZnJvbTsKKwkJCQkJSnNvblBhdGhJdGVtIHRvOworCisJCQkJCWlmIChqc3BH ZXRBcnJheVN1YnNjcmlwdChqcGksICZmcm9tLCAmdG8sIGkpKQorCQkJCQkJanNwSXNNdXRh YmxlV2Fsa2VyKCZ0bywgY3h0KTsKKworCQkJCQlqc3BJc011dGFibGVXYWxrZXIoJmZyb20s IGN4dCk7CisJCQkJfQorCQkJCS8qIEZBTExUSFJPVUdIICovCisKKwkJCWNhc2UganBpQW55 QXJyYXk6CisJCQkJaWYgKCFjeHQtPmxheCkKKwkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVU aW1lOworCQkJCWJyZWFrOworCisJCQljYXNlIGpwaUFueToKKwkJCQlpZiAoanBpLT5jb250 ZW50LmFueWJvdW5kcy5maXJzdCA+IDApCisJCQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGlt ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlEYXRldGltZToKKwkJCQlpZiAoanBpLT5j b250ZW50LmFyZykKKwkJCQl7CisJCQkJCWNoYXIJICAgKnRlbXBsYXRlOworCQkJCQlpbnQJ CQlmbGFnczsKKworCQkJCQlqc3BHZXRBcmcoanBpLCAmYXJnKTsKKwkJCQkJaWYgKGFyZy50 eXBlICE9IGpwaVN0cmluZykKKwkJCQkJeworCQkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVU aW1lOworCQkJCQkJYnJlYWs7CS8qIHRoZXJlIHdpbGwgYmUgcnVudGltZSBlcnJvciAqLwor CQkJCQl9CisKKwkJCQkJdGVtcGxhdGUgPSBqc3BHZXRTdHJpbmcoJmFyZywgTlVMTCk7CisJ CQkJCWZsYWdzID0gZGF0ZXRpbWVfZm9ybWF0X2ZsYWdzKHRlbXBsYXRlLCBOVUxMKTsKKwkJ CQkJaWYgKGZsYWdzICYgRENIX1pPTkVEKQorCQkJCQkJc3RhdHVzID0ganBkc0RhdGVUaW1l Wm9uZWQ7CisJCQkJCWVsc2UKKwkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZU5vblpvbmVk OworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlzdGF0dXMgPSBqcGRzVW5rbm93bkRh dGVUaW1lOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlMaWtlUmVnZXg6CisJ CQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEluaXRCeUJ1 ZmZlcigmYXJnLCBqcGktPmJhc2UsIGpwaS0+Y29udGVudC5saWtlX3JlZ2V4LmV4cHIpOwor CQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJCWJyZWFrOworCisJCQkv KiBsaXRlcmFscyAqLworCQkJY2FzZSBqcGlOdWxsOgorCQkJY2FzZSBqcGlTdHJpbmc6CisJ CQljYXNlIGpwaU51bWVyaWM6CisJCQljYXNlIGpwaUJvb2w6CisJCQkvKiBhY2Nlc3NvcnMg Ki8KKwkJCWNhc2UganBpS2V5OgorCQkJY2FzZSBqcGlBbnlLZXk6CisJCQkvKiBzcGVjaWFs IGl0ZW1zICovCisJCQljYXNlIGpwaVN1YnNjcmlwdDoKKwkJCWNhc2UganBpTGFzdDoKKwkJ CS8qIGl0ZW0gbWV0aG9kcyAqLworCQkJY2FzZSBqcGlUeXBlOgorCQkJY2FzZSBqcGlTaXpl OgorCQkJY2FzZSBqcGlBYnM6CisJCQljYXNlIGpwaUZsb29yOgorCQkJY2FzZSBqcGlDZWls aW5nOgorCQkJY2FzZSBqcGlEb3VibGU6CisJCQljYXNlIGpwaUtleVZhbHVlOgorCQkJCXN0 YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQlicmVhazsKKwkJfQorCisJCWlmICghanNw R2V0TmV4dChqcGksICZuZXh0KSkKKwkJCWJyZWFrOworCisJCWpwaSA9ICZuZXh0OworCX0K KworCXJldHVybiBzdGF0dXM7Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIGpzb25wYXRo IGV4cHJlc3Npb24gaXMgaW1tdXRhYmxlIG9yIG5vdC4KKyAqLworYm9vbAoranNwSXNNdXRh YmxlKEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhwcnMpCit7 CisJSnNvblBhdGhNdXRhYmxlQ29udGV4dCBjeHQ7CisJSnNvblBhdGhJdGVtIGpwaTsKKwor CWN4dC52YXJuYW1lcyA9IHZhcm5hbWVzOworCWN4dC52YXJleHBycyA9IHZhcmV4cHJzOwor CWN4dC5jdXJyZW50ID0ganBkc05vbkRhdGVUaW1lOworCWN4dC5sYXggPSAocGF0aC0+aGVh ZGVyICYgSlNPTlBBVEhfTEFYKSAhPSAwOworCWN4dC5tdXRhYmxlID0gZmFsc2U7CisKKwlq c3BJbml0KCZqcGksIHBhdGgpOworCWpzcElzTXV0YWJsZVdhbGtlcigmanBpLCAmY3h0KTsK KworCXJldHVybiBjeHQubXV0YWJsZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBh dGhfZXhlYy5jCmluZGV4IGVmZjM3MzRiNmEuLjc4MTFmYTMxZTAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpAQCAtODYsMTIgKzg2LDE2IEBAIHR5cGVkZWYg c3RydWN0IEpzb25CYXNlT2JqZWN0SW5mbwogCWludAkJCWlkOwogfSBKc29uQmFzZU9iamVj dEluZm87CiAKK3R5cGVkZWYgaW50ICgqSnNvblBhdGhWYXJDYWxsYmFjaykgKHZvaWQgKnZh cnMsIGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJCQkJSnNvbmJWYWx1 ZSAqdmFsLCBKc29uYlZhbHVlICpiYXNlT2JqZWN0KTsKKwogLyoKICAqIENvbnRleHQgb2Yg anNvbnBhdGggZXhlY3V0aW9uLgogICovCiB0eXBlZGVmIHN0cnVjdCBKc29uUGF0aEV4ZWND b250ZXh0CiB7Ci0JSnNvbmIJICAgKnZhcnM7CQkJLyogdmFyaWFibGVzIHRvIHN1YnN0aXR1 dGUgaW50byBqc29ucGF0aCAqLworCXZvaWQJICAgKnZhcnM7CQkJLyogdmFyaWFibGVzIHRv IHN1YnN0aXR1dGUgaW50byBqc29ucGF0aCAqLworCUpzb25QYXRoVmFyQ2FsbGJhY2sgZ2V0 VmFyOwogCUpzb25iVmFsdWUgKnJvb3Q7CQkJLyogZm9yICQgZXZhbHVhdGlvbiAqLwogCUpz b25iVmFsdWUgKmN1cnJlbnQ7CQkvKiBmb3IgQCBldmFsdWF0aW9uICovCiAJSnNvbkJhc2VP YmplY3RJbmZvIGJhc2VPYmplY3Q7CS8qICJiYXNlIG9iamVjdCIgZm9yIC5rZXl2YWx1ZSgp CkBAIC0xNzMsNyArMTc3LDggQEAgdHlwZWRlZiBKc29uUGF0aEJvb2wgKCpKc29uUGF0aFBy ZWRpY2F0ZUNhbGxiYWNrKSAoSnNvblBhdGhJdGVtICpqc3AsCiAJCQkJCQkJCQkJCQkgICB2 b2lkICpwYXJhbSk7CiB0eXBlZGVmIE51bWVyaWMgKCpCaW5hcnlBcml0aG1GdW5jKSAoTnVt ZXJpYyBudW0xLCBOdW1lcmljIG51bTIsIGJvb2wgKmVycm9yKTsKIAotc3RhdGljIEpzb25Q YXRoRXhlY1Jlc3VsdCBleGVjdXRlSnNvblBhdGgoSnNvblBhdGggKnBhdGgsIEpzb25iICp2 YXJzLAorc3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBleGVjdXRlSnNvblBhdGgoSnNvblBh dGggKnBhdGgsIHZvaWQgKnZhcnMsCisJCQkJCQkJCQkJICBKc29uUGF0aFZhckNhbGxiYWNr IGdldFZhciwKIAkJCQkJCQkJCQkgIEpzb25iICpqc29uLCBib29sIHRocm93RXJyb3JzLAog CQkJCQkJCQkJCSAgSnNvblZhbHVlTGlzdCAqcmVzdWx0LCBib29sIHVzZVR6KTsKIHN0YXRp YyBKc29uUGF0aEV4ZWNSZXN1bHQgZXhlY3V0ZUl0ZW0oSnNvblBhdGhFeGVjQ29udGV4dCAq Y3h0LApAQCAtMjI1LDcgKzIzMCwxMCBAQCBzdGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGFw cGVuZEJvb2xSZXN1bHQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LAogc3RhdGljIHZvaWQg Z2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVt ICppdGVtLAogCQkJCQkJCUpzb25iVmFsdWUgKnZhbHVlKTsKIHN0YXRpYyB2b2lkIGdldEpz b25QYXRoVmFyaWFibGUoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LAotCQkJCQkJCQlKc29u UGF0aEl0ZW0gKnZhcmlhYmxlLCBKc29uYiAqdmFycywgSnNvbmJWYWx1ZSAqdmFsdWUpOwor CQkJCQkJCQlKc29uUGF0aEl0ZW0gKnZhcmlhYmxlLCBKc29uYlZhbHVlICp2YWx1ZSk7Citz dGF0aWMgaW50IGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25i LCBjaGFyICp2YXJOYW1lLAorCQkJCQkJCQkJCWludCB2YXJOYW1lTGVuLCBKc29uYlZhbHVl ICp2YWwsCisJCQkJCQkJCQkJSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCk7CiBzdGF0aWMgaW50 CUpzb25iQXJyYXlTaXplKEpzb25iVmFsdWUgKmpiKTsKIHN0YXRpYyBKc29uUGF0aEJvb2wg ZXhlY3V0ZUNvbXBhcmlzb24oSnNvblBhdGhJdGVtICpjbXAsIEpzb25iVmFsdWUgKmx2LAog CQkJCQkJCQkJICBKc29uYlZhbHVlICpydiwgdm9pZCAqcCk7CkBAIC0yODMsNyArMjkxLDgg QEAganNvbmJfcGF0aF9leGlzdHNfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGJvb2wgdHopCiAJCXNpbGVudCA9IFBHX0dFVEFSR19CT09MKDMpOwogCX0KIAotCXJlcyA9 IGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgamIsICFzaWxlbnQsIE5VTEwsIHR6KTsKKwly ZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGdldEpzb25QYXRoVmFyaWFibGVGcm9t SnNvbmIsCisJCQkJCQkgIGpiLCAhc2lsZW50LCBOVUxMLCB0eik7CiAKIAlQR19GUkVFX0lG X0NPUFkoamIsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShqcCwgMSk7CkBAIC0zMzgsNyArMzQ3 LDggQEAganNvbmJfcGF0aF9tYXRjaF9pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bywgYm9vbCB0eikKIAkJc2lsZW50ID0gUEdfR0VUQVJHX0JPT0woMyk7CiAJfQogCi0JKHZv aWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgamIsICFzaWxlbnQsICZmb3VuZCwgdHop OworCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGdldEpzb25QYXRoVmFyaWFi bGVGcm9tSnNvbmIsCisJCQkJCQkgICBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CiAKIAlQ R19GUkVFX0lGX0NPUFkoamIsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShqcCwgMSk7CkBAIC00 MTYsNyArNDI2LDggQEAganNvbmJfcGF0aF9xdWVyeV9pbnRlcm5hbChGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywgYm9vbCB0eikKIAkJdmFycyA9IFBHX0dFVEFSR19KU09OQl9QX0NPUFko Mik7CiAJCXNpbGVudCA9IFBHX0dFVEFSR19CT09MKDMpOwogCi0JCSh2b2lkKSBleGVjdXRl SnNvblBhdGgoanAsIHZhcnMsIGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKKwkJKHZvaWQp IGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29u YiwKKwkJCQkJCQkgICBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CiAKIAkJZnVuY2N0eC0+ dXNlcl9mY3R4ID0gSnNvblZhbHVlTGlzdEdldExpc3QoJmZvdW5kKTsKIApAQCAtNDYzLDcg KzQ3NCw4IEBAIGpzb25iX3BhdGhfcXVlcnlfYXJyYXlfaW50ZXJuYWwoRnVuY3Rpb25DYWxs SW5mbyBmY2luZm8sIGJvb2wgdHopCiAJSnNvbmIJICAgKnZhcnMgPSBQR19HRVRBUkdfSlNP TkJfUCgyKTsKIAlib29sCQlzaWxlbnQgPSBQR19HRVRBUkdfQk9PTCgzKTsKIAotCSh2b2lk KSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsK Kwkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBnZXRKc29uUGF0aFZhcmlhYmxl RnJvbUpzb25iLAorCQkJCQkJICAgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOwogCiAJUEdf UkVUVVJOX0pTT05CX1AoSnNvbmJWYWx1ZVRvSnNvbmIod3JhcEl0ZW1zSW5BcnJheSgmZm91 bmQpKSk7CiB9CkBAIC00OTQsNyArNTA2LDggQEAganNvbmJfcGF0aF9xdWVyeV9maXJzdF9p bnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCB0eikKIAlKc29uYgkgICAq dmFycyA9IFBHX0dFVEFSR19KU09OQl9QKDIpOwogCWJvb2wJCXNpbGVudCA9IFBHX0dFVEFS R19CT09MKDMpOwogCi0JKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgamIsICFz aWxlbnQsICZmb3VuZCwgdHopOworCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMs IGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkgICBqYiwgIXNpbGVudCwg JmZvdW5kLCB0eik7CiAKIAlpZiAoSnNvblZhbHVlTGlzdExlbmd0aCgmZm91bmQpID49IDEp CiAJCVBHX1JFVFVSTl9KU09OQl9QKEpzb25iVmFsdWVUb0pzb25iKEpzb25WYWx1ZUxpc3RI ZWFkKCZmb3VuZCkpKTsKQEAgLTUzNiw4ICs1NDksOSBAQCBqc29uYl9wYXRoX3F1ZXJ5X2Zp cnN0X3R6KFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBJbiBvdGhlciBjYXNlIGl0IHRyaWVzIHRv IGZpbmQgYWxsIHRoZSBzYXRpc2ZpZWQgcmVzdWx0IGl0ZW1zLgogICovCiBzdGF0aWMgSnNv blBhdGhFeGVjUmVzdWx0Ci1leGVjdXRlSnNvblBhdGgoSnNvblBhdGggKnBhdGgsIEpzb25i ICp2YXJzLCBKc29uYiAqanNvbiwgYm9vbCB0aHJvd0Vycm9ycywKLQkJCQlKc29uVmFsdWVM aXN0ICpyZXN1bHQsIGJvb2wgdXNlVHopCitleGVjdXRlSnNvblBhdGgoSnNvblBhdGggKnBh dGgsIHZvaWQgKnZhcnMsIEpzb25QYXRoVmFyQ2FsbGJhY2sgZ2V0VmFyLAorCQkJCUpzb25i ICpqc29uLCBib29sIHRocm93RXJyb3JzLCBKc29uVmFsdWVMaXN0ICpyZXN1bHQsCisJCQkJ Ym9vbCB1c2VUeikKIHsKIAlKc29uUGF0aEV4ZWNDb250ZXh0IGN4dDsKIAlKc29uUGF0aEV4 ZWNSZXN1bHQgcmVzOwpAQCAtNTQ5LDIyICs1NjMsMTYgQEAgZXhlY3V0ZUpzb25QYXRoKEpz b25QYXRoICpwYXRoLCBKc29uYiAqdmFycywgSnNvbmIgKmpzb24sIGJvb2wgdGhyb3dFcnJv cnMsCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmpzb24tPnJvb3QsICZqYnYpKQogCQlK c29uYkluaXRCaW5hcnkoJmpidiwganNvbik7CiAKLQlpZiAodmFycyAmJiAhSnNvbkNvbnRh aW5lcklzT2JqZWN0KCZ2YXJzLT5yb290KSkKLQl7Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1z ZygiXCJ2YXJzXCIgYXJndW1lbnQgaXMgbm90IGFuIG9iamVjdCIpLAotCQkJCSBlcnJkZXRh aWwoIkpzb25wYXRoIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGVuY29kZWQgYXMga2V5LXZhbHVl IHBhaXJzIG9mIFwidmFyc1wiIG9iamVjdC4iKSkpOwotCX0KLQogCWN4dC52YXJzID0gdmFy czsKKwljeHQuZ2V0VmFyID0gZ2V0VmFyOwogCWN4dC5sYXhNb2RlID0gKHBhdGgtPmhlYWRl ciAmIEpTT05QQVRIX0xBWCkgIT0gMDsKIAljeHQuaWdub3JlU3RydWN0dXJhbEVycm9ycyA9 IGN4dC5sYXhNb2RlOwogCWN4dC5yb290ID0gJmpidjsKIAljeHQuY3VycmVudCA9ICZqYnY7 CiAJY3h0LmJhc2VPYmplY3QuamJjID0gTlVMTDsKIAljeHQuYmFzZU9iamVjdC5pZCA9IDA7 Ci0JY3h0Lmxhc3RHZW5lcmF0ZWRPYmplY3RJZCA9IHZhcnMgPyAyIDogMTsKKwkvKiAxICsg bnVtYmVyIG9mIGJhc2Ugb2JqZWN0cyBpbiB2YXJzICovCisJY3h0Lmxhc3RHZW5lcmF0ZWRP YmplY3RJZCA9IDEgKyBnZXRWYXIodmFycywgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CiAJY3h0 LmlubmVybW9zdEFycmF5U2l6ZSA9IC0xOwogCWN4dC50aHJvd0Vycm9ycyA9IHRocm93RXJy b3JzOwogCWN4dC51c2VUeiA9IHVzZVR6OwpAQCAtMjA5Myw3ICsyMTAxLDcgQEAgZ2V0SnNv blBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICppdGVt LAogCQkJCQkJCQkJCQkJICZ2YWx1ZS0+dmFsLnN0cmluZy5sZW4pOwogCQkJYnJlYWs7CiAJ CWNhc2UganBpVmFyaWFibGU6Ci0JCQlnZXRKc29uUGF0aFZhcmlhYmxlKGN4dCwgaXRlbSwg Y3h0LT52YXJzLCB2YWx1ZSk7CisJCQlnZXRKc29uUGF0aFZhcmlhYmxlKGN4dCwgaXRlbSwg dmFsdWUpOwogCQkJcmV0dXJuOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVuZXhw ZWN0ZWQganNvbnBhdGggaXRlbSB0eXBlIik7CkBAIC0yMTA1LDQyICsyMTEzLDYzIEBAIGdl dEpzb25QYXRoSXRlbShKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAq aXRlbSwKICAqLwogc3RhdGljIHZvaWQKIGdldEpzb25QYXRoVmFyaWFibGUoSnNvblBhdGhF eGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKnZhcmlhYmxlLAotCQkJCQlKc29uYiAq dmFycywgSnNvbmJWYWx1ZSAqdmFsdWUpCisJCQkJCUpzb25iVmFsdWUgKnZhbHVlKQogewog CWNoYXIJICAgKnZhck5hbWU7CiAJaW50CQkJdmFyTmFtZUxlbmd0aDsKKwlKc29uYlZhbHVl CWJhc2VPYmplY3Q7CisJaW50CQkJYmFzZU9iamVjdElkOworCisJQXNzZXJ0KHZhcmlhYmxl LT50eXBlID09IGpwaVZhcmlhYmxlKTsKKwl2YXJOYW1lID0ganNwR2V0U3RyaW5nKHZhcmlh YmxlLCAmdmFyTmFtZUxlbmd0aCk7CisKKwlpZiAoIWN4dC0+dmFycyB8fAorCQkoYmFzZU9i amVjdElkID0gY3h0LT5nZXRWYXIoY3h0LT52YXJzLCB2YXJOYW1lLCB2YXJOYW1lTGVuZ3Ro LCB2YWx1ZSwKKwkJCQkJCQkJCSZiYXNlT2JqZWN0KSkgPCAwKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1z ZygiY291bGQgbm90IGZpbmQganNvbnBhdGggdmFyaWFibGUgXCIlc1wiIiwKKwkJCQkJCXBu c3RyZHVwKHZhck5hbWUsIHZhck5hbWVMZW5ndGgpKSkpOworCisJaWYgKGJhc2VPYmplY3RJ ZCA+IDApCisJCXNldEJhc2VPYmplY3QoY3h0LCAmYmFzZU9iamVjdCwgYmFzZU9iamVjdElk KTsKK30KKworc3RhdGljIGludAorZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29uYih2b2lk ICp2YXJzSnNvbmIsIGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuZ3RoLAorCQkJCQkJ CSBKc29uYlZhbHVlICp2YWx1ZSwgSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCkKK3sKKwlKc29u YgkgICAqdmFycyA9IHZhcnNKc29uYjsKIAlKc29uYlZhbHVlCXRtcDsKIAlKc29uYlZhbHVl ICp2OwogCi0JaWYgKCF2YXJzKQorCWlmICghdmFyTmFtZSkKIAl7Ci0JCXZhbHVlLT50eXBl ID0gamJ2TnVsbDsKLQkJcmV0dXJuOworCQlpZiAodmFycyAmJiAhSnNvbkNvbnRhaW5lcklz T2JqZWN0KCZ2YXJzLT5yb290KSkKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2co IlwidmFyc1wiIGFyZ3VtZW50IGlzIG5vdCBhbiBvYmplY3QiKSwKKwkJCQkJIGVycmRldGFp bCgiSnNvbnBhdGggcGFyYW1ldGVycyBzaG91bGQgYmUgZW5jb2RlZCBhcyBrZXktdmFsdWUg cGFpcnMgb2YgXCJ2YXJzXCIgb2JqZWN0LiIpKSk7CisJCX0KKworCQlyZXR1cm4gdmFycyA/ IDEgOiAwOwkvKiBjb3VudCBvZiBiYXNlIG9iamVjdHMgKi8KIAl9CiAKLQlBc3NlcnQodmFy aWFibGUtPnR5cGUgPT0ganBpVmFyaWFibGUpOwotCXZhck5hbWUgPSBqc3BHZXRTdHJpbmco dmFyaWFibGUsICZ2YXJOYW1lTGVuZ3RoKTsKIAl0bXAudHlwZSA9IGpidlN0cmluZzsKIAl0 bXAudmFsLnN0cmluZy52YWwgPSB2YXJOYW1lOwogCXRtcC52YWwuc3RyaW5nLmxlbiA9IHZh ck5hbWVMZW5ndGg7CiAKIAl2ID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKCZ2YXJz LT5yb290LCBKQl9GT0JKRUNULCAmdG1wKTsKIAotCWlmICh2KQotCXsKLQkJKnZhbHVlID0g KnY7Ci0JCXBmcmVlKHYpOwotCX0KLQllbHNlCi0JewotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCi0JCQkJIGVycm1zZygiY291 bGQgbm90IGZpbmQganNvbnBhdGggdmFyaWFibGUgXCIlc1wiIiwKLQkJCQkJCXBuc3RyZHVw KHZhck5hbWUsIHZhck5hbWVMZW5ndGgpKSkpOwotCX0KKwlpZiAoIXYpCisJCXJldHVybiAt MTsKIAotCUpzb25iSW5pdEJpbmFyeSgmdG1wLCB2YXJzKTsKLQlzZXRCYXNlT2JqZWN0KGN4 dCwgJnRtcCwgMSk7CisJKnZhbHVlID0gKnY7CisJcGZyZWUodik7CisKKwlKc29uYkluaXRC aW5hcnkoYmFzZU9iamVjdCwgdmFycyk7CisJcmV0dXJuIDE7CiB9CiAKIC8qKioqKioqKioq KioqKioqIFN1cHBvcnQgZnVuY3Rpb25zIGZvciBKc29uUGF0aCBleGVjdXRpb24gKioqKioq KioqKioqKioqKiovCkBAIC0yNzk3LDMgKzI4MjYsMjQ0IEBAIGNvbXBhcmVEYXRldGltZShE YXR1bSB2YWwxLCBPaWQgdHlwaWQxLCBEYXR1bSB2YWwyLCBPaWQgdHlwaWQyLAogCiAJcmV0 dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihjbXBmdW5jLCB2YWwxLCB2 YWwyKSk7CiB9CisKKy8qKioqKioqKioqKioqKioqKioqKkludGVyZmFjZSB0byBwZ3NxbCdz IGV4ZWN1dG9yKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitib29sCitKc29uUGF0 aEV4aXN0cyhEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBMaXN0ICp2YXJzLCBib29sICplcnJv cikKK3sKKwlKc29uUGF0aEV4ZWNSZXN1bHQgcmVzID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2 YXJzLCBFdmFsSnNvblBhdGhWYXIsCisJCQkJCQkJCQkJCSBEYXR1bUdldEpzb25iUChqYiks ICFlcnJvciwgTlVMTCwKKwkJCQkJCQkJCQkJIHRydWUpOworCisJQXNzZXJ0KGVycm9yIHx8 ICFqcGVySXNFcnJvcihyZXMpKTsKKworCWlmIChlcnJvciAmJiBqcGVySXNFcnJvcihyZXMp KQorCQkqZXJyb3IgPSB0cnVlOworCisJcmV0dXJuIHJlcyA9PSBqcGVyT2s7Cit9CisKK0Rh dHVtCitKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIEpzb25XcmFwcGVy IHdyYXBwZXIsIGJvb2wgKmVtcHR5LAorCQkJICBib29sICplcnJvciwgTGlzdCAqdmFycykK K3sKKwlKc29uYlZhbHVlICpmaXJzdDsKKwlib29sCQl3cmFwOworCUpzb25WYWx1ZUxpc3Qg Zm91bmQgPSB7MH07CisJSnNvblBhdGhFeGVjUmVzdWx0IHJlcyBQR19VU0VEX0ZPUl9BU1NF UlRTX09OTFk7CisJaW50CQkJY291bnQ7CisKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAs IHZhcnMsIEV2YWxKc29uUGF0aFZhciwgRGF0dW1HZXRKc29uYlAoamIpLCAhZXJyb3IsCisJ CQkJCQkgICZmb3VuZCwgdHJ1ZSk7CisKKwlBc3NlcnQoZXJyb3IgfHwgIWpwZXJJc0Vycm9y KHJlcykpOworCisJaWYgKGVycm9yICYmIGpwZXJJc0Vycm9yKHJlcykpCisJeworCQkqZXJy b3IgPSB0cnVlOworCQkqZW1wdHkgPSBmYWxzZTsKKwkJcmV0dXJuIChEYXR1bSkgMDsKKwl9 CisKKwljb3VudCA9IEpzb25WYWx1ZUxpc3RMZW5ndGgoJmZvdW5kKTsKKworCWZpcnN0ID0g Y291bnQgPyBKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpIDogTlVMTDsKKworCWlmICghZmly c3QpCisJCXdyYXAgPSBmYWxzZTsKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19OT05FKQor CQl3cmFwID0gZmFsc2U7CisJZWxzZSBpZiAod3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05B TCkKKwkJd3JhcCA9IHRydWU7CisJZWxzZSBpZiAod3JhcHBlciA9PSBKU1dfQ09ORElUSU9O QUwpCisJCXdyYXAgPSBjb3VudCA+IDEgfHwKKwkJCUlzQUpzb25iU2NhbGFyKGZpcnN0KSB8 fAorCQkJKGZpcnN0LT50eXBlID09IGpidkJpbmFyeSAmJgorCQkJIEpzb25Db250YWluZXJJ c1NjYWxhcihmaXJzdC0+dmFsLmJpbmFyeS5kYXRhKSk7CisJZWxzZQorCXsKKwkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBqc29uIHdyYXBwZXIgJWQiLCB3cmFwcGVyKTsKKwkJd3Jh cCA9IGZhbHNlOworCX0KKworCWlmICh3cmFwKQorCQlyZXR1cm4gSnNvbmJQR2V0RGF0dW0o SnNvbmJWYWx1ZVRvSnNvbmIod3JhcEl0ZW1zSW5BcnJheSgmZm91bmQpKSk7CisKKwlpZiAo Y291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0cnVlOwor CQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9NT1JFX1RIQU5fT05FX1NRTF9KU09OX0lURU0pLAorCQkJCSBlcnJt c2coIkpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiAi CisJCQkJCQkic2luZ2xldG9uIGl0ZW0gd2l0aG91dCB3cmFwcGVyIiksCisJCQkJIGVycmhp bnQoInVzZSBXSVRIIFdSQVBQRVIgY2xhdXNlIHRvIHdyYXAgU1FML0pTT04gaXRlbSAiCisJ CQkJCQkgInNlcXVlbmNlIGludG8gYXJyYXkiKSkpOworCX0KKworCWlmIChmaXJzdCkKKwkJ cmV0dXJuIEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGZpcnN0KSk7CisKKwkq ZW1wdHkgPSB0cnVlOworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKK0pz b25iVmFsdWUgKgorSnNvblBhdGhWYWx1ZShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBib29s ICplbXB0eSwgYm9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNvbmJWYWx1ZSAgICpy ZXM7CisJSnNvblZhbHVlTGlzdCBmb3VuZCA9IHsgMCB9OworCUpzb25QYXRoRXhlY1Jlc3Vs dCBqcGVyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwlpbnQJCQljb3VudDsKKworCWpw ZXIgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIEV2YWxKc29uUGF0aFZhciwgRGF0dW1H ZXRKc29uYlAoamIpLCAhZXJyb3IsCisJCQkJCQkgICAmZm91bmQsIHRydWUpOworCisJQXNz ZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihqcGVyKSk7CisKKwlpZiAoZXJyb3IgJiYganBl cklzRXJyb3IoanBlcikpCisJeworCQkqZXJyb3IgPSB0cnVlOworCQkqZW1wdHkgPSBmYWxz ZTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJY291bnQgPSBKc29uVmFsdWVMaXN0TGVuZ3Ro KCZmb3VuZCk7CisKKwkqZW1wdHkgPSAhY291bnQ7CisKKwlpZiAoKmVtcHR5KQorCQlyZXR1 cm4gTlVMTDsKKworCWlmIChjb3VudCA+IDEpCisJeworCQlpZiAoZXJyb3IpCisJCXsKKwkJ CSplcnJvciA9IHRydWU7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9NT1JFX1RIQU5fT05FX1NRTF9KU09OX0lURU0p LAorCQkJCSBlcnJtc2coIkpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hv dWxkIHJldHVybiAiCisJCQkJCQkic2luZ2xldG9uIHNjYWxhciBpdGVtIikpKTsKKwl9CisK KwlyZXMgPSBKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpOworCisJaWYgKHJlcy0+dHlwZSA9 PSBqYnZCaW5hcnkgJiYKKwkJSnNvbkNvbnRhaW5lcklzU2NhbGFyKHJlcy0+dmFsLmJpbmFy eS5kYXRhKSkKKwkJSnNvbmJFeHRyYWN0U2NhbGFyKHJlcy0+dmFsLmJpbmFyeS5kYXRhLCBy ZXMpOworCisJaWYgKCFJc0FKc29uYlNjYWxhcihyZXMpKQorCXsKKwkJaWYgKGVycm9yKQor CQl7CisJCQkqZXJyb3IgPSB0cnVlOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKworCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1FMX0pTT05fU0NBTEFSX1JFUVVJ UkVEKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVF IHNob3VsZCByZXR1cm4gIgorCQkJCQkJInNpbmdsZXRvbiBzY2FsYXIgaXRlbSIpKSk7CisJ fQorCisJaWYgKHJlcy0+dHlwZSA9PSBqYnZOdWxsKQorCQlyZXR1cm4gTlVMTDsKKworCXJl dHVybiByZXM7Cit9CisKK3N0YXRpYyB2b2lkCitKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1 bShKc29uYlZhbHVlICpqYnYsIERhdHVtIG51bSkKK3sKKwlqYnYtPnR5cGUgPSBqYnZOdW1l cmljOworCWpidi0+dmFsLm51bWVyaWMgPSBEYXR1bUdldE51bWVyaWMobnVtKTsKK30KKwor dm9pZAorSnNvbkl0ZW1Gcm9tRGF0dW0oRGF0dW0gdmFsLCBPaWQgdHlwaWQsIGludDMyIHR5 cG1vZCwgSnNvbmJWYWx1ZSAqcmVzKQoreworCXN3aXRjaCAodHlwaWQpCisJeworCQljYXNl IEJPT0xPSUQ6CisJCQlyZXMtPnR5cGUgPSBqYnZCb29sOworCQkJcmVzLT52YWwuYm9vbGVh biA9IERhdHVtR2V0Qm9vbCh2YWwpOworCQkJYnJlYWs7CisJCWNhc2UgTlVNRVJJQ09JRDoK KwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgdmFsKTsKKwkJCWJyZWFrOwor CQljYXNlIElOVDJPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIERp cmVjdEZ1bmN0aW9uQ2FsbDEoaW50Ml9udW1lcmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQlj YXNlIElOVDRPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIERpcmVj dEZ1bmN0aW9uQ2FsbDEoaW50NF9udW1lcmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQljYXNl IElOVDhPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIERpcmVjdEZ1 bmN0aW9uQ2FsbDEoaW50OF9udW1lcmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIEZM T0FUNE9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVu Y3Rpb25DYWxsMShmbG9hdDRfbnVtZXJpYywgdmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBG TE9BVDhPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIERpcmVjdEZ1 bmN0aW9uQ2FsbDEoZmxvYXQ4X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2Ug VEVYVE9JRDoKKwkJY2FzZSBWQVJDSEFST0lEOgorCQkJcmVzLT50eXBlID0gamJ2U3RyaW5n OworCQkJcmVzLT52YWwuc3RyaW5nLnZhbCA9IFZBUkRBVEFfQU5ZKHZhbCk7CisJCQlyZXMt PnZhbC5zdHJpbmcubGVuID0gVkFSU0laRV9BTllfRVhIRFIodmFsKTsKKwkJCWJyZWFrOwor CQljYXNlIERBVEVPSUQ6CisJCWNhc2UgVElNRU9JRDoKKwkJY2FzZSBUSU1FVFpPSUQ6CisJ CWNhc2UgVElNRVNUQU1QT0lEOgorCQljYXNlIFRJTUVTVEFNUFRaT0lEOgorCQkJcmVzLT50 eXBlID0gamJ2RGF0ZXRpbWU7CisJCQlyZXMtPnZhbC5kYXRldGltZS52YWx1ZSA9IHZhbDsK KwkJCXJlcy0+dmFsLmRhdGV0aW1lLnR5cGlkID0gdHlwaWQ7CisJCQlyZXMtPnZhbC5kYXRl dGltZS50eXBtb2QgPSB0eXBtb2Q7CisJCQlyZXMtPnZhbC5kYXRldGltZS50eiA9IDA7CisJ CQlicmVhazsKKwkJY2FzZSBKU09OQk9JRDoKKwkJCXsKKwkJCQlKc29uYlZhbHVlICpqYnYg PSByZXM7CisJCQkJSnNvbmIJICAgKmpiID0gRGF0dW1HZXRKc29uYlAodmFsKTsKKworCQkJ CWlmIChKc29uQ29udGFpbmVySXNTY2FsYXIoJmpiLT5yb290KSkKKwkJCQl7CisJCQkJCWJv b2wJCXJlcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwkJCQkJcmVzID0gSnNvbmJF eHRyYWN0U2NhbGFyKCZqYi0+cm9vdCwgamJ2KTsKKwkJCQkJQXNzZXJ0KHJlcyk7CisJCQkJ fQorCQkJCWVsc2UKKwkJCQkJSnNvbmJJbml0QmluYXJ5KGpidiwgamIpOworCQkJCWJyZWFr OworCQkJfQorCQljYXNlIEpTT05PSUQ6CisJCQl7CisJCQkJdGV4dAkgICAqdHh0ID0gRGF0 dW1HZXRUZXh0UCh2YWwpOworCQkJCWNoYXIJICAgKnN0ciA9IHRleHRfdG9fY3N0cmluZyh0 eHQpOworCQkJCUpzb25iCSAgICpqYiA9CisJCQkJCURhdHVtR2V0SnNvbmJQKERpcmVjdEZ1 bmN0aW9uQ2FsbDEoanNvbmJfaW4sCisJCQkJCQkJCQkJCQkJICAgQ1N0cmluZ0dldERhdHVt KHN0cikpKTsKKworCQkJCXBmcmVlKHN0cik7CisKKwkJCQlKc29uSXRlbUZyb21EYXR1bShK c29uYlBHZXREYXR1bShqYiksIEpTT05CT0lELCAtMSwgcmVzKTsKKwkJCQlicmVhazsKKwkJ CX0KKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJvbmx5IGJvb2ws IG51bWVyaWMgYW5kIHRleHQgdHlwZXMgY291bGQgYmUgIgorCQkJCQkJCSJjYXN0ZWQgdG8g c3VwcG9ydGVkIGpzb25wYXRoIHR5cGVzLiIpKSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCmluZGV4IDAzOWIxZDJiOTUuLmZjMzYxN2Y1NTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJ1dGls cy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxz L2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgpAQCAtNDU3LDYgKzQ1OCwxMiBAQCBzdGF0aWMgdm9pZCBnZXRfY29l cmNpb25fZXhwcihOb2RlICphcmcsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJ CQkgIE5vZGUgKnBhcmVudE5vZGUpOwogc3RhdGljIHZvaWQgZ2V0X2NvbnN0X2V4cHIoQ29u c3QgKmNvbnN0dmFsLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkgICBpbnQg c2hvd3R5cGUpOworc3RhdGljIHZvaWQgZ2V0X2pzb25fY29uc3RydWN0b3IoSnNvbkNvbnN0 cnVjdG9yRXhwciAqY3RvciwKKwkJCQkJCQkJIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwg Ym9vbCBzaG93aW1wbGljaXQpOworc3RhdGljIHZvaWQgZ2V0X2pzb25fYWdnX2NvbnN0cnVj dG9yKEpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IsCisJCQkJCQkJCQkgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LAorCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAorCQkJCQkJ CQkJIGJvb2wgaXNfanNvbl9vYmplY3RhZ2cpOwogc3RhdGljIHZvaWQgZ2V0X2NvbnN0X2Nv bGxhdGlvbihDb25zdCAqY29uc3R2YWwsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBz dGF0aWMgdm9pZCBzaW1wbGVfcXVvdGVfbGl0ZXJhbChTdHJpbmdJbmZvIGJ1ZiwgY29uc3Qg Y2hhciAqdmFsKTsKIHN0YXRpYyB2b2lkIGdldF9zdWJsaW5rX2V4cHIoU3ViTGluayAqc3Vi bGluaywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKQEAgLTQ5MCw2ICs0OTcsOCBAQCBz dGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVkX3R5cGVfbmFtZShPaWQgdHlwaWQpOwog c3RhdGljIHRleHQgKnN0cmluZ190b190ZXh0KGNoYXIgKnN0cik7CiBzdGF0aWMgY2hhciAq ZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBzdGF0aWMgdm9pZCBnZXRfcmVsb3B0 aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucyk7CitzdGF0aWMgdm9pZCBn ZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsCisJCQkJCQkJICAgYm9vbCBzaG93aW1wbGljaXQpOwogCiAjZGVmaW5lIG9ubHlf bWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC02MjM2LDcg KzYyNDUsOCBAQCBnZXRfcnVsZV9zb3J0Z3JvdXBjbGF1c2UoSW5kZXggcmVmLCBMaXN0ICp0 bGlzdCwgYm9vbCBmb3JjZV9jb2xubywKIAkJYm9vbAkJbmVlZF9wYXJlbiA9IChQUkVUVFlf UEFSRU4oY29udGV4dCkKIAkJCQkJCQkJICB8fCBJc0EoZXhwciwgRnVuY0V4cHIpCiAJCQkJ CQkJCSAgfHwgSXNBKGV4cHIsIEFnZ3JlZikKLQkJCQkJCQkJICB8fCBJc0EoZXhwciwgV2lu ZG93RnVuYykpOworCQkJCQkJCQkgIHx8IElzQShleHByLCBXaW5kb3dGdW5jKQorCQkJCQkJ CQkgIHx8IElzQShleHByLCBKc29uQ29uc3RydWN0b3JFeHByKSk7CiAKIAkJaWYgKG5lZWRf cGFyZW4pCiAJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihjb250ZXh0LT5idWYsICcoJyk7CkBA IC04MDgyLDYgKzgwOTIsOCBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9kZSAqcGFy ZW50Tm9kZSwgaW50IHByZXR0eUZsYWdzKQogCQljYXNlIFRfQWdncmVmOgogCQljYXNlIFRf V2luZG93RnVuYzoKIAkJY2FzZSBUX0Z1bmNFeHByOgorCQljYXNlIFRfSnNvbkNvbnN0cnVj dG9yRXhwcjoKKwkJY2FzZSBUX0pzb25FeHByOgogCQkJLyogZnVuY3Rpb24tbGlrZTogbmFt ZSguLikgb3IgbmFtZVsuLl0gKi8KIAkJCXJldHVybiB0cnVlOwogCkBAIC04MTc1LDYgKzgx ODcsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9kZSAqcGFyZW50Tm9kZSwgaW50 IHByZXR0eUZsYWdzKQogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCWNhc2UgVF9Cb29sZWFuVGVz dDoKIAkJY2FzZSBUX0Rpc3RpbmN0RXhwcjoKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToK IAkJCXN3aXRjaCAobm9kZVRhZyhwYXJlbnROb2RlKSkKIAkJCXsKIAkJCQljYXNlIFRfRnVu Y0V4cHI6CkBAIC04MTk4LDYgKzgyMTEsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwg Tm9kZSAqcGFyZW50Tm9kZSwgaW50IHByZXR0eUZsYWdzKQogCQkJCWNhc2UgVF9BZ2dyZWY6 CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCWNhc2UgVF9XaW5kb3dGdW5jOgkvKiBvd24g cGFyZW50aGVzZXMgKi8KIAkJCQljYXNlIFRfQ2FzZUV4cHI6CS8qIG90aGVyIHNlcGFyYXRv cnMgKi8KKwkJCQljYXNlIFRfSnNvbkV4cHI6IC8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJ CQlyZXR1cm4gdHJ1ZTsKIAkJCQlkZWZhdWx0OgogCQkJCQlyZXR1cm4gZmFsc2U7CkBAIC04 MjUzLDYgKzgyNjcsMTEgQEAgaXNTaW1wbGVOb2RlKE5vZGUgKm5vZGUsIE5vZGUgKnBhcmVu dE5vZGUsIGludCBwcmV0dHlGbGFncykKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJfQogCisJ CWNhc2UgVF9Kc29uVmFsdWVFeHByOgorCQkJLyogbWF5YmUgc2ltcGxlLCBjaGVjayBhcmdz ICovCisJCQlyZXR1cm4gaXNTaW1wbGVOb2RlKChOb2RlICopICgoSnNvblZhbHVlRXhwciAq KSBub2RlKS0+cmF3X2V4cHIsCisJCQkJCQkJCW5vZGUsIHByZXR0eUZsYWdzKTsKKwogCQlk ZWZhdWx0OgogCQkJYnJlYWs7CiAJfQpAQCAtODM1OSw2ICs4Mzc4LDEyMSBAQCBnZXRfcnVs ZV9leHByX3BhcmVuKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIH0K IAogCisvKgorICogZ2V0X2pzb25fcGF0aF9zcGVjCQktIFBhcnNlIGJhY2sgYSBKU09OIHBh dGggc3BlY2lmaWNhdGlvbgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fcGF0aF9zcGVj KE5vZGUgKnBhdGhfc3BlYywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dp bXBsaWNpdCkKK3sKKwlpZiAoSXNBKHBhdGhfc3BlYywgQ29uc3QpKQorCQlnZXRfY29uc3Rf ZXhwcigoQ29uc3QgKikgcGF0aF9zcGVjLCBjb250ZXh0LCAtMSk7CisJZWxzZQorCQlnZXRf cnVsZV9leHByKHBhdGhfc3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKK30KKworLyoK KyAqIGdldF9qc29uX2Zvcm1hdAkJCS0gUGFyc2UgYmFjayBhIEpzb25Gb3JtYXQgbm9kZQor ICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fZm9ybWF0KEpzb25Gb3JtYXQgKmZvcm1hdCwg U3RyaW5nSW5mbyBidWYpCit7CisJaWYgKGZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9S TUFUX0RFRkFVTFQpCisJCXJldHVybjsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LAorCQkJCQkJICAgZm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfSlNPTkIgPwor CQkJCQkJICAgIiBGT1JNQVQgSlNPTkIiIDogIiBGT1JNQVQgSlNPTiIpOworCisJaWYgKGZv cm1hdC0+ZW5jb2RpbmcgIT0gSlNfRU5DX0RFRkFVTFQpCisJeworCQljb25zdCBjaGFyICpl bmNvZGluZyA9CisJCQlmb3JtYXQtPmVuY29kaW5nID09IEpTX0VOQ19VVEYxNiA/ICJVVEYx NiIgOgorCQkJZm9ybWF0LT5lbmNvZGluZyA9PSBKU19FTkNfVVRGMzIgPyAiVVRGMzIiIDog IlVURjgiOworCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEVOQ09ESU5HICVzIiwgZW5j b2RpbmcpOworCX0KK30KKworLyoKKyAqIGdldF9qc29uX3JldHVybmluZwkJLSBQYXJzZSBi YWNrIGEgSnNvblJldHVybmluZyBzdHJ1Y3R1cmUKKyAqLworc3RhdGljIHZvaWQKK2dldF9q c29uX3JldHVybmluZyhKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIFN0cmluZ0luZm8gYnVm LAorCQkJCSAgIGJvb2wganNvbl9mb3JtYXRfYnlfZGVmYXVsdCkKK3sKKwlpZiAoIU9pZElz VmFsaWQocmV0dXJuaW5nLT50eXBpZCkpCisJCXJldHVybjsKKworCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAiIFJFVFVSTklORyAlcyIsCisJCQkJCSBmb3JtYXRfdHlwZV93aXRoX3R5cGVt b2QocmV0dXJuaW5nLT50eXBpZCwKKwkJCQkJCQkJCQkJICByZXR1cm5pbmctPnR5cG1vZCkp OworCisJaWYgKCFqc29uX2Zvcm1hdF9ieV9kZWZhdWx0IHx8CisJCXJldHVybmluZy0+Zm9y bWF0LT5mb3JtYXRfdHlwZSAhPQorCQkJKHJldHVybmluZy0+dHlwaWQgPT0gSlNPTkJPSUQg PyBKU19GT1JNQVRfSlNPTkIgOiBKU19GT1JNQVRfSlNPTikpCisJCWdldF9qc29uX2Zvcm1h dChyZXR1cm5pbmctPmZvcm1hdCwgYnVmKTsKK30KKworc3RhdGljIHZvaWQKK2dldF9qc29u X2JlaGF2aW9yKEpzb25CZWhhdmlvciAqYmVoYXZpb3IsIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCwKKwkJCQkgIGNvbnN0IGNoYXIgKm9uKQoreworCS8qCisJICogVGhlIG9yZGVyIG9m IGFycmF5IGVsZW1lbnRzIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb3JkZXIgb2YKKwkgKiBK c29uQmVoYXZpb3JUeXBlIG1lbWJlcnMuCisJICovCisJY29uc3QgY2hhciAqYmVoYXZpb3Jf bmFtZXNbXSA9CisJeworCQkiIE5VTEwiLAorCQkiIEVSUk9SIiwKKwkJIiBFTVBUWSIsCisJ CSIgVFJVRSIsCisJCSIgRkFMU0UiLAorCQkiIFVOS05PV04iLAorCQkiIEVNUFRZIEFSUkFZ IiwKKwkJIiBFTVBUWSBPQkpFQ1QiLAorCQkiIERFRkFVTFQgIgorCX07CisKKwlpZiAoKGlu dCkgYmVoYXZpb3ItPmJ0eXBlIDwgMCB8fCBiZWhhdmlvci0+YnR5cGUgPj0gbGVuZ3Rob2Yo YmVoYXZpb3JfbmFtZXMpKQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBqc29uIGJlaGF2aW9y IHR5cGU6ICVkIiwgYmVoYXZpb3ItPmJ0eXBlKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoY29udGV4dC0+YnVmLCBiZWhhdmlvcl9uYW1lc1tiZWhhdmlvci0+YnR5cGVdKTsKKwor CWlmIChiZWhhdmlvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQlnZXRf cnVsZV9leHByKGJlaGF2aW9yLT5kZWZhdWx0X2V4cHIsIGNvbnRleHQsIGZhbHNlKTsKKwor CWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiIE9OICVzIiwgb24pOworfQorCisv KgorICogZ2V0X2pzb25fZXhwcl9vcHRpb25zCisgKgorICogUGFyc2UgYmFjayBjb21tb24g b3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMuCisgKi8K K3N0YXRpYyB2b2lkCitnZXRfanNvbl9leHByX29wdGlvbnMoSnNvbkV4cHIgKmpzZXhwciwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAorCQkJCQkgIEpzb25CZWhhdmlvclR5cGUgZGVm YXVsdF9iZWhhdmlvcikKK3sKKwlpZiAoanNleHByLT5vcCA9PSBJU19KU09OX1FVRVJZKQor CXsKKwkJaWYgKGpzZXhwci0+d3JhcHBlciA9PSBKU1dfQ09ORElUSU9OQUwpCisJCQlhcHBl bmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIi KTsKKwkJZWxzZSBpZiAoanNleHByLT53cmFwcGVyID09IEpTV19VTkNPTkRJVElPTkFMKQor CQkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgV0lUSCBVTkNPTkRJVElPTkFM IFdSQVBQRVIiKTsKKworCQlpZiAoanNleHByLT5vbWl0X3F1b3RlcykKKwkJCWFwcGVuZFN0 cmluZ0luZm8oY29udGV4dC0+YnVmLCAiIE9NSVQgUVVPVEVTIik7CisJfQorCisJaWYgKGpz ZXhwci0+b3AgIT0gSVNfSlNPTl9FWElTVFMgJiYKKwkJanNleHByLT5vbl9lbXB0eS0+YnR5 cGUgIT0gZGVmYXVsdF9iZWhhdmlvcikKKwkJZ2V0X2pzb25fYmVoYXZpb3IoanNleHByLT5v bl9lbXB0eSwgY29udGV4dCwgIkVNUFRZIik7CisKKwlpZiAoanNleHByLT5vbl9lcnJvci0+ YnR5cGUgIT0gZGVmYXVsdF9iZWhhdmlvcikKKwkJZ2V0X2pzb25fYmVoYXZpb3IoanNleHBy LT5vbl9lcnJvciwgY29udGV4dCwgIkVSUk9SIik7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAq IGdldF9ydWxlX2V4cHIJCQktIFBhcnNlIGJhY2sgYW4gZXhwcmVzc2lvbgogICoKQEAgLTk1 MTgsNiArOTY1MiwxMTAgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQlicmVhazsKIAorCisJCWNhc2UgVF9Kc29uVmFs dWVFeHByOgorCQkJeworCQkJCUpzb25WYWx1ZUV4cHIgKmp2ZSA9IChKc29uVmFsdWVFeHBy ICopIG5vZGU7CisKKwkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGp2ZS0+cmF3X2V4cHIs IGNvbnRleHQsIGZhbHNlKTsKKwkJCQlnZXRfanNvbl9mb3JtYXQoanZlLT5mb3JtYXQsIGNv bnRleHQtPmJ1Zik7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFRfSnNvbkNvbnN0cnVj dG9yRXhwcjoKKwkJCWdldF9qc29uX2NvbnN0cnVjdG9yKChKc29uQ29uc3RydWN0b3JFeHBy ICopIG5vZGUsIGNvbnRleHQsIGZhbHNlKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29u SXNQcmVkaWNhdGU6CisJCQl7CisJCQkJSnNvbklzUHJlZGljYXRlICpwcmVkID0gKEpzb25J c1ByZWRpY2F0ZSAqKSBub2RlOworCisJCQkJaWYgKCFQUkVUVFlfUEFSRU4oY29udGV4dCkp CisJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJygnKTsKKworCQkJ CWdldF9ydWxlX2V4cHJfcGFyZW4ocHJlZC0+ZXhwciwgY29udGV4dCwgdHJ1ZSwgbm9kZSk7 CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgIiBJUyBKU09O Iik7CisKKwkJCQlzd2l0Y2ggKHByZWQtPnZhbHVlX3R5cGUpCisJCQkJeworCQkJCQljYXNl IEpTX1RZUEVfU0NBTEFSOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0 LT5idWYsICIgU0NBTEFSIik7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBKU19UWVBFX0FS UkFZOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsICIgQVJS QVkiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIEpTX1RZUEVfT0JKRUNUOgorCQkJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsICIgT0JKRUNUIik7CisJCQkJ CQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWlm IChwcmVkLT51bmlxdWVfa2V5cykKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250 ZXh0LT5idWYsICIgV0lUSCBVTklRVUUgS0VZUyIpOworCisJCQkJaWYgKCFQUkVUVFlfUEFS RU4oY29udGV4dCkpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1Ziwg JyknKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJ CQlKc29uRXhwciAgICpqZXhwciA9IChKc29uRXhwciAqKSBub2RlOworCisJCQkJc3dpdGNo IChqZXhwci0+b3ApCisJCQkJeworCQkJCQljYXNlIElTX0pTT05fUVVFUlk6CisJCQkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkpTT05fUVVFUlkoIik7CisJCQkJCQlicmVh azsKKwkJCQkJY2FzZSBJU19KU09OX1ZBTFVFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICJKU09OX1ZBTFVFKCIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgSVNf SlNPTl9FWElTVFM6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkpTT05f RVhJU1RTKCIpOworCQkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZ2V0X3J1bGVfZXhwcihq ZXhwci0+Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisKKwkJCQlnZXRfanNvbl9wYXRo X3NwZWMoamV4cHItPnBhdGhfc3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJ CWlmIChqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICps YzEsICpsYzI7CisJCQkJCWJvb2wJCW5lZWRjb21tYSA9IGZhbHNlOworCisJCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFBBU1NJTkcgIik7CisKKwkJCQkJZm9yYm90aChs YzEsIGpleHByLT5wYXNzaW5nX25hbWVzLAorCQkJCQkJCWxjMiwgamV4cHItPnBhc3Npbmdf dmFsdWVzKQorCQkJCQl7CisJCQkJCQlpZiAobmVlZGNvbW1hKQorCQkJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJCW5lZWRjb21tYSA9IHRydWU7CisK KwkJCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxjMiksIGNvbnRleHQsIHNo b3dpbXBsaWNpdCk7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJ CQkJCQkJCQkJICgoU3RyaW5nICopIGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwp OworCQkJCQl9CisJCQkJfQorCisJCQkJaWYgKGpleHByLT5vcCAhPSBJU19KU09OX0VYSVNU UyB8fAorCQkJCQlqZXhwci0+cmV0dXJuaW5nLT50eXBpZCAhPSBCT09MT0lEKQorCQkJCQln ZXRfanNvbl9yZXR1cm5pbmcoamV4cHItPnJldHVybmluZywgY29udGV4dC0+YnVmLAorCQkJ CQkJCQkJICAgamV4cHItPm9wID09IElTX0pTT05fUVVFUlkpOworCisJCQkJZ2V0X2pzb25f ZXhwcl9vcHRpb25zKGpleHByLCBjb250ZXh0LAorCQkJCQkJCQkJICBqZXhwci0+b3AgPT0g SVNfSlNPTl9FWElTVFMgPworCQkJCQkJCQkJICBKU09OX0JFSEFWSU9SX0ZBTFNFIDogSlNP Tl9CRUhBVklPUl9OVUxMKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAi KSIpOworCQkJfQorCQkJYnJlYWs7CisKIAkJY2FzZSBUX0xpc3Q6CiAJCQl7CiAJCQkJY2hh cgkgICAqc2VwOwpAQCAtOTY0MSw2ICs5ODc5LDcgQEAgbG9va3NfbGlrZV9mdW5jdGlvbihO b2RlICpub2RlKQogCQljYXNlIFRfTWluTWF4RXhwcjoKIAkJY2FzZSBUX1NRTFZhbHVlRnVu Y3Rpb246CiAJCWNhc2UgVF9YbWxFeHByOgorCQljYXNlIFRfSnNvbkV4cHI6CiAJCQkvKiB0 aGVzZSBhcmUgYWxsIGFjY2VwdGVkIGJ5IGZ1bmNfZXhwcl9jb21tb25fc3ViZXhwciAqLwog CQkJcmV0dXJuIHRydWU7CiAJCWRlZmF1bHQ6CkBAIC05Nzg2LDE3ICsxMDAyNSwxMDEgQEAg Z2V0X2Z1bmNfZXhwcihGdW5jRXhwciAqZXhwciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 LAogCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKIH0KIAorc3RhdGljIHZvaWQK K2dldF9qc29uX2NvbnN0cnVjdG9yX29wdGlvbnMoSnNvbkNvbnN0cnVjdG9yRXhwciAqY3Rv ciwgU3RyaW5nSW5mbyBidWYpCit7CisJaWYgKGN0b3ItPmFic2VudF9vbl9udWxsKQorCXsK KwkJaWYgKGN0b3ItPnR5cGUgPT0gSlNDVE9SX0pTT05fT0JKRUNUIHx8CisJCQljdG9yLT50 eXBlID09IEpTQ1RPUl9KU09OX09CSkVDVEFHRykKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIEFCU0VOVCBPTiBOVUxMIik7CisJfQorCWVsc2UKKwl7CisJCWlmIChjdG9y LT50eXBlID09IEpTQ1RPUl9KU09OX0FSUkFZIHx8CisJCQljdG9yLT50eXBlID09IEpTQ1RP Ul9KU09OX0FSUkFZQUdHKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgTlVM TCBPTiBOVUxMIik7CisJfQorCisJaWYgKGN0b3ItPnVuaXF1ZSkKKwkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICIgV0lUSCBVTklRVUUgS0VZUyIpOworCisJaWYgKCEoKGN0b3It PnR5cGUgPT0gSlNDVE9SX0pTT05fUEFSU0UgfHwKKwkJICAgY3Rvci0+dHlwZSA9PSBKU0NU T1JfSlNPTl9TQ0FMQVIpICYmCisJCSAgY3Rvci0+cmV0dXJuaW5nLT50eXBpZCA9PSBTUUxK U09OX1RZUEVfT0lEKCkpKQorCQlnZXRfanNvbl9yZXR1cm5pbmcoY3Rvci0+cmV0dXJuaW5n LCBidWYsIHRydWUpOworfQorCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fY29uc3RydWN0b3Io SnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAor CQkJCQkgYm9vbCBzaG93aW1wbGljaXQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0 LT5idWY7CisJY29uc3QgY2hhciAqZnVuY25hbWU7CisJaW50CQkJbmFyZ3M7CisJTGlzdENl bGwgICAqbGM7CisKKwlzd2l0Y2ggKGN0b3ItPnR5cGUpCisJeworCQljYXNlIEpTQ1RPUl9K U09OX1BBUlNFOgorCQkJZnVuY25hbWUgPSAiSlNPTiI7CisJCQlicmVhazsKKwkJY2FzZSBK U0NUT1JfSlNPTl9TQ0FMQVI6CisJCQlmdW5jbmFtZSA9ICJKU09OX1NDQUxBUiI7CisJCQli cmVhazsKKwkJY2FzZSBKU0NUT1JfSlNPTl9TRVJJQUxJWkU6CisJCQlmdW5jbmFtZSA9ICJK U09OX1NFUklBTElaRSI7CisJCQlicmVhazsKKwkJY2FzZSBKU0NUT1JfSlNPTl9PQkpFQ1Q6 CisJCQlmdW5jbmFtZSA9ICJKU09OX09CSkVDVCI7CisJCQlicmVhazsKKwkJY2FzZSBKU0NU T1JfSlNPTl9BUlJBWToKKwkJCWZ1bmNuYW1lID0gIkpTT05fQVJSQVkiOworCQkJYnJlYWs7 CisJCWNhc2UgSlNDVE9SX0pTT05fT0JKRUNUQUdHOgorCQkJcmV0dXJuIGdldF9qc29uX2Fn Z19jb25zdHJ1Y3RvcihjdG9yLCBjb250ZXh0LCAiSlNPTl9PQkpFQ1RBR0ciLCB0cnVlKTsK KwkJY2FzZSBKU0NUT1JfSlNPTl9BUlJBWUFHRzoKKwkJCXJldHVybiBnZXRfanNvbl9hZ2df Y29uc3RydWN0b3IoY3RvciwgY29udGV4dCwgIkpTT05fQVJSQVlBR0ciLCBmYWxzZSk7CisJ CWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uQ29uc3RydWN0b3JFeHBy VHlwZSAlZCIsIGN0b3ItPnR5cGUpOworCX0KKworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAi JXMoIiwgZnVuY25hbWUpOworCisJbmFyZ3MgPSAwOworCWZvcmVhY2gobGMsIGN0b3ItPmFy Z3MpCisJeworCQlpZiAobmFyZ3MgPiAwKQorCQl7CisJCQljb25zdCBjaGFyICpzZXAgPSBj dG9yLT50eXBlID09IEpTQ1RPUl9KU09OX09CSkVDVCAmJgorCQkJCShuYXJncyAlIDIpICE9 IDAgPyAiIDogIiA6ICIsICI7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBz ZXApOworCQl9CisKKwkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QobGMpLCBjb250 ZXh0LCB0cnVlKTsKKworCQluYXJncysrOworCX0KKworCWdldF9qc29uX2NvbnN0cnVjdG9y X29wdGlvbnMoY3RvciwgYnVmKTsKKworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiKSIpOwor fQorCisKIC8qCi0gKiBnZXRfYWdnX2V4cHIJCQktIFBhcnNlIGJhY2sgYW4gQWdncmVmIG5v ZGUKKyAqIGdldF9hZ2dfZXhwcl9oZWxwZXIJCQktIFBhcnNlIGJhY2sgYW4gQWdncmVmIG5v ZGUKICAqLwogc3RhdGljIHZvaWQKLWdldF9hZ2dfZXhwcihBZ2dyZWYgKmFnZ3JlZiwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LAotCQkJIEFnZ3JlZiAqb3JpZ2luYWxfYWdncmVmKQor Z2V0X2FnZ19leHByX2hlbHBlcihBZ2dyZWYgKmFnZ3JlZiwgZGVwYXJzZV9jb250ZXh0ICpj b250ZXh0LAorCQkJCQlBZ2dyZWYgKm9yaWdpbmFsX2FnZ3JlZiwgY29uc3QgY2hhciAqZnVu Y25hbWUsCisJCQkJCWNvbnN0IGNoYXIgKm9wdGlvbnMsIGJvb2wgaXNfanNvbl9vYmplY3Rh Z2cpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CiAJT2lkCQkJYXJndHlw ZXNbRlVOQ19NQVhfQVJHU107CiAJaW50CQkJbmFyZ3M7Ci0JYm9vbAkJdXNlX3ZhcmlhZGlj OworCWJvb2wJCXVzZV92YXJpYWRpYyA9IGZhbHNlOwogCiAJLyoKIAkgKiBGb3IgYSBjb21i aW5pbmcgYWdncmVnYXRlLCB3ZSBsb29rIHVwIGFuZCBkZXBhcnNlIHRoZSBjb3JyZXNwb25k aW5nCkBAIC05ODI2LDEzICsxMDE0OSwxNCBAQCBnZXRfYWdnX2V4cHIoQWdncmVmICphZ2dy ZWYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkvKiBFeHRyYWN0IHRoZSBhcmd1bWVu dCB0eXBlcyBhcyBzZWVuIGJ5IHRoZSBwYXJzZXIgKi8KIAluYXJncyA9IGdldF9hZ2dyZWdh dGVfYXJndHlwZXMoYWdncmVmLCBhcmd0eXBlcyk7CiAKKwlpZiAoIWZ1bmNuYW1lKQorCQlm dW5jbmFtZSA9IGdlbmVyYXRlX2Z1bmN0aW9uX25hbWUoYWdncmVmLT5hZ2dmbm9pZCwgbmFy Z3MsIE5JTCwKKwkJCQkJCQkJCQkgIGFyZ3R5cGVzLCBhZ2dyZWYtPmFnZ3ZhcmlhZGljLAor CQkJCQkJCQkJCSAgJnVzZV92YXJpYWRpYywKKwkJCQkJCQkJCQkgIGNvbnRleHQtPnNwZWNp YWxfZXhwcmtpbmQpOworCiAJLyogUHJpbnQgdGhlIGFnZ3JlZ2F0ZSBuYW1lLCBzY2hlbWEt cXVhbGlmaWVkIGlmIG5lZWRlZCAqLwotCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMoJXMi LAotCQkJCQkgZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZShhZ2dyZWYtPmFnZ2Zub2lkLCBuYXJn cywKLQkJCQkJCQkJCQkJTklMLCBhcmd0eXBlcywKLQkJCQkJCQkJCQkJYWdncmVmLT5hZ2d2 YXJpYWRpYywKLQkJCQkJCQkJCQkJJnVzZV92YXJpYWRpYywKLQkJCQkJCQkJCQkJY29udGV4 dC0+c3BlY2lhbF9leHBya2luZCksCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyglcyIs IGZ1bmNuYW1lLAogCQkJCQkgKGFnZ3JlZi0+YWdnZGlzdGluY3QgIT0gTklMKSA/ICJESVNU SU5DVCAiIDogIiIpOwogCiAJaWYgKEFHR0tJTkRfSVNfT1JERVJFRF9TRVQoYWdncmVmLT5h Z2draW5kKSkKQEAgLTk4NjgsNyArMTAxOTIsMTcgQEAgZ2V0X2FnZ19leHByKEFnZ3JlZiAq YWdncmVmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJaWYgKHRsZS0+cmVzanVu aykKIAkJCQkJY29udGludWU7CiAJCQkJaWYgKGkrKyA+IDApCi0JCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQl7CisJCQkJCWlmIChpc19qc29uX29iamVj dGFnZykKKwkJCQkJeworCQkJCQkJaWYgKGkgPiAyKQorCQkJCQkJCWJyZWFrOyAvKiBza2lw IEFCU0VOVCBPTiBOVUxMIGFuZCBXSVRIIFVOSVFVRSBhcmdzICovCisKKwkJCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIDogIik7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCQkJCX0KIAkJCQlpZiAo dXNlX3ZhcmlhZGljICYmIGkgPT0gbmFyZ3MpCiAJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiVkFSSUFESUMgIik7CiAJCQkJZ2V0X3J1bGVfZXhwcihhcmcsIGNvbnRleHQs IHRydWUpOwpAQCAtOTg4Miw2ICsxMDIxNiw5IEBAIGdldF9hZ2dfZXhwcihBZ2dyZWYgKmFn Z3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQl9CiAJfQogCisJaWYgKG9wdGlv bnMpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBvcHRpb25zKTsKKwogCWlmIChh Z2dyZWYtPmFnZ2ZpbHRlciAhPSBOVUxMKQogCXsKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsICIpIEZJTFRFUiAoV0hFUkUgIik7CkBAIC05ODkxLDYgKzEwMjI4LDE2IEBAIGdl dF9hZ2dfZXhwcihBZ2dyZWYgKmFnZ3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAog CWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKIH0KIAorLyoKKyAqIGdldF9hZ2df ZXhwcgkJCS0gUGFyc2UgYmFjayBhbiBBZ2dyZWYgbm9kZQorICovCitzdGF0aWMgdm9pZAor Z2V0X2FnZ19leHByKEFnZ3JlZiAqYWdncmVmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQs IEFnZ3JlZiAqb3JpZ2luYWxfYWdncmVmKQoreworCXJldHVybiBnZXRfYWdnX2V4cHJfaGVs cGVyKGFnZ3JlZiwgY29udGV4dCwgb3JpZ2luYWxfYWdncmVmLCBOVUxMLCBOVUxMLAorCQkJ CQkJCSAgIGZhbHNlKTsKK30KKwogLyoKICAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24g Zm9yIGdldF9hZ2dfZXhwcigpLiAgSXQncyB1c2VkIHdoZW4gd2UgZGVwYXJzZQogICogYSBj b21iaW5pbmcgQWdncmVmOyByZXNvbHZlX3NwZWNpYWxfdmFybm8gbG9jYXRlcyB0aGUgY29y cmVzcG9uZGluZyBwYXJ0aWFsCkBAIC05OTEwLDEwICsxMDI1NywxMiBAQCBnZXRfYWdnX2Nv bWJpbmVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIHZvaWQg KmNhbGxiYWNrX2FyZykKIH0KIAogLyoKLSAqIGdldF93aW5kb3dmdW5jX2V4cHIJLSBQYXJz ZSBiYWNrIGEgV2luZG93RnVuYyBub2RlCisgKiBnZXRfd2luZG93ZnVuY19leHByX2hlbHBl cgktIFBhcnNlIGJhY2sgYSBXaW5kb3dGdW5jIG5vZGUKICAqLwogc3RhdGljIHZvaWQKLWdl dF93aW5kb3dmdW5jX2V4cHIoV2luZG93RnVuYyAqd2Z1bmMsIGRlcGFyc2VfY29udGV4dCAq Y29udGV4dCkKK2dldF93aW5kb3dmdW5jX2V4cHJfaGVscGVyKFdpbmRvd0Z1bmMgKndmdW5j LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJCQkgICBjb25zdCBjaGFyICpmdW5j bmFtZSwgY29uc3QgY2hhciAqb3B0aW9ucywKKwkJCQkJCSAgIGJvb2wgaXNfanNvbl9vYmpl Y3RhZ2cpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CiAJT2lkCQkJYXJn dHlwZXNbRlVOQ19NQVhfQVJHU107CkBAIC05OTM3LDE2ICsxMDI4NiwzMCBAQCBnZXRfd2lu ZG93ZnVuY19leHByKFdpbmRvd0Z1bmMgKndmdW5jLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQpCiAJCW5hcmdzKys7CiAJfQogCi0JYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcygiLAot CQkJCQkgZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZSh3ZnVuYy0+d2luZm5vaWQsIG5hcmdzLAot CQkJCQkJCQkJCQlhcmduYW1lcywgYXJndHlwZXMsCi0JCQkJCQkJCQkJCWZhbHNlLCBOVUxM LAotCQkJCQkJCQkJCQljb250ZXh0LT5zcGVjaWFsX2V4cHJraW5kKSk7CisJaWYgKCFmdW5j bmFtZSkKKwkJZnVuY25hbWUgPSBnZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKHdmdW5jLT53aW5m bm9pZCwgbmFyZ3MsIGFyZ25hbWVzLAorCQkJCQkJCQkJCSAgYXJndHlwZXMsIGZhbHNlLCBO VUxMLAorCQkJCQkJCQkJCSAgY29udGV4dC0+c3BlY2lhbF9leHBya2luZCk7CisKKwlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzKCIsIGZ1bmNuYW1lKTsKKwogCS8qIHdpbnN0YXIgY2Fu IGJlIHNldCBvbmx5IGluIHplcm8tYXJndW1lbnQgYWdncmVnYXRlcyAqLwogCWlmICh3ZnVu Yy0+d2luc3RhcikKIAkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKicpOwogCWVsc2UK LQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSB3ZnVuYy0+YXJncywgY29udGV4dCwgdHJ1ZSk7 CisJeworCQlpZiAoaXNfanNvbl9vYmplY3RhZ2cpCisJCXsKKwkJCWdldF9ydWxlX2V4cHIo KE5vZGUgKikgbGluaXRpYWwod2Z1bmMtPmFyZ3MpLCBjb250ZXh0LCBmYWxzZSk7CisJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiA6ICIpOworCQkJZ2V0X3J1bGVfZXhwcigo Tm9kZSAqKSBsc2Vjb25kKHdmdW5jLT5hcmdzKSwgY29udGV4dCwgZmFsc2UpOworCQl9CisJ CWVsc2UKKwkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgd2Z1bmMtPmFyZ3MsIGNvbnRleHQs IHRydWUpOworCX0KKworCWlmIChvcHRpb25zKQorCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KGJ1Ziwgb3B0aW9ucyk7CiAKIAlpZiAod2Z1bmMtPmFnZ2ZpbHRlciAhPSBOVUxMKQogCXsK QEAgLTk5ODMsNiArMTAzNDYsMTUgQEAgZ2V0X3dpbmRvd2Z1bmNfZXhwcihXaW5kb3dGdW5j ICp3ZnVuYywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCX0KIH0KIAorLyoKKyAqIGdl dF93aW5kb3dmdW5jX2V4cHIJLSBQYXJzZSBiYWNrIGEgV2luZG93RnVuYyBub2RlCisgKi8K K3N0YXRpYyB2b2lkCitnZXRfd2luZG93ZnVuY19leHByKFdpbmRvd0Z1bmMgKndmdW5jLCBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCit7CisJcmV0dXJuIGdldF93aW5kb3dmdW5jX2V4 cHJfaGVscGVyKHdmdW5jLCBjb250ZXh0LCBOVUxMLCBOVUxMLCBmYWxzZSk7Cit9CisKIC8q CiAgKiBnZXRfZnVuY19zcWxfc3ludGF4CQktIFBhcnNlIGJhY2sgYSBTUUwtc3ludGF4IGZ1 bmN0aW9uIGNhbGwKICAqCkBAIC0xMDIyMyw2ICsxMDU5NSwzMSBAQCBnZXRfZnVuY19zcWxf c3ludGF4KEZ1bmNFeHByICpleHByLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJcmV0 dXJuIGZhbHNlOwogfQogCisvKgorICogZ2V0X2pzb25fYWdnX2NvbnN0cnVjdG9yIC0gUGFy c2UgYmFjayBhbiBhZ2dyZWdhdGUgSnNvbkNvbnN0cnVjdG9yRXhwciBub2RlCisgKi8KK3N0 YXRpYyB2b2lkCitnZXRfanNvbl9hZ2dfY29uc3RydWN0b3IoSnNvbkNvbnN0cnVjdG9yRXhw ciAqY3RvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAorCQkJCQkJIGNvbnN0IGNoYXIg KmZ1bmNuYW1lLCBib29sIGlzX2pzb25fb2JqZWN0YWdnKQoreworCVN0cmluZ0luZm9EYXRh IG9wdGlvbnM7CisKKwlpbml0U3RyaW5nSW5mbygmb3B0aW9ucyk7CisJZ2V0X2pzb25fY29u c3RydWN0b3Jfb3B0aW9ucyhjdG9yLCAmb3B0aW9ucyk7CisKKwlpZiAoSXNBKGN0b3ItPmZ1 bmMsIEFnZ3JlZikpCisJCXJldHVybiBnZXRfYWdnX2V4cHJfaGVscGVyKChBZ2dyZWYgKikg Y3Rvci0+ZnVuYywgY29udGV4dCwKKwkJCQkJCQkJICAgKEFnZ3JlZiAqKSBjdG9yLT5mdW5j LAorCQkJCQkJCQkgICBmdW5jbmFtZSwgb3B0aW9ucy5kYXRhLCBpc19qc29uX29iamVjdGFn Zyk7CisJZWxzZSBpZiAoSXNBKGN0b3ItPmZ1bmMsIFdpbmRvd0Z1bmMpKQorCQlyZXR1cm4g Z2V0X3dpbmRvd2Z1bmNfZXhwcl9oZWxwZXIoKFdpbmRvd0Z1bmMgKikgY3Rvci0+ZnVuYywg Y29udGV4dCwKKwkJCQkJCQkJCQkgIGZ1bmNuYW1lLCBvcHRpb25zLmRhdGEsCisJCQkJCQkJ CQkJICBpc19qc29uX29iamVjdGFnZyk7CisJZWxzZQorCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBKc29uQ29uc3RydWN0b3JFeHByIHVuZGVybHlpbmcgbm9kZSB0eXBlOiAlZCIsCisJCQkg bm9kZVRhZyhjdG9yLT5mdW5jKSk7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIGdldF9jb2Vy Y2lvbl9leHByCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggYjNmZDQyZTBmMS4uNWNh OTQ2ZmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC05Nyw2ICs5Nyw3IEBACiAjaW5j bHVkZSAidXRpbHMvYnl0ZWEuaCIKICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgogI2luY2x1 ZGUgInV0aWxzL2d1Y190YWJsZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbG9jYWxlLmgi CiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCkBAIC01NTgsNiArNTU5LDEyIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgd2FsX2NvbXByZXNzaW9uX29wdGlv bnNbXSA9IHsKIAl7TlVMTCwgMCwgZmFsc2V9CiB9OwogCitjb25zdCBzdHJ1Y3QgY29uZmln X2VudW1fZW50cnkgc3FsX2pzb25fdHlwZV9pbmZvW10gPSB7CisJeyJqc29uIiwgU1FMSlNP Tl9UWVBFX0pTT04sIGZhbHNlfSwKKwl7Impzb25iIiwgU1FMSlNPTl9UWVBFX0pTT05CLCBm YWxzZX0sCisJe05VTEwsIDAsIGZhbHNlfQorfTsKKwogLyoKICAqIE9wdGlvbnMgZm9yIGVu dW0gdmFsdWVzIHN0b3JlZCBpbiBvdGhlciBtb2R1bGVzCiAgKi8KQEAgLTUwMjUsNiArNTAz MiwxOCBAQCBzdGF0aWMgc3RydWN0IGNvbmZpZ19lbnVtIENvbmZpZ3VyZU5hbWVzRW51bVtd ID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsic3FsX2pzb24iLCBQR0Nf VVNFUlNFVCwgQ09NUEFUX09QVElPTlNfQ0xJRU5ULAorCQkJZ2V0dGV4dF9ub29wKCJTZXRz IHdoYXQgUG9zdGdyZVNRTCB0eXBlIHRvIHVzZSBhcyBhbiBpbXBsZW1lbnRhaW9uIG9mIFNR TCBKU09OIHR5cGUuIiksCisJCQlnZXR0ZXh0X25vb3AoIldoZW4gdHVybmVkIG9uLCBqc29u YiB0eXBlIGlzIG1hcHBlZCB0byBTUUwgSlNPTiB0eXBlLCAiCisJCQkJCQkgImpzb24gdHlw ZSBpcyBtYXBwZWQgdG8gSlNPTiBURVhUIHR5cGUuIikKKwkJfSwKKwkJJnNxbF9qc29uX3R5 cGUsCisJCVNRTEpTT05fVFlQRV9KU09OLAorCQlzcWxfanNvbl90eXBlX2luZm8sCisJCU5V TEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJLyogRW5kLW9mLWxpc3QgbWFya2VyICovCiAJewog CQl7TlVMTCwgMCwgMCwgTlVMTCwgTlVMTH0sIE5VTEwsIDAsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZQppbmRleCA4MTdkNWY1MzI0Li43MmI1NGE0ZGE5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC03NjgsNiArNzY4LDcg QEAKICMgLSBPdGhlciBQbGF0Zm9ybXMgYW5kIENsaWVudHMgLQogCiAjdHJhbnNmb3JtX251 bGxfZXF1YWxzID0gb2ZmCisjc3FsX2pzb24gPSBqc29uICMganNvbmIKIAogCiAjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3F1ZXJ5anVtYmxlLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMK aW5kZXggYTY3NDg3ZTVmZS4uNzEyMDgzNmM3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cXVlcnlqdW1ibGUuYwpAQCAtNzM3LDYgKzczNyw3NSBAQCBKdW1ibGVFeHByKEp1bWJsZVN0 YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJCQkJSnVtYmxlRXhwcihqc3RhdGUsIChOb2Rl ICopIGNvbmYtPmV4Y2xSZWxUbGlzdCk7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0pz b25Gb3JtYXQ6CisJCQl7CisJCQkJSnNvbkZvcm1hdCAqZm9ybWF0ID0gKEpzb25Gb3JtYXQg Kikgbm9kZTsKKworCQkJCUFQUF9KVU1CKGZvcm1hdC0+dHlwZSk7CisJCQkJQVBQX0pVTUIo Zm9ybWF0LT5lbmNvZGluZyk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25SZXR1 cm5pbmc6CisJCQl7CisJCQkJSnNvblJldHVybmluZyAqcmV0dXJuaW5nID0gKEpzb25SZXR1 cm5pbmcgKikgbm9kZTsKKworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAqKSByZXR1 cm5pbmctPmZvcm1hdCk7CisJCQkJQVBQX0pVTUIocmV0dXJuaW5nLT50eXBpZCk7CisJCQkJ QVBQX0pVTUIocmV0dXJuaW5nLT50eXBtb2QpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2Ug VF9Kc29uVmFsdWVFeHByOgorCQkJeworCQkJCUpzb25WYWx1ZUV4cHIgKmV4cHIgPSAoSnNv blZhbHVlRXhwciAqKSBub2RlOworCisJCQkJSnVtYmxlRXhwcihqc3RhdGUsIChOb2RlICop IGV4cHItPnJhd19leHByKTsKKwkJCQlKdW1ibGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgZXhw ci0+Zm9ybWF0dGVkX2V4cHIpOworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAqKSBl eHByLT5mb3JtYXQpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29uc3RydWN0 b3JFeHByOgorCQkJeworCQkJCUpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IgPSAoSnNvbkNv bnN0cnVjdG9yRXhwciAqKSBub2RlOworCisJCQkJSnVtYmxlRXhwcihqc3RhdGUsIChOb2Rl ICopIGN0b3ItPmZ1bmMpOworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAqKSBjdG9y LT5jb2VyY2lvbik7CisJCQkJSnVtYmxlRXhwcihqc3RhdGUsIChOb2RlICopIGN0b3ItPnJl dHVybmluZyk7CisJCQkJQVBQX0pVTUIoY3Rvci0+dHlwZSk7CisJCQkJQVBQX0pVTUIoY3Rv ci0+dW5pcXVlKTsKKwkJCQlBUFBfSlVNQihjdG9yLT5hYnNlbnRfb25fbnVsbCk7CisJCQl9 CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToKKwkJCXsKKwkJCQlKc29u SXNQcmVkaWNhdGUgKnByZWQgPSAoSnNvbklzUHJlZGljYXRlICopIG5vZGU7CisKKwkJCQlK dW1ibGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgcHJlZC0+ZXhwcik7CisJCQkJSnVtYmxlRXhw cihqc3RhdGUsIChOb2RlICopIHByZWQtPmZvcm1hdCk7CisJCQkJQVBQX0pVTUIocHJlZC0+ dW5pcXVlX2tleXMpOworCQkJCUFQUF9KVU1CKHByZWQtPnZhbHVlX3R5cGUpOworCQkJfQor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICAq amV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCUFQUF9KVU1CKGpleHByLT5vcCk7 CisJCQkJSnVtYmxlRXhwcihqc3RhdGUsIGpleHByLT5mb3JtYXR0ZWRfZXhwcik7CisJCQkJ SnVtYmxlRXhwcihqc3RhdGUsIGpleHByLT5wYXRoX3NwZWMpOworCQkJCWZvcmVhY2godGVt cCwgamV4cHItPnBhc3NpbmdfbmFtZXMpCisJCQkJeworCQkJCQlBUFBfSlVNQl9TVFJJTkco bGZpcnN0X25vZGUoU3RyaW5nLCB0ZW1wKS0+c3ZhbCk7CisJCQkJfQorCQkJCUp1bWJsZUV4 cHIoanN0YXRlLCAoTm9kZSAqKSBqZXhwci0+cGFzc2luZ192YWx1ZXMpOworCQkJCWlmIChq ZXhwci0+b25fZW1wdHkpCisJCQkJeworCQkJCQlBUFBfSlVNQihqZXhwci0+b25fZW1wdHkt PmJ0eXBlKTsKKwkJCQkJSnVtYmxlRXhwcihqc3RhdGUsIGpleHByLT5vbl9lbXB0eS0+ZGVm YXVsdF9leHByKTsKKwkJCQl9CisJCQkJQVBQX0pVTUIoamV4cHItPm9uX2Vycm9yLT5idHlw ZSk7CisJCQkJSnVtYmxlRXhwcihqc3RhdGUsIGpleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9l eHByKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTGlzdDoKIAkJCWZvcmVhY2godGVt cCwgKExpc3QgKikgbm9kZSkKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYWdncmVnYXRlLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRl LmRhdAppbmRleCAxMzdmNmVlZjY5Li43MTk0NmJhMzVmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19hZ2dyZWdhdGUuZGF0CkBAIC01NjEsMTQgKzU2MSwzNiBAQAogIyBqc29uCiB7IGFn Z2Zub2lkID0+ICdqc29uX2FnZycsIGFnZ3RyYW5zZm4gPT4gJ2pzb25fYWdnX3RyYW5zZm4n LAogICBhZ2dmaW5hbGZuID0+ICdqc29uX2FnZ19maW5hbGZuJywgYWdndHJhbnN0eXBlID0+ ICdpbnRlcm5hbCcgfSwKK3sgYWdnZm5vaWQgPT4gJ2pzb25fYWdnX3N0cmljdCcsIGFnZ3Ry YW5zZm4gPT4gJ2pzb25fYWdnX3N0cmljdF90cmFuc2ZuJywKKyAgYWdnZmluYWxmbiA9PiAn anNvbl9hZ2dfZmluYWxmbicsIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCiB7IGFn Z2Zub2lkID0+ICdqc29uX29iamVjdF9hZ2cnLCBhZ2d0cmFuc2ZuID0+ICdqc29uX29iamVj dF9hZ2dfdHJhbnNmbicsCiAgIGFnZ2ZpbmFsZm4gPT4gJ2pzb25fb2JqZWN0X2FnZ19maW5h bGZuJywgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5hbCcgfSwKK3sgYWdnZm5vaWQgPT4gJ2pz b25fb2JqZWN0X2FnZ191bmlxdWUnLAorICBhZ2d0cmFuc2ZuID0+ICdqc29uX29iamVjdF9h Z2dfdW5pcXVlX3RyYW5zZm4nLAorICBhZ2dmaW5hbGZuID0+ICdqc29uX29iamVjdF9hZ2df ZmluYWxmbicsIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCit7IGFnZ2Zub2lkID0+ ICdqc29uX29iamVjdF9hZ2dfc3RyaWN0JywKKyAgYWdndHJhbnNmbiA9PiAnanNvbl9vYmpl Y3RfYWdnX3N0cmljdF90cmFuc2ZuJywKKyAgYWdnZmluYWxmbiA9PiAnanNvbl9vYmplY3Rf YWdnX2ZpbmFsZm4nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAoreyBhZ2dmbm9p ZCA9PiAnanNvbl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3QnLAorICBhZ2d0cmFuc2ZuID0+ ICdqc29uX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdF90cmFuc2ZuJywKKyAgYWdnZmluYWxm biA9PiAnanNvbl9vYmplY3RfYWdnX2ZpbmFsZm4nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVy bmFsJyB9LAogCiAjIGpzb25iCiB7IGFnZ2Zub2lkID0+ICdqc29uYl9hZ2cnLCBhZ2d0cmFu c2ZuID0+ICdqc29uYl9hZ2dfdHJhbnNmbicsCiAgIGFnZ2ZpbmFsZm4gPT4gJ2pzb25iX2Fn Z19maW5hbGZuJywgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5hbCcgfSwKK3sgYWdnZm5vaWQg PT4gJ2pzb25iX2FnZ19zdHJpY3QnLCBhZ2d0cmFuc2ZuID0+ICdqc29uYl9hZ2dfc3RyaWN0 X3RyYW5zZm4nLAorICBhZ2dmaW5hbGZuID0+ICdqc29uYl9hZ2dfZmluYWxmbicsIGFnZ3Ry YW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCiB7IGFnZ2Zub2lkID0+ICdqc29uYl9vYmplY3Rf YWdnJywgYWdndHJhbnNmbiA9PiAnanNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuJywKICAgYWdn ZmluYWxmbiA9PiAnanNvbmJfb2JqZWN0X2FnZ19maW5hbGZuJywgYWdndHJhbnN0eXBlID0+ ICdpbnRlcm5hbCcgfSwKK3sgYWdnZm5vaWQgPT4gJ2pzb25iX29iamVjdF9hZ2dfdW5pcXVl JywKKyAgYWdndHJhbnNmbiA9PiAnanNvbmJfb2JqZWN0X2FnZ191bmlxdWVfdHJhbnNmbics CisgIGFnZ2ZpbmFsZm4gPT4gJ2pzb25iX29iamVjdF9hZ2dfZmluYWxmbicsIGFnZ3RyYW5z dHlwZSA9PiAnaW50ZXJuYWwnIH0sCit7IGFnZ2Zub2lkID0+ICdqc29uYl9vYmplY3RfYWdn X3N0cmljdCcsCisgIGFnZ3RyYW5zZm4gPT4gJ2pzb25iX29iamVjdF9hZ2dfc3RyaWN0X3Ry YW5zZm4nLAorICBhZ2dmaW5hbGZuID0+ICdqc29uYl9vYmplY3RfYWdnX2ZpbmFsZm4nLCBh Z2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAoreyBhZ2dmbm9pZCA9PiAnanNvbmJfb2Jq ZWN0X2FnZ191bmlxdWVfc3RyaWN0JywKKyAgYWdndHJhbnNmbiA9PiAnanNvbmJfb2JqZWN0 X2FnZ191bmlxdWVfc3RyaWN0X3RyYW5zZm4nLAorICBhZ2dmaW5hbGZuID0+ICdqc29uYl9v YmplY3RfYWdnX2ZpbmFsZm4nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAogCiAj IG9yZGVyZWQtc2V0IGFuZCBoeXBvdGhldGljYWwtc2V0IGFnZ3JlZ2F0ZXMKIHsgYWdnZm5v aWQgPT4gJ3BlcmNlbnRpbGVfZGlzYyhmbG9hdDgsYW55ZWxlbWVudCknLCBhZ2draW5kID0+ ICdvJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDcwMjRkYmUxMGEuLjlhMmRj NDQ5ZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODczMSw2ICs4NzMxLDEw IEBACiAgIHByb25hbWUgPT4gJ2pzb25fYWdnX3RyYW5zZm4nLCBwcm9pc3N0cmljdCA9PiAn ZicsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgYW55ZWxlbWVudCcsCiAgIHByb3NyYyA9PiAnanNv bl9hZ2dfdHJhbnNmbicgfSwKK3sgb2lkID0+ICc4MTczJywgZGVzY3IgPT4gJ2pzb24gYWdn cmVnYXRlIHRyYW5zaXRpb24gZnVuY3Rpb24nLAorICBwcm9uYW1lID0+ICdqc29uX2FnZ19z dHJpY3RfdHJhbnNmbicsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAorICBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5h bCBhbnllbGVtZW50JywKKyAgcHJvc3JjID0+ICdqc29uX2FnZ19zdHJpY3RfdHJhbnNmbicg fSwKIHsgb2lkID0+ICczMTc0JywgZGVzY3IgPT4gJ2pzb24gYWdncmVnYXRlIGZpbmFsIGZ1 bmN0aW9uJywKICAgcHJvbmFtZSA9PiAnanNvbl9hZ2dfZmluYWxmbicsIHByb2lzc3RyaWN0 ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnanNvbicsCiAgIHByb2FyZ3R5cGVzID0+ICdpbnRl cm5hbCcsIHByb3NyYyA9PiAnanNvbl9hZ2dfZmluYWxmbicgfSwKQEAgLTg3MzgsMTAgKzg3 NDIsMjYgQEAKICAgcHJvbmFtZSA9PiAnanNvbl9hZ2cnLCBwcm9raW5kID0+ICdhJywgcHJv aXNzdHJpY3QgPT4gJ2YnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4g J2pzb24nLCBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCcsCiAgIHByb3NyYyA9PiAnYWdn cmVnYXRlX2R1bW15JyB9LAoreyBvaWQgPT4gJzgxNzQnLCBkZXNjciA9PiAnYWdncmVnYXRl IGlucHV0IGludG8ganNvbicsCisgIHByb25hbWUgPT4gJ2pzb25fYWdnX3N0cmljdCcsIHBy b2tpbmQgPT4gJ2EnLCBwcm9pc3N0cmljdCA9PiAnZicsCisgIHByb3ZvbGF0aWxlID0+ICdz JywgcHJvcmV0dHlwZSA9PiAnanNvbicsIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50JywK KyAgcHJvc3JjID0+ICdhZ2dyZWdhdGVfZHVtbXknIH0sCiB7IG9pZCA9PiAnMzE4MCcsIGRl c2NyID0+ICdqc29uIG9iamVjdCBhZ2dyZWdhdGUgdHJhbnNpdGlvbiBmdW5jdGlvbicsCiAg IHByb25hbWUgPT4gJ2pzb25fb2JqZWN0X2FnZ190cmFuc2ZuJywgcHJvaXNzdHJpY3QgPT4g J2YnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ2ludGVybmFsJywg cHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueSBhbnknLAogICBwcm9zcmMgPT4gJ2pzb25f b2JqZWN0X2FnZ190cmFuc2ZuJyB9LAoreyBvaWQgPT4gJzgxNzUnLCBkZXNjciA9PiAnanNv biBvYmplY3QgYWdncmVnYXRlIHRyYW5zaXRpb24gZnVuY3Rpb24nLAorICBwcm9uYW1lID0+ ICdqc29uX29iamVjdF9hZ2dfc3RyaWN0X3RyYW5zZm4nLCBwcm9pc3N0cmljdCA9PiAnZics CisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLCBwcm9h cmd0eXBlcyA9PiAnaW50ZXJuYWwgYW55IGFueScsCisgIHByb3NyYyA9PiAnanNvbl9vYmpl Y3RfYWdnX3N0cmljdF90cmFuc2ZuJyB9LAoreyBvaWQgPT4gJzgxNzYnLCBkZXNjciA9PiAn anNvbiBvYmplY3QgYWdncmVnYXRlIHRyYW5zaXRpb24gZnVuY3Rpb24nLAorICBwcm9uYW1l ID0+ICdqc29uX29iamVjdF9hZ2dfdW5pcXVlX3RyYW5zZm4nLCBwcm9pc3N0cmljdCA9PiAn ZicsCisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgYW55IGFueScsCisgIHByb3NyYyA9PiAnanNvbl9v YmplY3RfYWdnX3VuaXF1ZV90cmFuc2ZuJyB9LAoreyBvaWQgPT4gJzgxNzcnLCBkZXNjciA9 PiAnanNvbiBvYmplY3QgYWdncmVnYXRlIHRyYW5zaXRpb24gZnVuY3Rpb24nLAorICBwcm9u YW1lID0+ICdqc29uX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdF90cmFuc2ZuJywgcHJvaXNz dHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2lu dGVybmFsJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueSBhbnknLAorICBwcm9zcmMg PT4gJ2pzb25fb2JqZWN0X2FnZ191bmlxdWVfc3RyaWN0X3RyYW5zZm4nIH0sCiB7IG9pZCA9 PiAnMzE5NicsIGRlc2NyID0+ICdqc29uIG9iamVjdCBhZ2dyZWdhdGUgZmluYWwgZnVuY3Rp b24nLAogICBwcm9uYW1lID0+ICdqc29uX29iamVjdF9hZ2dfZmluYWxmbicsIHByb2lzc3Ry aWN0ID0+ICdmJywKICAgcHJvcmV0dHlwZSA9PiAnanNvbicsIHByb2FyZ3R5cGVzID0+ICdp bnRlcm5hbCcsCkBAIC04NzUwLDYgKzg3NzAsMTkgQEAKICAgcHJvbmFtZSA9PiAnanNvbl9v YmplY3RfYWdnJywgcHJva2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJv dm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdqc29uJywgcHJvYXJndHlwZXMgPT4g J2FueSBhbnknLAogICBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKK3sgb2lkID0+ ICc4MTc4JywgZGVzY3IgPT4gJ2FnZ3JlZ2F0ZSBub24tTlVMTCBpbnB1dCBpbnRvIGEganNv biBvYmplY3QnLAorICBwcm9uYW1lID0+ICdqc29uX29iamVjdF9hZ2dfc3RyaWN0JywgcHJv a2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4gJ3Mn LCBwcm9yZXR0eXBlID0+ICdqc29uJywgcHJvYXJndHlwZXMgPT4gJ2FueSBhbnknLAorICBw cm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKK3sgb2lkID0+ICc4MTc5JywgZGVzY3Ig PT4gJ2FnZ3JlZ2F0ZSBpbnB1dCBpbnRvIGEganNvbiBvYmplY3Qgd2l0aCB1bmlxdWUga2V5 cycsCisgIHByb25hbWUgPT4gJ2pzb25fb2JqZWN0X2FnZ191bmlxdWUnLCBwcm9raW5kID0+ ICdhJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3Jl dHR5cGUgPT4gJ2pzb24nLCBwcm9hcmd0eXBlcyA9PiAnYW55IGFueScsCisgIHByb3NyYyA9 PiAnYWdncmVnYXRlX2R1bW15JyB9LAoreyBvaWQgPT4gJzgxODAnLAorICBkZXNjciA9PiAn YWdncmVnYXRlIG5vbi1OVUxMIGlucHV0IGludG8gYSBqc29uIG9iamVjdCB3aXRoIHVuaXF1 ZSBrZXlzJywKKyAgcHJvbmFtZSA9PiAnanNvbl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3Qn LCBwcm9raW5kID0+ICdhJywKKyAgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm92b2xhdGlsZSA9 PiAncycsIHByb3JldHR5cGUgPT4gJ2pzb24nLAorICBwcm9hcmd0eXBlcyA9PiAnYW55IGFu eScsIHByb3NyYyA9PiAnYWdncmVnYXRlX2R1bW15JyB9LAogeyBvaWQgPT4gJzMxOTgnLCBk ZXNjciA9PiAnYnVpbGQgYSBqc29uIGFycmF5IGZyb20gYW55IGlucHV0cycsCiAgIHByb25h bWUgPT4gJ2pzb25fYnVpbGRfYXJyYXknLCBwcm92YXJpYWRpYyA9PiAnYW55JywgcHJvaXNz dHJpY3QgPT4gJ2YnLAogICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2pz b24nLCBwcm9hcmd0eXBlcyA9PiAnYW55JywKQEAgLTk2MjIsNiArOTY1NSwxMCBAQAogICBw cm9uYW1lID0+ICdqc29uYl9hZ2dfdHJhbnNmbicsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJv dm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsIHByb2FyZ3R5 cGVzID0+ICdpbnRlcm5hbCBhbnllbGVtZW50JywKICAgcHJvc3JjID0+ICdqc29uYl9hZ2df dHJhbnNmbicgfSwKK3sgb2lkID0+ICc4MTgxJywgZGVzY3IgPT4gJ2pzb25iIGFnZ3JlZ2F0 ZSB0cmFuc2l0aW9uIGZ1bmN0aW9uJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfYWdnX3N0cmlj dF90cmFuc2ZuJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm92b2xhdGlsZSA9PiAncycsCisg IHByb3JldHR5cGUgPT4gJ2ludGVybmFsJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFu eWVsZW1lbnQnLAorICBwcm9zcmMgPT4gJ2pzb25iX2FnZ19zdHJpY3RfdHJhbnNmbicgfSwK IHsgb2lkID0+ICczMjY2JywgZGVzY3IgPT4gJ2pzb25iIGFnZ3JlZ2F0ZSBmaW5hbCBmdW5j dGlvbicsCiAgIHByb25hbWUgPT4gJ2pzb25iX2FnZ19maW5hbGZuJywgcHJvaXNzdHJpY3Qg PT4gJ2YnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ2pzb25iJywg cHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKQEAgLTk2MzAsMTAgKzk2NjcsMjkgQEAKICAg cHJvbmFtZSA9PiAnanNvbmJfYWdnJywgcHJva2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ ICdmJywKICAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdqc29uYicsIHBy b2FyZ3R5cGVzID0+ICdhbnllbGVtZW50JywKICAgcHJvc3JjID0+ICdhZ2dyZWdhdGVfZHVt bXknIH0sCit7IG9pZCA9PiAnODE4MicsIGRlc2NyID0+ICdhZ2dyZWdhdGUgaW5wdXQgaW50 byBqc29uYiBza2lwcGluZyBudWxscycsCisgIHByb25hbWUgPT4gJ2pzb25iX2FnZ19zdHJp Y3QnLCBwcm9raW5kID0+ICdhJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGls ZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2pzb25iJywgcHJvYXJndHlwZXMgPT4gJ2FueWVs ZW1lbnQnLAorICBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKIHsgb2lkID0+ICcz MjY4JywgZGVzY3IgPT4gJ2pzb25iIG9iamVjdCBhZ2dyZWdhdGUgdHJhbnNpdGlvbiBmdW5j dGlvbicsCiAgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9hZ2dfdHJhbnNmbicsIHByb2lz c3RyaWN0ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBlID0+ICdp bnRlcm5hbCcsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBhbnkgYW55JywKICAgcHJvc3Jj ID0+ICdqc29uYl9vYmplY3RfYWdnX3RyYW5zZm4nIH0sCit7IG9pZCA9PiAnODE4MycsIGRl c2NyID0+ICdqc29uYiBvYmplY3QgYWdncmVnYXRlIHRyYW5zaXRpb24gZnVuY3Rpb24nLAor ICBwcm9uYW1lID0+ICdqc29uYl9vYmplY3RfYWdnX3N0cmljdF90cmFuc2ZuJywgcHJvaXNz dHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2lu dGVybmFsJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueSBhbnknLAorICBwcm9z cmMgPT4gJ2pzb25iX29iamVjdF9hZ2dfc3RyaWN0X3RyYW5zZm4nIH0sCit7IG9pZCA9PiAn ODE4NCcsIGRlc2NyID0+ICdqc29uYiBvYmplY3QgYWdncmVnYXRlIHRyYW5zaXRpb24gZnVu Y3Rpb24nLAorICBwcm9uYW1lID0+ICdqc29uYl9vYmplY3RfYWdnX3VuaXF1ZV90cmFuc2Zu JywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5 cGUgPT4gJ2ludGVybmFsJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueSBhbnkn LAorICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9hZ2dfdW5pcXVlX3RyYW5zZm4nIH0sCit7 IG9pZCA9PiAnODE4NScsIGRlc2NyID0+ICdqc29uYiBvYmplY3QgYWdncmVnYXRlIHRyYW5z aXRpb24gZnVuY3Rpb24nLAorICBwcm9uYW1lID0+ICdqc29uYl9vYmplY3RfYWdnX3VuaXF1 ZV9zdHJpY3RfdHJhbnNmbicsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUg PT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsCisgIHByb2FyZ3R5cGVzID0+ICdp bnRlcm5hbCBhbnkgYW55JywKKyAgcHJvc3JjID0+ICdqc29uYl9vYmplY3RfYWdnX3VuaXF1 ZV9zdHJpY3RfdHJhbnNmbicgfSwKIHsgb2lkID0+ICczMjY5JywgZGVzY3IgPT4gJ2pzb25i IG9iamVjdCBhZ2dyZWdhdGUgZmluYWwgZnVuY3Rpb24nLAogICBwcm9uYW1lID0+ICdqc29u Yl9vYmplY3RfYWdnX2ZpbmFsZm4nLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3ZvbGF0aWxl ID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnanNvbmInLCBwcm9hcmd0eXBlcyA9PiAnaW50 ZXJuYWwnLApAQCAtOTY0Miw2ICs5Njk4LDIwIEBACiAgIHByb25hbWUgPT4gJ2pzb25iX29i amVjdF9hZ2cnLCBwcm9raW5kID0+ICdhJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9y ZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ICdhbnkgYW55JywKICAgcHJvc3Jj ID0+ICdhZ2dyZWdhdGVfZHVtbXknIH0sCit7IG9pZCA9PiAnODE4NicsIGRlc2NyID0+ICdh Z2dyZWdhdGUgbm9uLU5VTEwgaW5wdXRzIGludG8ganNvbmIgb2JqZWN0JywKKyAgcHJvbmFt ZSA9PiAnanNvbmJfb2JqZWN0X2FnZ19zdHJpY3QnLCBwcm9raW5kID0+ICdhJywgcHJvaXNz dHJpY3QgPT4gJ2YnLAorICBwcm9yZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ ICdhbnkgYW55JywKKyAgcHJvc3JjID0+ICdhZ2dyZWdhdGVfZHVtbXknIH0sCit7IG9pZCA9 PiAnODE4NycsCisgIGRlc2NyID0+ICdhZ2dyZWdhdGUgaW5wdXRzIGludG8ganNvbmIgb2Jq ZWN0IGNoZWNraW5nIGtleSB1bmlxdWVuZXNzJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2Jq ZWN0X2FnZ191bmlxdWUnLCBwcm9raW5kID0+ICdhJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAor ICBwcm9yZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ICdhbnkgYW55JywKKyAg cHJvc3JjID0+ICdhZ2dyZWdhdGVfZHVtbXknIH0sCit7IG9pZCA9PiAnODE4OCcsCisgIGRl c2NyID0+ICdhZ2dyZWdhdGUgbm9uLU5VTEwgaW5wdXRzIGludG8ganNvbmIgb2JqZWN0IGNo ZWNraW5nIGtleSB1bmlxdWVuZXNzJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2Fn Z191bmlxdWVfc3RyaWN0JywgcHJva2luZCA9PiAnYScsCisgIHByb2lzc3RyaWN0ID0+ICdm JywgcHJvcmV0dHlwZSA9PiAnanNvbmInLCBwcm9hcmd0eXBlcyA9PiAnYW55IGFueScsCisg IHByb3NyYyA9PiAnYWdncmVnYXRlX2R1bW15JyB9LAogeyBvaWQgPT4gJzMyNzEnLCBkZXNj ciA9PiAnYnVpbGQgYSBqc29uYiBhcnJheSBmcm9tIGFueSBpbnB1dHMnLAogICBwcm9uYW1l ID0+ICdqc29uYl9idWlsZF9hcnJheScsIHByb3ZhcmlhZGljID0+ICdhbnknLCBwcm9pc3N0 cmljdCA9PiAnZicsCiAgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnanNv bmInLCBwcm9hcmd0eXBlcyA9PiAnYW55JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmlu ZGV4IDU2YTg5ZWJhZmIuLjljZThkZjE3ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIu aApAQCAtMjEsNiArMjEsNyBAQAogc3RydWN0IEV4cHJFdmFsU3RlcDsKIHN0cnVjdCBTdWJz Y3JpcHRpbmdSZWZTdGF0ZTsKIHN0cnVjdCBTY2FsYXJBcnJheU9wRXhwckhhc2hUYWJsZTsK K3N0cnVjdCBKc29uYlZhbHVlOwogCiAvKiBCaXRzIGluIEV4cHJTdGF0ZS0+ZmxhZ3MgKHNl ZSBhbHNvIGV4ZWNub2Rlcy5oIGZvciBwdWJsaWMgZmxhZyBiaXRzKTogKi8KIC8qIGV4cHJl c3Npb24ncyBpbnRlcnByZXRlciBoYXMgYmVlbiBpbml0aWFsaXplZCAqLwpAQCAtMjM5LDYg KzI0MCw5IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9HUk9VUElOR19GVU5D LAogCUVFT1BfV0lORE9XX0ZVTkMsCiAJRUVPUF9TVUJQTEFOLAorCUVFT1BfSlNPTl9DT05T VFJVQ1RPUiwKKwlFRU9QX0lTX0pTT04sCisJRUVPUF9KU09ORVhQUiwKIAogCS8qIGFnZ3Jl Z2F0aW9uIHJlbGF0ZWQgbm9kZXMgKi8KIAlFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUs CkBAIC02NjgsNiArNjcyLDcyIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJ aW50CQkJdHJhbnNubzsKIAkJCWludAkJCXNldG9mZjsKIAkJfQkJCWFnZ190cmFuczsKKwor CQkvKiBmb3IgRUVPUF9KU09OX0NPTlNUUlVDVE9SICovCisJCXN0cnVjdAorCQl7CisJCQlK c29uQ29uc3RydWN0b3JFeHByICpjb25zdHJ1Y3RvcjsKKwkJCURhdHVtCSAgICphcmdfdmFs dWVzOworCQkJYm9vbAkgICAqYXJnX251bGxzOworCQkJT2lkCQkgICAqYXJnX3R5cGVzOwor CQkJc3RydWN0CisJCQl7CisJCQkJaW50CQkJY2F0ZWdvcnk7CisJCQkJT2lkCQkJb3V0ZnVu Y2lkOworCQkJfQkJICAgKmFyZ190eXBlX2NhY2hlOwkJLyogY2FjaGUgZm9yIGRhdHVtX3Rv X2pzb25bYl0oKSAqLworCQkJaW50CQkJbmFyZ3M7CisJCX0JCQlqc29uX2NvbnN0cnVjdG9y OworCisJCS8qIGZvciBFRU9QX0lTX0pTT04gKi8KKwkJc3RydWN0CisJCXsKKwkJCQkJSnNv bklzUHJlZGljYXRlICpwcmVkOwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8KKwkJ fQkJCWlzX2pzb247CisKKwkJLyogZm9yIEVFT1BfSlNPTkVYUFIgKi8KKwkJc3RydWN0CisJ CXsKKwkJCUpzb25FeHByICAgKmpzZXhwcjsJCQkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5v ZGUgKi8KKworCQkJc3RydWN0CisJCQl7CisJCQkJRm1nckluZm8JZnVuYzsJCS8qIHR5cGlu cHV0IGZ1bmN0aW9uIGZvciBvdXRwdXQgdHlwZSAqLworCQkJCU9pZAkJCXR5cGlvcGFyYW07 CisJCQl9IGlucHV0OwkJCQkJLyogSS9PIGluZm8gZm9yIG91dHB1dCB0eXBlICovCisKKwkJ CU51bGxhYmxlRGF0dW0KKwkJCQkJICAgKmZvcm1hdHRlZF9leHByLAkJLyogZm9ybWF0dGVk IGNvbnRleHQgaXRlbSB2YWx1ZSAqLworCQkJCQkgICAqcmVzX2V4cHIsCQkJLyogcmVzdWx0 IGl0ZW0gKi8KKwkJCQkJICAgKmNvZXJjaW9uX2V4cHIsCQkvKiBpbnB1dCBmb3IgSlNPTiBp dGVtIGNvZXJjaW9uICovCisJCQkJCSAgICpwYXRoc3BlYzsJCQkvKiBwYXRoIHNwZWNpZmlj YXRpb24gdmFsdWUgKi8KKworCQkJRXhwclN0YXRlICAqcmVzdWx0X2V4cHI7CQkvKiBjb2Vy Y2VkIHRvIG91dHB1dCB0eXBlICovCisJCQlFeHByU3RhdGUgICpkZWZhdWx0X29uX2VtcHR5 OwkvKiBPTiBFTVBUWSBERUZBVUxUIGV4cHJlc3Npb24gKi8KKwkJCUV4cHJTdGF0ZSAgKmRl ZmF1bHRfb25fZXJyb3I7CS8qIE9OIEVSUk9SIERFRkFVTFQgZXhwcmVzc2lvbiAqLworCQkJ TGlzdAkgICAqYXJnczsJCQkJLyogcGFzc2luZyBhcmd1bWVudHMgKi8KKworCQkJdm9pZAkg ICAqY2FjaGU7CQkJCS8qIGNhY2hlIGZvciBqc29uX3BvcHVsYXRlX3R5cGUoKSAqLworCisJ CQlzdHJ1Y3QgSnNvbkNvZXJjaW9uc1N0YXRlCisJCQl7CisJCQkJc3RydWN0IEpzb25Db2Vy Y2lvblN0YXRlCisJCQkJeworCQkJCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uOwkJLyogY29l cmNpb24gZXhwcmVzc2lvbiAqLworCQkJCQlFeHByU3RhdGUgICplc3RhdGU7CS8qIGNvZXJj aW9uIGV4cHJlc3Npb24gc3RhdGUgKi8KKwkJCQl9IAkJCW51bGwsCisJCQkJCQkJc3RyaW5n LAorCQkJCQkJCW51bWVyaWMsCisJCQkJCQkJYm9vbGVhbiwKKwkJCQkJCQlkYXRlLAorCQkJ CQkJCXRpbWUsCisJCQkJCQkJdGltZXR6LAorCQkJCQkJCXRpbWVzdGFtcCwKKwkJCQkJCQl0 aW1lc3RhbXB0eiwKKwkJCQkJCQljb21wb3NpdGU7CisJCQl9CQkJY29lcmNpb25zOwkvKiBz dGF0ZXMgZm9yIGNvZXJjaW9uIGZyb20gU1FML0pTT04gaXRlbQorCQkJCQkJCQkJICogdHlw ZXMgZGlyZWN0bHkgdG8gdGhlIG91dHB1dCB0eXBlICovCisJCX0JCQlqc29uZXhwcjsKKwog CX0JCQlkOwogfSBFeHByRXZhbFN0ZXA7CiAKQEAgLTc2Miw2ICs4MzIsNyBAQCBleHRlcm4g dm9pZCBFeGVjRXZhbEhhc2hlZFNjYWxhckFycmF5T3AoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwKIGV4dGVybiB2b2lkIEV4ZWNFdmFsQ29uc3RyYWludE5vdE51bGwo RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVj RXZhbENvbnN0cmFpbnRDaGVjayhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsWG1sRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wKTsKK2V4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbklzUHJlZGljYXRlKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOwogZXh0ZXJuIHZvaWQgRXhlY0V2 YWxHcm91cGluZ0Z1bmMoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBl eHRlcm4gdm9pZCBFeGVjRXZhbFN1YlBsYW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxT dGVwICpvcCwKIAkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwpAQCAtNzY5LDYgKzg0 MCwxNiBAQCBleHRlcm4gdm9pZCBFeGVjRXZhbFdob2xlUm93VmFyKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCk7 CiBleHRlcm4gdm9pZCBFeGVjRXZhbFN5c1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wLAogCQkJCQkJICAgRXhwckNvbnRleHQgKmVjb250ZXh0LCBUdXBsZVRhYmxl U2xvdCAqc2xvdCk7CitleHRlcm4gdm9pZCBFeGVjRXZhbEpzb25Db25zdHJ1Y3RvcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJCQkJRXhwckNvbnRleHQg KmVjb250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbihFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCk7Citl eHRlcm4gRGF0dW0gRXhlY1ByZXBhcmVKc29uSXRlbUNvZXJjaW9uKHN0cnVjdCBKc29uYlZh bHVlICppdGVtLAorCQkJCQkJCQkJCSBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJ CQkJCQkJIHN0cnVjdCBKc29uQ29lcmNpb25zU3RhdGUgKmNvZXJjaW9ucywKKwkJCQkJCQkJ CQkgc3RydWN0IEpzb25Db2VyY2lvblN0YXRlICoqcGpjc3RhdGUpOworZXh0ZXJuIGJvb2wg RXhlY0V2YWxKc29uTmVlZHNTdWJUcmFuc2FjdGlvbihKc29uRXhwciAqanNleHByLAorCQkJ CQkJCQkJCQlzdHJ1Y3QgSnNvbkNvZXJjaW9uc1N0YXRlICopOwogCiBleHRlcm4gdm9pZCBF eGVjQWdnSW5pdEdyb3VwKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFucyBw ZXJ0cmFucywgQWdnU3RhdGVQZXJHcm91cCBwZXJncm91cCwKIAkJCQkJCQkgRXhwckNvbnRl eHQgKmFnZ2NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMzQ0Mzk5 ZjZhOC4uNTM4ZDdlY2EwNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0yNjMs NiArMjYzLDggQEAgRXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSkKICAqLwogZXh0ZXJu IEV4cHJTdGF0ZSAqRXhlY0luaXRFeHByKEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50 KTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0RXhwcldpdGhQYXJhbXMoRXhwciAqbm9k ZSwgUGFyYW1MaXN0SW5mbyBleHRfcGFyYW1zKTsKK2V4dGVybiBFeHByU3RhdGUgKkV4ZWNJ bml0RXhwcldpdGhDYXNlVmFsdWUoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQsCisJ CQkJCQkgIERhdHVtICpjYXNldmFsLCBib29sICpjYXNlbnVsbCk7CiBleHRlcm4gRXhwclN0 YXRlICpFeGVjSW5pdFF1YWwoTGlzdCAqcXVhbCwgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0 ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRDaGVjayhMaXN0ICpxdWFsLCBQbGFuU3RhdGUgKnBh cmVudCk7CiBleHRlcm4gTGlzdCAqRXhlY0luaXRFeHByTGlzdChMaXN0ICpub2RlcywgUGxh blN0YXRlICpwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1 bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCBmZTE3MzEwMWQx Li4zZTI1MjA2N2E5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3Mu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApAQCAtMTA2LDQgKzEwNiwx NCBAQCBleHRlcm4gR3JvdXBpbmdTZXQgKm1ha2VHcm91cGluZ1NldChHcm91cGluZ1NldEtp bmQga2luZCwgTGlzdCAqY29udGVudCwgaW50IGxvYwogCiBleHRlcm4gVmFjdXVtUmVsYXRp b24gKm1ha2VWYWN1dW1SZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIE9pZCBvaWQsIExp c3QgKnZhX2NvbHMpOwogCitleHRlcm4gSnNvbkZvcm1hdCAqbWFrZUpzb25Gb3JtYXQoSnNv bkZvcm1hdFR5cGUgdHlwZSwgSnNvbkVuY29kaW5nIGVuY29kaW5nLAorCQkJCQkJCQkgIGlu dCBsb2NhdGlvbik7CitleHRlcm4gSnNvblZhbHVlRXhwciAqbWFrZUpzb25WYWx1ZUV4cHIo RXhwciAqZXhwciwgSnNvbkZvcm1hdCAqZm9ybWF0KTsKK2V4dGVybiBKc29uQmVoYXZpb3Ig Km1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2RlICpleHByKTsK K2V4dGVybiBOb2RlICptYWtlSnNvbktleVZhbHVlKE5vZGUgKmtleSwgTm9kZSAqdmFsdWUp OworZXh0ZXJuIE5vZGUgKm1ha2VKc29uSXNQcmVkaWNhdGUoTm9kZSAqZXhwciwgSnNvbkZv cm1hdCAqZm9ybWF0LAorCQkJCQkJCQkgSnNvblZhbHVlVHlwZSB2dHlwZSwgYm9vbCB1bmlx dWVfa2V5cywKKwkJCQkJCQkJIGludCBsb2NhdGlvbik7CitleHRlcm4gSnNvbkVuY29kaW5n IG1ha2VKc29uRW5jb2RpbmcoY2hhciAqbmFtZSk7CisKICNlbmRpZgkJCQkJCQkvKiBNQUtF RlVOQ19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCBkYTM1ZjJjMjcyLi40ZTgxYTNlODU5IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmgKQEAgLTIwMSw2ICsyMDEsMTYgQEAgdHlwZWRlZiBlbnVtIE5vZGVU YWcKIAlUX0Zyb21FeHByLAogCVRfT25Db25mbGljdEV4cHIsCiAJVF9JbnRvQ2xhdXNlLAor CVRfSnNvbkZvcm1hdCwKKwlUX0pzb25SZXR1cm5pbmcsCisJVF9Kc29uVmFsdWVFeHByLAor CVRfSnNvblBhcnNlRXhwciwKKwlUX0pzb25TY2FsYXJFeHByLAorCVRfSnNvblNlcmlhbGl6 ZUV4cHIsCisJVF9Kc29uQ29uc3RydWN0b3JFeHByLAorCVRfSnNvbkV4cHIsCisJVF9Kc29u Q29lcmNpb24sCisJVF9Kc29uSXRlbUNvZXJjaW9ucywKIAogCS8qCiAJICogVEFHUyBGT1Ig RVhQUkVTU0lPTiBTVEFURSBOT0RFUyAoZXhlY25vZGVzLmgpCkBAIC00OTAsNiArNTAwLDIw IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9WYWN1dW1SZWxhdGlvbiwKIAlUX1B1Ymxp Y2F0aW9uT2JqU3BlYywKIAlUX1B1YmxpY2F0aW9uVGFibGUsCisJVF9Kc29uT2JqZWN0Q29u c3RydWN0b3IsCisJVF9Kc29uQXJyYXlDb25zdHJ1Y3RvciwKKwlUX0pzb25BcnJheVF1ZXJ5 Q29uc3RydWN0b3IsCisJVF9Kc29uQWdnQ29uc3RydWN0b3IsCisJVF9Kc29uT2JqZWN0QWdn LAorCVRfSnNvbkFycmF5QWdnLAorCVRfSnNvbkZ1bmNFeHByLAorCVRfSnNvbklzUHJlZGlj YXRlLAorCVRfSnNvbkV4aXN0c1ByZWRpY2F0ZSwKKwlUX0pzb25Db21tb24sCisJVF9Kc29u QXJndW1lbnQsCisJVF9Kc29uS2V5VmFsdWUsCisJVF9Kc29uQmVoYXZpb3IsCisJVF9Kc29u T3V0cHV0LAogCiAJLyoKIAkgKiBUQUdTIEZPUiBSRVBMSUNBVElPTiBHUkFNTUFSIFBBUlNF IE5PREVTIChyZXBsbm9kZXMuaCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAzZTli ZGM3ODFmLi4yN2VjNDBkZDdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNTUx LDYgKzE1NTEsMjA5IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJUcmFuc2l0aW9uCiAJYm9v bAkJaXNUYWJsZTsKIH0gVHJpZ2dlclRyYW5zaXRpb247CiAKKy8qIE5vZGVzIGZvciBTUUwv SlNPTiBzdXBwb3J0ICovCisKKy8qCisgKiBKc29uUXVvdGVzIC0KKyAqCQlyZXByZXNlbnRh dGlvbiBvZiBbS0VFUHxPTUlUXSBRVU9URVMgY2xhdXNlIGZvciBKU09OX1FVRVJZKCkKKyAq LwordHlwZWRlZiBlbnVtIEpzb25RdW90ZXMKK3sKKwlKU19RVU9URVNfVU5TUEVDLAkJCS8q IHVuc3BlY2lmaWVkICovCisJSlNfUVVPVEVTX0tFRVAsCQkJCS8qIEtFRVAgUVVPVEVTICov CisJSlNfUVVPVEVTX09NSVQJCQkJLyogT01JVCBRVU9URVMgKi8KK30gSnNvblF1b3RlczsK KworLyoKKyAqIEpzb25QYXRoU3BlYyAtCisgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBw YXRoIGNvbnN0YW50CisgKi8KK3R5cGVkZWYgY2hhciAqSnNvblBhdGhTcGVjOworCisvKgor ICogSnNvbk91dHB1dCAtCisgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBvdXRwdXQgY2xh dXNlIChSRVRVUk5JTkcgdHlwZSBbRk9STUFUIGZvcm1hdF0pCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25PdXRwdXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVR5cGVOYW1lICAgKnR5cGVO YW1lOwkJLyogUkVUVVJOSU5HIHR5cGUgbmFtZSwgaWYgc3BlY2lmaWVkICovCisJSnNvblJl dHVybmluZyAqcmV0dXJuaW5nOwkvKiBSRVRVUk5JTkcgRk9STUFUIGNsYXVzZSBhbmQgdHlw ZSBPaWRzICovCit9IEpzb25PdXRwdXQ7CisKKy8qCisgKiBKc29uQXJndW1lbnQgLQorICoJ CXJlcHJlc2VudGF0aW9uIG9mIGFyZ3VtZW50IGZyb20gSlNPTiBQQVNTSU5HIGNsYXVzZQor ICovCit0eXBlZGVmIHN0cnVjdCBKc29uQXJndW1lbnQKK3sKKwlOb2RlVGFnCQl0eXBlOwor CUpzb25WYWx1ZUV4cHIgKnZhbDsJCQkvKiBhcmd1bWVudCB2YWx1ZSBleHByZXNzaW9uICov CisJY2hhcgkgICAqbmFtZTsJCQkvKiBhcmd1bWVudCBuYW1lICovCit9IEpzb25Bcmd1bWVu dDsKKworLyoKKyAqIEpzb25Db21tb24gLQorICoJCXJlcHJlc2VudGF0aW9uIG9mIGNvbW1v biBzeW50YXggb2YgZnVuY3Rpb25zIHVzaW5nIEpTT04gcGF0aAorICovCit0eXBlZGVmIHN0 cnVjdCBKc29uQ29tbW9uCit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uVmFsdWVFeHByICpl eHByOwkJLyogY29udGV4dCBpdGVtIGV4cHJlc3Npb24gKi8KKwlOb2RlCSAgICpwYXRoc3Bl YzsJCS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uIGV4cHJlc3Npb24gKi8KKwljaGFyCSAg ICpwYXRobmFtZTsJCS8qIHBhdGggbmFtZSwgaWYgYW55ICovCisJTGlzdAkgICAqcGFzc2lu ZzsJCS8qIGxpc3Qgb2YgUEFTU0lORyBjbGF1c2UgYXJndW1lbnRzLCBpZiBhbnkgKi8KKwlp bnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICov Cit9IEpzb25Db21tb247CisKKy8qCisgKiBKc29uRnVuY0V4cHIgLQorICoJCXVudHJhbnNm b3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTiBmdW5jdGlvbiBleHByZXNzaW9ucworICov Cit0eXBlZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpz b25FeHByT3AJb3A7CQkJCS8qIGV4cHJlc3Npb24gdHlwZSAqLworCUpzb25Db21tb24gKmNv bW1vbjsJCQkvKiBjb21tb24gc3ludGF4ICovCisJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8q IG91dHB1dCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLworCUpzb25CZWhhdmlvciAqb25fZW1w dHk7CQkvKiBPTiBFTVBUWSBiZWhhdmlvciwgaWYgc3BlY2lmaWVkICovCisJSnNvbkJlaGF2 aW9yICpvbl9lcnJvcjsJCS8qIE9OIEVSUk9SIGJlaGF2aW9yLCBpZiBzcGVjaWZpZWQgKi8K KwlKc29uV3JhcHBlcgl3cmFwcGVyOwkJLyogYXJyYXkgd3JhcHBlciBiZWhhdmlvciAoSlNP Tl9RVUVSWSBvbmx5KSAqLworCWJvb2wJCW9taXRfcXVvdGVzOwkvKiBvbWl0IG9yIGtlZXAg cXVvdGVzPyAoSlNPTl9RVUVSWSBvbmx5KSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9r ZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvbkZ1bmNFeHByOworCisv KgorICogSnNvbktleVZhbHVlIC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9u IG9mIEpTT04gb2JqZWN0IGtleS12YWx1ZSBwYWlyIGZvcgorICoJCUpTT05fT0JKRUNUKCkg YW5kIEpTT05fT0JKRUNUQUdHKCkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbktleVZhbHVl Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlFeHByCSAgICprZXk7CQkJLyoga2V5IGV4cHJlc3Np b24gKi8KKwlKc29uVmFsdWVFeHByICp2YWx1ZTsJCS8qIEpTT04gdmFsdWUgZXhwcmVzc2lv biAqLworfSBKc29uS2V5VmFsdWU7CisKKy8qCisgKiBKc29uUGFyc2VFeHByIC0KKyAqCQl1 bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT04oKQorICovCit0eXBlZGVmIHN0 cnVjdCBKc29uUGFyc2VFeHByCit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uVmFsdWVFeHBy ICpleHByOwkJLyogc3RyaW5nIGV4cHJlc3Npb24gKi8KKwlKc29uT3V0cHV0ICpvdXRwdXQ7 CQkJLyogUkVUVVJOSU5HIGNsYXVzZSwgaWYgc3BlY2lmaWVkICovCisJYm9vbAkJdW5pcXVl X2tleXM7CS8qIFdJVEggVU5JUVVFIEtFWVM/ICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uUGFyc2VFeHByOwor CisvKgorICogSnNvblNjYWxhckV4cHIgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50 YXRpb24gb2YgSlNPTl9TQ0FMQVIoKQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uU2NhbGFy RXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJRXhwcgkgICAqZXhwcjsJCQkvKiBzY2FsYXIg ZXhwcmVzc2lvbiAqLworCUpzb25PdXRwdXQgKm91dHB1dDsJCQkvKiBSRVRVUk5JTkcgY2xh dXNlLCBpZiBzcGVjaWZpZWQgKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IEpzb25TY2FsYXJFeHByOworCisvKgorICog SnNvblNlcmlhbGl6ZUV4cHIgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24g b2YgSlNPTl9TRVJJQUxJWkUoKSBmdW5jdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBKc29u U2VyaWFsaXplRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvblZhbHVlRXhwciAqZXhw cjsJCS8qIGpzb24gdmFsdWUgZXhwcmVzc2lvbiAqLworCUpzb25PdXRwdXQgKm91dHB1dDsJ CQkvKiBSRVRVUk5JTkcgY2xhdXNlLCBpZiBzcGVjaWZpZWQgICovCisJaW50CQkJbG9jYXRp b247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uU2Vy aWFsaXplRXhwcjsKKworLyoKKyAqIEpzb25PYmplY3RDb25zdHJ1Y3RvciAtCisgKgkJdW50 cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX09CSkVDVCgpIGNvbnN0cnVjdG9y CisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25PYmplY3RDb25zdHJ1Y3RvcgoreworCU5vZGVU YWcJCXR5cGU7CisJTGlzdAkgICAqZXhwcnM7CQkJLyogbGlzdCBvZiBKc29uS2V5VmFsdWUg cGFpcnMgKi8KKwlKc29uT3V0cHV0ICpvdXRwdXQ7CQkJLyogUkVUVVJOSU5HIGNsYXVzZSwg aWYgc3BlY2lmaWVkICAqLworCWJvb2wJCWFic2VudF9vbl9udWxsOwkvKiBza2lwIE5VTEwg dmFsdWVzPyAqLworCWJvb2wJCXVuaXF1ZTsJCQkvKiBjaGVjayBrZXkgdW5pcXVlbmVzcz8g Ki8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtu b3duICovCit9IEpzb25PYmplY3RDb25zdHJ1Y3RvcjsKKworLyoKKyAqIEpzb25BcnJheUNv bnN0cnVjdG9yIC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05f QVJSQVkoZWxlbWVudCwuLi4pIGNvbnN0cnVjdG9yCisgKi8KK3R5cGVkZWYgc3RydWN0IEpz b25BcnJheUNvbnN0cnVjdG9yCit7CisJTm9kZVRhZwkJdHlwZTsKKwlMaXN0CSAgICpleHBy czsJCQkvKiBsaXN0IG9mIEpzb25WYWx1ZUV4cHIgZWxlbWVudHMgKi8KKwlKc29uT3V0cHV0 ICpvdXRwdXQ7CQkJLyogUkVUVVJOSU5HIGNsYXVzZSwgaWYgc3BlY2lmaWVkICAqLworCWJv b2wJCWFic2VudF9vbl9udWxsOwkvKiBza2lwIE5VTEwgZWxlbWVudHM/ICovCisJaW50CQkJ bG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBK c29uQXJyYXlDb25zdHJ1Y3RvcjsKKworLyoKKyAqIEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0 b3IgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9BUlJBWShz dWJxdWVyeSkgY29uc3RydWN0b3IKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkFycmF5UXVl cnlDb25zdHJ1Y3RvcgoreworCU5vZGVUYWcJCXR5cGU7CisJTm9kZQkgICAqcXVlcnk7CQkJ Lyogc3VicXVlcnkgKi8KKwlKc29uT3V0cHV0ICpvdXRwdXQ7CQkJLyogUkVUVVJOSU5HIGNs YXVzZSwgaWYgc3BlY2lmaWVkICAqLworCUpzb25Gb3JtYXQgKmZvcm1hdDsJCQkvKiBGT1JN QVQgY2xhdXNlIGZvciBzdWJxdWVyeSwgaWYgc3BlY2lmaWVkICovCisJYm9vbAkJYWJzZW50 X29uX251bGw7CS8qIHNraXAgTlVMTCBlbGVtZW50cz8gKi8KKwlpbnQJCQlsb2NhdGlvbjsJ CS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IEpzb25BcnJheVF1 ZXJ5Q29uc3RydWN0b3I7CisKKy8qCisgKiBKc29uQWdnQ29uc3RydWN0b3IgLQorICoJCWNv bW1vbiBmaWVsZHMgb2YgdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZgorICoJCUpT T05fQVJSQVlBR0coKSBhbmQgSlNPTl9PQkpFQ1RBR0coKQorICovCit0eXBlZGVmIHN0cnVj dCBKc29uQWdnQ29uc3RydWN0b3IKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25PdXRwdXQg Km91dHB1dDsJCQkvKiBSRVRVUk5JTkcgY2xhdXNlLCBpZiBhbnkgKi8KKwlOb2RlCSAgICph Z2dfZmlsdGVyOwkJLyogRklMVEVSIGNsYXVzZSwgaWYgYW55ICovCisJTGlzdAkgICAqYWdn X29yZGVyOwkJLyogT1JERVIgQlkgY2xhdXNlLCBpZiBhbnkgKi8KKwlzdHJ1Y3QgV2luZG93 RGVmICpvdmVyOwkJLyogT1ZFUiBjbGF1c2UsIGlmIGFueSAqLworCWludAkJCWxvY2F0aW9u OwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvbkFnZ0Nv bnN0cnVjdG9yOworCisvKgorICogSnNvbk9iamVjdEFnZyAtCisgKgkJdW50cmFuc2Zvcm1l ZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX09CSkVDVEFHRygpCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25PYmplY3RBZ2cKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25BZ2dDb25zdHJ1 Y3RvciAqY29uc3RydWN0b3I7IC8qIGNvbW1vbiBmaWVsZHMgKi8KKwlKc29uS2V5VmFsdWUg KmFyZzsJCQkvKiBvYmplY3Qga2V5LXZhbHVlIHBhaXIgKi8KKwlib29sCQlhYnNlbnRfb25f bnVsbDsJLyogc2tpcCBOVUxMIHZhbHVlcz8gKi8KKwlib29sCQl1bmlxdWU7CQkJLyogY2hl Y2sga2V5IHVuaXF1ZW5lc3M/ICovCit9IEpzb25PYmplY3RBZ2c7CisKKy8qCisgKiBKc29u QXJyYXlBZ2cgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9B UlJSQVlBR0coKQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uQXJyYXlBZ2cKK3sKKwlOb2Rl VGFnCQl0eXBlOworCUpzb25BZ2dDb25zdHJ1Y3RvciAqY29uc3RydWN0b3I7IC8qIGNvbW1v biBmaWVsZHMgKi8KKwlKc29uVmFsdWVFeHByICphcmc7CQkJLyogYXJyYXkgZWxlbWVudCBl eHByZXNzaW9uICovCisJYm9vbAkJYWJzZW50X29uX251bGw7CS8qIHNraXAgTlVMTCBlbGVt ZW50cz8gKi8KK30gSnNvbkFycmF5QWdnOworCisKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogICoJCVJhdyBHcmFtbWFyIE91dHB1dCBTdGF0ZW1lbnRzCiAgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IGRhYjVjNGZmNWQuLjkwMTA4 YmVmZWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xMjM1LDYgKzEyMzUsMjI4IEBA IHR5cGVkZWYgc3RydWN0IFhtbEV4cHIKIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxv Y2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFhtbEV4cHI7CiAKKy8qCisgKiBKc29u RXhwck9wIC0KKyAqCQllbnVtZXJhdGlvbiBvZiBKU09OIGZ1bmN0aW9ucyB1c2luZyBKU09O IHBhdGgKKyAqLwordHlwZWRlZiBlbnVtIEpzb25FeHByT3AKK3sKKwlJU19KU09OX1ZBTFVF LAkJCQkvKiBKU09OX1ZBTFVFKCkgKi8KKwlJU19KU09OX1FVRVJZLAkJCQkvKiBKU09OX1FV RVJZKCkgKi8KKwlJU19KU09OX0VYSVNUUwkJCQkvKiBKU09OX0VYSVNUUygpICovCit9IEpz b25FeHByT3A7CisKKy8qCisgKiBKc29uRW5jb2RpbmcgLQorICoJCXJlcHJlc2VudGF0aW9u IG9mIEpTT04gRU5DT0RJTkcgY2xhdXNlCisgKi8KK3R5cGVkZWYgZW51bSBKc29uRW5jb2Rp bmcKK3sKKwlKU19FTkNfREVGQVVMVCwJCQkJLyogdW5zcGVjaWZpZWQgKi8KKwlKU19FTkNf VVRGOCwKKwlKU19FTkNfVVRGMTYsCisJSlNfRU5DX1VURjMyLAorfSBKc29uRW5jb2Rpbmc7 CisKKy8qCisgKiBKc29uRm9ybWF0VHlwZSAtCisgKgkJZW51bWVyYXRpb24gb2YgSlNPTiBm b3JtYXRzIHVzZWQgaW4gSlNPTiBGT1JNQVQgY2xhdXNlCisgKi8KK3R5cGVkZWYgZW51bSBK c29uRm9ybWF0VHlwZQoreworCUpTX0ZPUk1BVF9ERUZBVUxULAkJCS8qIHVuc3BlY2lmaWVk ICovCisJSlNfRk9STUFUX0pTT04sCQkJCS8qIEZPUk1BVCBKU09OIFtFTkNPRElORyAuLi5d ICovCisJSlNfRk9STUFUX0pTT05CCQkJCS8qIGltcGxpY2l0IGludGVybmFsIGZvcm1hdCBm b3IgUkVUVVJOSU5HIGpzb25iICovCit9IEpzb25Gb3JtYXRUeXBlOworCisvKgorICogSnNv bkJlaGF2aW9yVHlwZSAtCisgKgkJZW51bWVyYXRpb24gb2YgYmVoYXZpb3IgdHlwZXMgdXNl ZCBpbiBKU09OIE9OIC4uLiBCRUhBVklPUiBjbGF1c2UKKyAqCisgKiAJCUlmIGVudW0gbWVt YmVycyBhcmUgcmVvcmRlcmVkLCBnZXRfanNvbl9iZWhhdmlvcigpIGZyb20gcnVsZXV0aWxz LmMKKyAqIAkJbXVzdCBiZSB1cGRhdGVkIGFjY29yZGluZ2x5LgorICovCit0eXBlZGVmIGVu dW0gSnNvbkJlaGF2aW9yVHlwZQoreworCUpTT05fQkVIQVZJT1JfTlVMTCA9IDAsCisJSlNP Tl9CRUhBVklPUl9FUlJPUiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZLAorCUpTT05fQkVIQVZJ T1JfVFJVRSwKKwlKU09OX0JFSEFWSU9SX0ZBTFNFLAorCUpTT05fQkVIQVZJT1JfVU5LTk9X TiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZLAorCUpTT05fQkVIQVZJT1JfRU1QVFlf T0JKRUNULAorCUpTT05fQkVIQVZJT1JfREVGQVVMVAorfSBKc29uQmVoYXZpb3JUeXBlOwor CisvKgorICogSnNvbldyYXBwZXIgLQorICoJCXJlcHJlc2VudGF0aW9uIG9mIFdSQVBQRVIg Y2xhdXNlIGZvciBKU09OX1FVRVJZKCkKKyAqLwordHlwZWRlZiBlbnVtIEpzb25XcmFwcGVy Cit7CisJSlNXX05PTkUsCisJSlNXX0NPTkRJVElPTkFMLAorCUpTV19VTkNPTkRJVElPTkFM LAorfSBKc29uV3JhcHBlcjsKKworLyoKKyAqIEpzb25Gb3JtYXQgLQorICoJCXJlcHJlc2Vu dGF0aW9uIG9mIEpTT04gRk9STUFUIGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29u Rm9ybWF0Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uRm9ybWF0VHlwZSBmb3JtYXRfdHlw ZTsJLyogZm9ybWF0IHR5cGUgKi8KKwlKc29uRW5jb2RpbmcgZW5jb2Rpbmc7CQkvKiBKU09O IGVuY29kaW5nICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3Ig LTEgaWYgdW5rbm93biAqLworfSBKc29uRm9ybWF0OworCisvKgorICogSnNvblJldHVybmlu ZyAtCisgKgkJdHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTiBSRVRVUk5JTkcg Y2xhdXNlCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25SZXR1cm5pbmcKK3sKKwlOb2RlVGFn CQl0eXBlOworCUpzb25Gb3JtYXQgKmZvcm1hdDsJCQkvKiBvdXRwdXQgSlNPTiBmb3JtYXQg Ki8KKwlPaWQJCQl0eXBpZDsJCQkvKiB0YXJnZXQgdHlwZSBPaWQgKi8KKwlpbnQzMgkJdHlw bW9kOwkJCS8qIHRhcmdldCB0eXBlIG1vZGlmaWVyICovCit9IEpzb25SZXR1cm5pbmc7CisK Ky8qCisgKiBKc29uVmFsdWVFeHByIC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIHZh bHVlIGV4cHJlc3Npb24gKGV4cHIgW0ZPUk1BVCBqc29uX2Zvcm1hdF0pCisgKi8KK3R5cGVk ZWYgc3RydWN0IEpzb25WYWx1ZUV4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOworCUV4cHIJICAg KnJhd19leHByOwkJLyogcmF3IGV4cHJlc3Npb24gKi8KKwlFeHByCSAgICpmb3JtYXR0ZWRf ZXhwcjsJLyogZm9ybWF0dGVkIGV4cHJlc3Npb24gb3IgTlVMTCAqLworCUpzb25Gb3JtYXQg KmZvcm1hdDsJCQkvKiBGT1JNQVQgY2xhdXNlLCBpZiBzcGVjaWZpZWQgKi8KK30gSnNvblZh bHVlRXhwcjsKKwordHlwZWRlZiBlbnVtIEpzb25Db25zdHJ1Y3RvclR5cGUKK3sKKwlKU0NU T1JfSlNPTl9PQkpFQ1QgPSAxLAorCUpTQ1RPUl9KU09OX0FSUkFZID0gMiwKKwlKU0NUT1Jf SlNPTl9PQkpFQ1RBR0cgPSAzLAorCUpTQ1RPUl9KU09OX0FSUkFZQUdHID0gNCwKKwlKU0NU T1JfSlNPTl9TQ0FMQVIgPSA1LAorCUpTQ1RPUl9KU09OX1NFUklBTElaRSA9IDYsCisJSlND VE9SX0pTT05fUEFSU0UgPSA3Cit9IEpzb25Db25zdHJ1Y3RvclR5cGU7CisKKy8qCisgKiBK c29uQ29uc3RydWN0b3JFeHByIC0KKyAqCQl3cmFwcGVyIG92ZXIgRnVuY0V4cHIvQWdncmVm L1dpbmRvd0Z1bmMgZm9yIFNRTC9KU09OIGNvbnN0cnVjdG9ycworICovCit0eXBlZGVmIHN0 cnVjdCBKc29uQ29uc3RydWN0b3JFeHByCit7CisJRXhwcgkJeHByOworCUpzb25Db25zdHJ1 Y3RvclR5cGUgdHlwZTsJLyogY29uc3RydWN0b3IgdHlwZSAqLworCUxpc3QJICAgKmFyZ3M7 CisJRXhwcgkgICAqZnVuYzsJCQkvKiB1bmRlcmx5aW5nIGpzb25bYl1feHh4KCkgZnVuY3Rp b24gY2FsbCAqLworCUV4cHIJICAgKmNvZXJjaW9uOwkJLyogY29lcmNpb24gdG8gUkVUVVJO SU5HIHR5cGUgKi8KKwlKc29uUmV0dXJuaW5nICpyZXR1cm5pbmc7CS8qIFJFVFVSTklORyBj bGF1c2UgKi8KKwlib29sCQlhYnNlbnRfb25fbnVsbDsJLyogQUJTRU5UIE9OIE5VTEw/ICov CisJYm9vbAkJdW5pcXVlOwkJCS8qIFdJVEggVU5JUVVFIEtFWVM/IChKU09OX09CSkVDVFtB R0ddIG9ubHkpICovCisJaW50CQkJbG9jYXRpb247Cit9IEpzb25Db25zdHJ1Y3RvckV4cHI7 CisKKy8qCisgKiBKc29uVmFsdWVUeXBlIC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09O IGl0ZW0gdHlwZSBpbiBJUyBKU09OIHByZWRpY2F0ZQorICovCit0eXBlZGVmIGVudW0gSnNv blZhbHVlVHlwZQoreworCUpTX1RZUEVfQU5ZLAkJCQkvKiBJUyBKU09OIFtWQUxVRV0gKi8K KwlKU19UWVBFX09CSkVDVCwJCQkJLyogSVMgSlNPTiBPQkpFQ1QgKi8KKwlKU19UWVBFX0FS UkFZLAkJCQkvKiBJUyBKU09OIEFSUkFZKi8KKwlKU19UWVBFX1NDQUxBUgkJCQkvKiBJUyBK U09OIFNDQUxBUiAqLworfSBKc29uVmFsdWVUeXBlOworCisvKgorICogSnNvbklzUHJlZGlj YXRlIC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIElTIEpTT04gcHJl ZGljYXRlCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25Jc1ByZWRpY2F0ZQoreworCU5vZGVU YWcJCXR5cGU7CisJTm9kZQkgICAqZXhwcjsJCQkvKiB1bnRyYW5zZm9ybWVkIGV4cHJlc3Np b24gKi8KKwlKc29uRm9ybWF0ICpmb3JtYXQ7CQkJLyogRk9STUFUIGNsYXVzZSwgaWYgc3Bl Y2lmaWVkICovCisJSnNvblZhbHVlVHlwZSB2YWx1ZV90eXBlOwkvKiBKU09OIGl0ZW0gdHlw ZSAqLworCWJvb2wJCXVuaXF1ZV9rZXlzOwkvKiBjaGVjayBrZXkgdW5pcXVlbmVzcz8gKi8K KwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3du ICovCit9IEpzb25Jc1ByZWRpY2F0ZTsKKworLyoKKyAqIEpzb25CZWhhdmlvciAtCisgKgkJ cmVwcmVzZW50YXRpb24gb2YgSlNPTiBPTiAuLi4gQkVIQVZJT1IgY2xhdXNlCisgKi8KK3R5 cGVkZWYgc3RydWN0IEpzb25CZWhhdmlvcgoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvbkJl aGF2aW9yVHlwZSBidHlwZTsJCS8qIGJlaGF2aW9yIHR5cGUgKi8KKwlOb2RlCSAgICpkZWZh dWx0X2V4cHI7CS8qIGRlZmF1bHQgZXhwcmVzc2lvbiwgaWYgYW55ICovCit9IEpzb25CZWhh dmlvcjsKKworLyoKKyAqIEpzb25Db2VyY2lvbiAtCisgKgkJY29lcmNpb24gZnJvbSBTUUwv SlNPTiBpdGVtIHR5cGVzIHRvIFNRTCB0eXBlcworICovCit0eXBlZGVmIHN0cnVjdCBKc29u Q29lcmNpb24KK3sKKwlOb2RlVGFnCQl0eXBlOworCU5vZGUJICAgKmV4cHI7CQkJLyogcmVz dWx0aW5nIGV4cHJlc3Npb24gY29lcmNlZCB0byB0YXJnZXQgdHlwZSAqLworCWJvb2wJCXZp YV9wb3B1bGF0ZTsJLyogY29lcmNlIHJlc3VsdCB1c2luZyBqc29uX3BvcHVsYXRlX3R5cGUo KT8gKi8KKwlib29sCQl2aWFfaW87CQkJLyogY29lcmNlIHJlc3VsdCB1c2luZyB0eXBlIGlu cHV0IGZ1bmN0aW9uPyAqLworCU9pZAkJCWNvbGxhdGlvbjsJCS8qIGNvbGxhdGlvbiBmb3Ig Y29lcmNpb24gdmlhIEkvTyBvciBwb3B1bGF0ZSAqLworfSBKc29uQ29lcmNpb247CisKKy8q CisgKiBKc29uSXRlbUNvZXJjaW9ucyAtCisgKgkJZXhwcmVzc2lvbnMgZm9yIGNvZXJjaW9u IGZyb20gU1FML0pTT04gaXRlbSB0eXBlcyBkaXJlY3RseSB0byB0aGUKKyAqCQlvdXRwdXQg U1FMIHR5cGUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkl0ZW1Db2VyY2lvbnMKK3sKKwlO b2RlVGFnCQl0eXBlOworCUpzb25Db2VyY2lvbiAqbnVsbDsKKwlKc29uQ29lcmNpb24gKnN0 cmluZzsKKwlKc29uQ29lcmNpb24gKm51bWVyaWM7CisJSnNvbkNvZXJjaW9uICpib29sZWFu OworCUpzb25Db2VyY2lvbiAqZGF0ZTsKKwlKc29uQ29lcmNpb24gKnRpbWU7CisJSnNvbkNv ZXJjaW9uICp0aW1ldHo7CisJSnNvbkNvZXJjaW9uICp0aW1lc3RhbXA7CisJSnNvbkNvZXJj aW9uICp0aW1lc3RhbXB0ejsKKwlKc29uQ29lcmNpb24gKmNvbXBvc2l0ZTsJLyogYXJyYXlz IGFuZCBvYmplY3RzICovCit9IEpzb25JdGVtQ29lcmNpb25zOworCisvKgorICogSnNvbkV4 cHIgLQorICoJCXRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVkFMVUUoKSwg SlNPTl9RVUVSWSgpLCBKU09OX0VYSVNUUygpCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25F eHByCit7CisJRXhwcgkJeHByOworCUpzb25FeHByT3AJb3A7CQkJCS8qIGpzb24gZnVuY3Rp b24gSUQgKi8KKwlOb2RlCSAgICpmb3JtYXR0ZWRfZXhwcjsJLyogZm9ybWF0dGVkIGNvbnRl eHQgaXRlbSBleHByZXNzaW9uICovCisJSnNvbkNvZXJjaW9uICpyZXN1bHRfY29lcmNpb247 CS8qIHJlc3VsdGluZyBjb2VyY2lvbiB0byBSRVRVUk5JTkcgdHlwZSAqLworCUpzb25Gb3Jt YXQgKmZvcm1hdDsJCQkvKiBjb250ZXh0IGl0ZW0gZm9ybWF0IChKU09OL0pTT05CKSAqLwor CU5vZGUJICAgKnBhdGhfc3BlYzsJCS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uIGV4cHJl c3Npb24gKi8KKwlMaXN0CSAgICpwYXNzaW5nX25hbWVzOwkvKiBQQVNTSU5HIGFyZ3VtZW50 IG5hbWVzICovCisJTGlzdAkgICAqcGFzc2luZ192YWx1ZXM7CS8qIFBBU1NJTkcgYXJndW1l bnQgdmFsdWVzICovCisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOwkvKiBSRVRVUk5JTkcg Y2xhdXNlIHR5cGUvZm9ybWF0IGluZm8gKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OwkJ LyogT04gRU1QVFkgYmVoYXZpb3IgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOwkJLyog T04gRVJST1IgYmVoYXZpb3IgKi8KKwlKc29uSXRlbUNvZXJjaW9ucyAqY29lcmNpb25zOyAv KiBjb2VyY2lvbnMgZm9yIEpTT05fVkFMVUUgKi8KKwlKc29uV3JhcHBlcgl3cmFwcGVyOwkJ LyogV1JBUFBFUiBmb3IgSlNPTl9RVUVSWSAqLworCWJvb2wJCW9taXRfcXVvdGVzOwkvKiBL RUVQL09NSVQgUVVPVEVTIGZvciBKU09OX1FVRVJZICovCisJaW50CQkJbG9jYXRpb247CQkv KiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uRXhwcjsKKwog LyogLS0tLS0tLS0tLS0tLS0tLQogICogTnVsbFRlc3QKICAqCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggYmNlZjdlZWQyZi4uYWIzZDhlMGI1MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAt MjYsNiArMjYsNyBAQAogCiAvKiBuYW1lLCB2YWx1ZSwgY2F0ZWdvcnksIGlzLWJhcmUtbGFi ZWwgKi8KIFBHX0tFWVdPUkQoImFib3J0IiwgQUJPUlRfUCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiYWJzZW50IiwgQUJTRU5ULCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJhYnNvbHV0ZSIsIEFCU09MVVRF X1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImFjY2Vz cyIsIEFDQ0VTUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgiYWN0aW9uIiwgQUNUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBA IC05Miw2ICs5Myw3IEBAIFBHX0tFWVdPUkQoImNvbW1pdCIsIENPTU1JVCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiY29tbWl0dGVkIiwgQ09NTUlU VEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb21w cmVzc2lvbiIsIENPTVBSRVNTSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJjb25jdXJyZW50bHkiLCBDT05DVVJSRU5UTFksIFRZUEVfRlVOQ19O QU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJjb25kaXRpb25hbCIsIENP TkRJVElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJjb25maWd1cmF0aW9uIiwgQ09ORklHVVJBVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgiY29uZmxpY3QiLCBDT05GTElDVCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiY29ubmVjdGlvbiIsIENPTk5F Q1RJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTE0NiwxMSArMTQ4 LDEzIEBAIFBHX0tFWVdPUkQoImRvdWJsZSIsIERPVUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkcm9wIiwgRFJPUCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZWFjaCIsIEVBQ0gsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVsc2UiLCBFTFNFLCBSRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZW1wdHkiLCBFTVBUWV9Q LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmFibGUi LCBFTkFCTEVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgiZW5jb2RpbmciLCBFTkNPRElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgiZW5jcnlwdGVkIiwgRU5DUllQVEVELCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmQiLCBFTkRfUCwgUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVudW0iLCBFTlVNX1AsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImVycm9yIiwgRVJST1JfUCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZXNjYXBlIiwg RVNDQVBFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJl dmVudCIsIEVWRU5ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJleGNlcHQiLCBFWENFUFQsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQpAQCAt MTc1LDYgKzE3OSw3IEBAIFBHX0tFWVdPUkQoImZvbGxvd2luZyIsIEZPTExPV0lORywgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZm9yIiwgRk9SLCBS RVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoImZvcmNlIiwgRk9SQ0Us IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImZvcmVpZ24i LCBGT1JFSUdOLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi Zm9ybWF0IiwgRk9STUFULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJmb3J3YXJkIiwgRk9SV0FSRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgiZnJlZXplIiwgRlJFRVpFLCBUWVBFX0ZVTkNfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZnJvbSIsIEZST00sIFJFU0VSVkVEX0tF WVdPUkQsIEFTX0xBQkVMKQpAQCAtMjI3LDcgKzIzMiwxOSBAQCBQR19LRVlXT1JEKCJpcyIs IElTLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi aXNudWxsIiwgSVNOVUxMLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBBU19MQUJFTCkKIFBH X0tFWVdPUkQoImlzb2xhdGlvbiIsIElTT0xBVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgiam9pbiIsIEpPSU4sIFRZUEVfRlVOQ19OQU1FX0tF WVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uIiwgSlNPTiwgQ09MX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fYXJyYXkiLCBKU09OX0FS UkFZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbl9h cnJheWFnZyIsIEpTT05fQVJSQVlBR0csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CitQR19LRVlXT1JEKCJqc29uX2V4aXN0cyIsIEpTT05fRVhJU1RTLCBDT0xfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbl9vYmplY3QiLCBKU09OX09CSkVD VCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fb2Jq ZWN0YWdnIiwgSlNPTl9PQkpFQ1RBR0csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CitQR19LRVlXT1JEKCJqc29uX3F1ZXJ5IiwgSlNPTl9RVUVSWSwgQ09MX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fc2NhbGFyIiwgSlNPTl9TQ0FMQVIs IENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3Nlcmlh bGl6ZSIsIEpTT05fU0VSSUFMSVpFLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQor UEdfS0VZV09SRCgianNvbl92YWx1ZSIsIEpTT05fVkFMVUUsIENPTF9OQU1FX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJrZWVwIiwgS0VFUCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgia2V5IiwgS0VZLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJrZXlzIiwgS0VZUywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibGFiZWwiLCBMQUJFTCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibGFuZ3VhZ2UiLCBM QU5HVUFHRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi bGFyZ2UiLCBMQVJHRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0y ODksNiArMzA2LDcgQEAgUEdfS0VZV09SRCgib2ZmIiwgT0ZGLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJvZmZzZXQiLCBPRkZTRVQsIFJFU0VSVkVE X0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgib2lkcyIsIE9JRFMsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm9sZCIsIE9MRCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgib21pdCIsIE9NSVQsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm9uIiwgT04sIFJF U0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgib25seSIsIE9OTFksIFJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJvcGVyYXRvciIsIE9Q RVJBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zMzAsNiArMzQ4 LDcgQEAgUEdfS0VZV09SRCgicHJvY2VkdXJlcyIsIFBST0NFRFVSRVMsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByb2dyYW0iLCBQUk9HUkFNLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwdWJsaWNhdGlv biIsIFBVQkxJQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJxdW90ZSIsIFFVT1RFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CitQR19LRVlXT1JEKCJxdW90ZXMiLCBRVU9URVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInJhbmdlIiwgUkFOR0UsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlYWQiLCBSRUFELCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZWFsIiwgUkVBTCwgQ09MX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTM2NCw2ICszODMsNyBAQCBQR19LRVlXT1JEKCJy b3ciLCBST1csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJy b3dzIiwgUk9XUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicnVsZSIsIFJVTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInNhdmVwb2ludCIsIFNBVkVQT0lOVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQorUEdfS0VZV09SRCgic2NhbGFyIiwgU0NBTEFSLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzY2hlbWEiLCBTQ0hFTUEsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNjaGVtYXMiLCBTQ0hFTUFT LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzY3JvbGwi LCBTQ1JPTEwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTM5OSw2ICs0 MTksNyBAQCBQR19LRVlXT1JEKCJzdGRvdXQiLCBTVERPVVQsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0b3JhZ2UiLCBTVE9SQUdFLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdG9yZWQiLCBTVE9SRUQs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0cmljdCIs IFNUUklDVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJzdHJpbmciLCBTVFJJTkcsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJzdHJpcCIsIFNUUklQX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInN1YnNjcmlwdGlvbiIsIFNVQlNDUklQVElPTiwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3Vic3RyaW5nIiwg U1VCU1RSSU5HLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtNDMzLDYgKzQ1 NCw3IEBAIFBHX0tFWVdPUkQoInR5cGVzIiwgVFlQRVNfUCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidWVzY2FwZSIsIFVFU0NBUEUsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInVuYm91bmRlZCIsIFVOQk9V TkRFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidW5j b21taXR0ZWQiLCBVTkNPTU1JVFRFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQorUEdfS0VZV09SRCgidW5jb25kaXRpb25hbCIsIFVOQ09ORElUSU9OQUwsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInVuZW5jcnlwdGVkIiwgVU5F TkNSWVBURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InVuaW9uIiwgVU5JT04sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09S RCgidW5pcXVlIiwgVU5JUVVFLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0dGluZy5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvZm9ybWF0dGluZy5oCmluZGV4IDg1MWU3ODdiZmQuLjBhMjJhZjgwYTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9mb3JtYXR0aW5nLmgKQEAgLTE3LDYgKzE3LDkgQEAKICNpZm5kZWYgX0ZPUk1B VFRJTkdfSF8KICNkZWZpbmUgX0ZPUk1BVFRJTkdfSF8KIAorI2RlZmluZSBEQ0hfREFURUQJ MHgwMQorI2RlZmluZSBEQ0hfVElNRUQJMHgwMgorI2RlZmluZSBEQ0hfWk9ORUQJMHgwNAog CiBleHRlcm4gY2hhciAqc3RyX3RvbG93ZXIoY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IG5i eXRlcywgT2lkIGNvbGxpZCk7CiBleHRlcm4gY2hhciAqc3RyX3RvdXBwZXIoY29uc3QgY2hh ciAqYnVmZiwgc2l6ZV90IG5ieXRlcywgT2lkIGNvbGxpZCk7CkBAIC0yOSw1ICszMiw2IEBA IGV4dGVybiBjaGFyICphc2NfaW5pdGNhcChjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5 dGVzKTsKIGV4dGVybiBEYXR1bSBwYXJzZV9kYXRldGltZSh0ZXh0ICpkYXRlX3R4dCwgdGV4 dCAqZm10LCBPaWQgY29sbGlkLCBib29sIHN0cmljdCwKIAkJCQkJCQlPaWQgKnR5cGlkLCBp bnQzMiAqdHlwbW9kLCBpbnQgKnR6LAogCQkJCQkJCWJvb2wgKmhhdmVfZXJyb3IpOworZXh0 ZXJuIGludCBkYXRldGltZV9mb3JtYXRfZmxhZ3MoY29uc3QgY2hhciAqZm10X3N0ciwgYm9v bCAqaGF2ZV9lcnJvcik7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvanNvbi5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCmluZGV4IDhhODRhMGNkYjQu LmRhNGE5MjU3YjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKQEAgLTE2LDkgKzE2LDM1IEBACiAKICNpbmNs dWRlICJsaWIvc3RyaW5naW5mby5oIgogCit0eXBlZGVmIGVudW0JCQkJCS8qIHR5cGUgY2F0 ZWdvcmllcyBmb3IgZGF0dW1fdG9fanNvbiAqLworeworCUpTT05UWVBFX05VTEwsCQkJCS8q IG51bGwsIHNvIHdlIGRpZG4ndCBib3RoZXIgdG8gaWRlbnRpZnkgKi8KKwlKU09OVFlQRV9C T09MLAkJCQkvKiBib29sZWFuIChidWlsdC1pbiB0eXBlcyBvbmx5KSAqLworCUpTT05UWVBF X05VTUVSSUMsCQkJLyogbnVtZXJpYyAoZGl0dG8pICovCisJSlNPTlRZUEVfREFURSwJCQkJ Lyogd2UgdXNlIHNwZWNpYWwgZm9ybWF0dGluZyBmb3IgZGF0ZXRpbWVzICovCisJSlNPTlRZ UEVfVElNRVNUQU1QLAorCUpTT05UWVBFX1RJTUVTVEFNUFRaLAorCUpTT05UWVBFX0pTT04s CQkJCS8qIEpTT04gaXRzZWxmIChhbmQgSlNPTkIpICovCisJSlNPTlRZUEVfQVJSQVksCQkJ CS8qIGFycmF5ICovCisJSlNPTlRZUEVfQ09NUE9TSVRFLAkJCS8qIGNvbXBvc2l0ZSAqLwor CUpTT05UWVBFX0NBU1QsCQkJCS8qIHNvbWV0aGluZyB3aXRoIGFuIGV4cGxpY2l0IGNhc3Qg dG8gSlNPTiAqLworCUpTT05UWVBFX09USEVSCQkJCS8qIGFsbCBlbHNlICovCit9IEpzb25U eXBlQ2F0ZWdvcnk7CisKIC8qIGZ1bmN0aW9ucyBpbiBqc29uLmMgKi8KIGV4dGVybiB2b2lk IGVzY2FwZV9qc29uKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpzdHIpOwogZXh0ZXJu IGNoYXIgKkpzb25FbmNvZGVEYXRlVGltZShjaGFyICpidWYsIERhdHVtIHZhbHVlLCBPaWQg dHlwaWQsCiAJCQkJCQkJCWNvbnN0IGludCAqdHpwKTsKK2V4dGVybiBib29sIHRvX2pzb25f aXNfaW1tdXRhYmxlKE9pZCB0eXBvaWQpOworZXh0ZXJuIHZvaWQganNvbl9jYXRlZ29yaXpl X3R5cGUoT2lkIHR5cG9pZCwgSnNvblR5cGVDYXRlZ29yeSAqdGNhdGVnb3J5LAorCQkJCQkJ CQkgT2lkICpvdXRmdW5jb2lkKTsKK2V4dGVybiBEYXR1bSB0b19qc29uX3dvcmtlcihEYXR1 bSB2YWwsIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LAorCQkJCQkJCU9pZCBvdXRmdW5j b2lkKTsKK2V4dGVybiBEYXR1bSBqc29uX2J1aWxkX29iamVjdF93b3JrZXIoaW50IG5hcmdz LCBEYXR1bSAqYXJncywgYm9vbCAqbnVsbHMsCisJCQkJCQkJCQkgIE9pZCAqdHlwZXMsIGJv b2wgYWJzZW50X29uX251bGwsCisJCQkJCQkJCQkgIGJvb2wgdW5pcXVlX2tleXMpOworZXh0 ZXJuIERhdHVtIGpzb25fYnVpbGRfYXJyYXlfd29ya2VyKGludCBuYXJncywgRGF0dW0gKmFy Z3MsIGJvb2wgKm51bGxzLAorCQkJCQkJCQkJIE9pZCAqdHlwZXMsIGJvb2wgYWJzZW50X29u X251bGwpOworZXh0ZXJuIGJvb2wganNvbl92YWxpZGF0ZSh0ZXh0ICpqc29uLCBib29sIGNo ZWNrX3VuaXF1ZV9rZXlzLCBib29sIHRocm93X2Vycm9yKTsKIAogI2VuZGlmCQkJCQkJCS8q IEpTT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKaW5kZXggNGNiZTZlZGYyMS4uNzUzNGMyZTdkMSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9qc29uYi5oCkBAIC0zMjksNiArMzI5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSnNv bmJQYXJzZVN0YXRlCiAJSnNvbmJWYWx1ZQljb250VmFsOwogCVNpemUJCXNpemU7CiAJc3Ry dWN0IEpzb25iUGFyc2VTdGF0ZSAqbmV4dDsKKwlib29sCQl1bmlxdWVfa2V5czsJLyogQ2hl Y2sgb2JqZWN0IGtleSB1bmlxdWVuZXNzICovCisJYm9vbAkJc2tpcF9udWxsczsJCS8qIFNr aXAgbnVsbCBvYmplY3QgZmllbGRzICovCiB9IEpzb25iUGFyc2VTdGF0ZTsKIAogLyoKQEAg LTM3NCw2ICszNzYsMzYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbmJJdGVyYXRvcgogCXN0cnVj dCBKc29uYkl0ZXJhdG9yICpwYXJlbnQ7CiB9IEpzb25iSXRlcmF0b3I7CiAKKy8qIHVubGlr ZSB3aXRoIGpzb24gY2F0ZWdvcmllcywgd2UgbmVlZCB0byB0cmVhdCBqc29uIGFuZCBqc29u YiBkaWZmZXJlbnRseSAqLwordHlwZWRlZiBlbnVtCQkJCQkvKiB0eXBlIGNhdGVnb3JpZXMg Zm9yIGRhdHVtX3RvX2pzb25iICovCit7CisJSlNPTkJUWVBFX05VTEwsCQkJCS8qIG51bGws IHNvIHdlIGRpZG4ndCBib3RoZXIgdG8gaWRlbnRpZnkgKi8KKwlKU09OQlRZUEVfQk9PTCwJ CQkJLyogYm9vbGVhbiAoYnVpbHQtaW4gdHlwZXMgb25seSkgKi8KKwlKU09OQlRZUEVfTlVN RVJJQywJCQkvKiBudW1lcmljIChkaXR0bykgKi8KKwlKU09OQlRZUEVfREFURSwJCQkJLyog d2UgdXNlIHNwZWNpYWwgZm9ybWF0dGluZyBmb3IgZGF0ZXRpbWVzICovCisJSlNPTkJUWVBF X1RJTUVTVEFNUCwJCS8qIHdlIHVzZSBzcGVjaWFsIGZvcm1hdHRpbmcgZm9yIHRpbWVzdGFt cCAqLworCUpTT05CVFlQRV9USU1FU1RBTVBUWiwJCS8qIC4uLiBhbmQgdGltZXN0YW1wdHog Ki8KKwlKU09OQlRZUEVfSlNPTiwJCQkJLyogSlNPTiAqLworCUpTT05CVFlQRV9KU09OQiwJ CQkvKiBKU09OQiAqLworCUpTT05CVFlQRV9BUlJBWSwJCQkvKiBhcnJheSAqLworCUpTT05C VFlQRV9DT01QT1NJVEUsCQkvKiBjb21wb3NpdGUgKi8KKwlKU09OQlRZUEVfSlNPTkNBU1Qs CQkJLyogc29tZXRoaW5nIHdpdGggYW4gZXhwbGljaXQgY2FzdCB0byBKU09OICovCisJSlNP TkJUWVBFX09USEVSCQkJCS8qIGFsbCBlbHNlICovCit9IEpzb25iVHlwZUNhdGVnb3J5Owor CisvKiB2YWx1ZXMgZm9yIHRoZSBzcWwranNvbl90eXBlIEdVQy4gKi8KK3R5cGVkZWYgZW51 bSBTcWxKc29uVHlwZQoreworCVNRTEpTT05fVFlQRV9KU09OID0gMCwKKwlTUUxKU09OX1RZ UEVfSlNPTkIgPSAxCit9IFNxbEpzb25UeXBlOworCisjZGVmaW5lIFNRTEpTT05fVFlQRV9J U19KU09OQigpIChzcWxfanNvbl90eXBlID09IFNRTEpTT05fVFlQRV9KU09OQikKKyNkZWZp bmUgU1FMSlNPTl9UWVBFX09JRCgpIChTUUxKU09OX1RZUEVfSVNfSlNPTkIoKSA/IEpTT05C T0lEIDogSlNPTk9JRCkKKyNkZWZpbmUgU1FMSlNPTl9UWVBFX05BTUUoKSAoU1FMSlNPTl9U WVBFX0lTX0pTT05CKCkgPyAianNvbmIiIDogImpzb24iKQorCisvKiBHVUMgKi8KK2V4dGVy biBpbnQgc3FsX2pzb25fdHlwZTsKIAogLyogU3VwcG9ydCBmdW5jdGlvbnMgKi8KIGV4dGVy biB1aW50MzIgZ2V0SnNvbmJPZmZzZXQoY29uc3QgSnNvbmJDb250YWluZXIgKmpjLCBpbnQg aW5kZXgpOwpAQCAtNDAxLDEwICs0MzMsMTQgQEAgZXh0ZXJuIHZvaWQgSnNvbmJIYXNoU2Nh bGFyVmFsdWVFeHRlbmRlZChjb25zdCBKc29uYlZhbHVlICpzY2FsYXJWYWwsCiAJCQkJCQkJ CQkJIHVpbnQ2NCAqaGFzaCwgdWludDY0IHNlZWQpOwogCiAvKiBqc29uYi5jIHN1cHBvcnQg ZnVuY3Rpb25zICovCitleHRlcm4gRGF0dW0ganNvbmJfZnJvbV90ZXh0KHRleHQgKmpzLCBi b29sIHVuaXF1ZV9rZXlzKTsKIGV4dGVybiBjaGFyICpKc29uYlRvQ1N0cmluZyhTdHJpbmdJ bmZvIG91dCwgSnNvbmJDb250YWluZXIgKmluLAogCQkJCQkJCWludCBlc3RpbWF0ZWRfbGVu KTsKIGV4dGVybiBjaGFyICpKc29uYlRvQ1N0cmluZ0luZGVudChTdHJpbmdJbmZvIG91dCwg SnNvbmJDb250YWluZXIgKmluLAogCQkJCQkJCQkgIGludCBlc3RpbWF0ZWRfbGVuKTsKK2V4 dGVybiBKc29uYiAqSnNvbmJNYWtlRW1wdHlBcnJheSh2b2lkKTsKK2V4dGVybiBKc29uYiAq SnNvbmJNYWtlRW1wdHlPYmplY3Qodm9pZCk7CitleHRlcm4gY2hhciAqSnNvbmJVbnF1b3Rl KEpzb25iICpqYik7CiBleHRlcm4gYm9vbCBKc29uYkV4dHJhY3RTY2FsYXIoSnNvbmJDb250 YWluZXIgKmpiYywgSnNvbmJWYWx1ZSAqcmVzKTsKIGV4dGVybiBjb25zdCBjaGFyICpKc29u YlR5cGVOYW1lKEpzb25iVmFsdWUgKmpiKTsKIApAQCAtNDEyLDQgKzQ0OCwxNSBAQCBleHRl cm4gRGF0dW0ganNvbmJfc2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50 IHBhdGhfbGVuLAogCQkJCQkJCSAgIEpzb25iVmFsdWUgKm5ld3ZhbCk7CiBleHRlcm4gRGF0 dW0ganNvbmJfZ2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50IG5wYXRo LAogCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KTsKK2V4dGVybiBib29s IHRvX2pzb25iX2lzX2ltbXV0YWJsZShPaWQgdHlwb2lkKTsKK2V4dGVybiB2b2lkIGpzb25i X2NhdGVnb3JpemVfdHlwZShPaWQgdHlwb2lkLCBKc29uYlR5cGVDYXRlZ29yeSAqdGNhdGVn b3J5LAorCQkJCQkJCQkgIE9pZCAqb3V0ZnVuY29pZCk7CitleHRlcm4gRGF0dW0gdG9fanNv bmJfd29ya2VyKERhdHVtIHZhbCwgSnNvbmJUeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LAorCQkJ CQkJCSBPaWQgb3V0ZnVuY29pZCk7CitleHRlcm4gRGF0dW0ganNvbmJfYnVpbGRfb2JqZWN0 X3dvcmtlcihpbnQgbmFyZ3MsIERhdHVtICphcmdzLCBib29sICpudWxscywKKwkJCQkJCQkJ CSAgIE9pZCAqdHlwZXMsIGJvb2wgYWJzZW50X29uX251bGwsCisJCQkJCQkJCQkgICBib29s IHVuaXF1ZV9rZXlzKTsKK2V4dGVybiBEYXR1bSBqc29uYl9idWlsZF9hcnJheV93b3JrZXIo aW50IG5hcmdzLCBEYXR1bSAqYXJncywgYm9vbCAqbnVsbHMsCisJCQkJCQkJCQkgIE9pZCAq dHlwZXMsIGJvb2wgYWJzZW50X29uX251bGwpOworCiAjZW5kaWYJCQkJCQkJLyogX19KU09O Ql9IX18gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKaW5kZXggODY1YjJmZjdjMS4uNjJkYzNk ODhhNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgZXh0ZXJu IHZvaWQgcGdfcGFyc2VfanNvbl9vcl9lcmVwb3J0KEpzb25MZXhDb250ZXh0ICpsZXgsIEpz b25TZW1BY3Rpb24gKnNlbSk7CiAvKiByZXBvcnQgYW4gZXJyb3IgZHVyaW5nIGpzb24gbGV4 aW5nIG9yIHBhcnNpbmcgKi8KIGV4dGVybiB2b2lkIGpzb25fZXJlcG9ydF9lcnJvcihKc29u UGFyc2VFcnJvclR5cGUgZXJyb3IsIEpzb25MZXhDb250ZXh0ICpsZXgpOwogCisvKiBnZXQg Zmlyc3QgSlNPTiB0b2tlbiAqLworZXh0ZXJuIEpzb25Ub2tlblR5cGUganNvbl9nZXRfZmly c3RfdG9rZW4odGV4dCAqanNvbiwgYm9vbCB0aHJvd19lcnJvcik7CisKIGV4dGVybiB1aW50 MzIgcGFyc2VfanNvbmJfaW5kZXhfZmxhZ3MoSnNvbmIgKmpiKTsKIGV4dGVybiB2b2lkIGl0 ZXJhdGVfanNvbmJfdmFsdWVzKEpzb25iICpqYiwgdWludDMyIGZsYWdzLCB2b2lkICpzdGF0 ZSwKIAkJCQkJCQkJIEpzb25JdGVyYXRlU3RyaW5nVmFsdWVzQWN0aW9uIGFjdGlvbik7CkBA IC01NSw0ICs1OCw4IEBAIGV4dGVybiBKc29uYiAqdHJhbnNmb3JtX2pzb25iX3N0cmluZ192 YWx1ZXMoSnNvbmIgKmpzb25iLCB2b2lkICphY3Rpb25fc3RhdGUsCiBleHRlcm4gdGV4dCAq dHJhbnNmb3JtX2pzb25fc3RyaW5nX3ZhbHVlcyh0ZXh0ICpqc29uLCB2b2lkICphY3Rpb25f c3RhdGUsCiAJCQkJCQkJCQkJICBKc29uVHJhbnNmb3JtU3RyaW5nVmFsdWVzQWN0aW9uIHRy YW5zZm9ybV9hY3Rpb24pOwogCitleHRlcm4gRGF0dW0ganNvbl9wb3B1bGF0ZV90eXBlKERh dHVtIGpzb25fdmFsLCBPaWQganNvbl90eXBlLAorCQkJCQkJCQlPaWQgdHlwaWQsIGludDMy IHR5cG1vZCwKKwkJCQkJCQkJdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1jeHQsIGJv b2wgKmlzbnVsbCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv anNvbnBhdGguaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKaW5kZXggY2QwYjVk NWI2MS4uOThhNjFkN2Y3MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBh dGguaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCkBAIC0xNiw3ICsxNiw5 IEBACiAKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgor I2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgi CisjaW5jbHVkZSAidXRpbHMvanNvbmZ1bmNzLmgiCiAKIHR5cGVkZWYgc3RydWN0CiB7CkBA IC0xNzQsNiArMTc2LDcgQEAgZXh0ZXJuIGJvb2wganNwR2V0Qm9vbChKc29uUGF0aEl0ZW0g KnYpOwogZXh0ZXJuIGNoYXIgKmpzcEdldFN0cmluZyhKc29uUGF0aEl0ZW0gKnYsIGludDMy ICpsZW4pOwogZXh0ZXJuIGJvb2wganNwR2V0QXJyYXlTdWJzY3JpcHQoSnNvblBhdGhJdGVt ICp2LCBKc29uUGF0aEl0ZW0gKmZyb20sCiAJCQkJCQkJCSBKc29uUGF0aEl0ZW0gKnRvLCBp bnQgaSk7CitleHRlcm4gYm9vbCBqc3BJc011dGFibGUoSnNvblBhdGggKnBhdGgsIExpc3Qg KnZhcm5hbWVzLCBMaXN0ICp2YXJleHBycyk7CiAKIGV4dGVybiBjb25zdCBjaGFyICpqc3BP cGVyYXRpb25OYW1lKEpzb25QYXRoSXRlbVR5cGUgdHlwZSk7CiAKQEAgLTI0OCw0ICsyNTEs MzQgQEAgZXh0ZXJuIEpzb25QYXRoUGFyc2VSZXN1bHQgKnBhcnNlanNvbnBhdGgoY29uc3Qg Y2hhciAqc3RyLCBpbnQgbGVuKTsKIAogZXh0ZXJuIGludAlqc3BDb252ZXJ0UmVnZXhGbGFn cyh1aW50MzIgeGZsYWdzKTsKIAorLyoKKyAqIEV2YWx1YXRpb24gb2YganNvbnBhdGgKKyAq LworCisvKiBFeHRlcm5hbCB2YXJpYWJsZSBwYXNzZWQgaW50byBqc29ucGF0aC4gKi8KK3R5 cGVkZWYgc3RydWN0IEpzb25QYXRoVmFyaWFibGVFdmFsQ29udGV4dAoreworCWNoYXIJICAg Km5hbWU7CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlzdHJ1Y3QgRXhwckNv bnRleHQgKmVjb250ZXh0OworCXN0cnVjdCBFeHByU3RhdGUgICplc3RhdGU7CisJRGF0dW0J CXZhbHVlOworCWJvb2wJCWlzbnVsbDsKKwlib29sCQlldmFsdWF0ZWQ7Cit9IEpzb25QYXRo VmFyaWFibGVFdmFsQ29udGV4dDsKKworLyogU1FML0pTT04gaXRlbSAqLworZXh0ZXJuIHZv aWQgSnNvbkl0ZW1Gcm9tRGF0dW0oRGF0dW0gdmFsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1v ZCwKKwkJCQkJCQkgIEpzb25iVmFsdWUgKnJlcyk7CisKK2V4dGVybiBib29sICBKc29uUGF0 aEV4aXN0cyhEYXR1bSBqYiwgSnNvblBhdGggKnBhdGgsIExpc3QgKnZhcnMsIGJvb2wgKmVy cm9yKTsKK2V4dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAq anAsIEpzb25XcmFwcGVyIHdyYXBwZXIsCisJCQkJCQkgICBib29sICplbXB0eSwgYm9vbCAq ZXJyb3IsIExpc3QgKnZhcnMpOworZXh0ZXJuIEpzb25iVmFsdWUgKkpzb25QYXRoVmFsdWUo RGF0dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAqZW1wdHksCisJCQkJCQkJCSBib29sICpl cnJvciwgTGlzdCAqdmFycyk7CisKK2V4dGVybiBpbnQgRXZhbEpzb25QYXRoVmFyKHZvaWQg KnZhcnMsIGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJICAgSnNvbmJW YWx1ZSAqdmFsLCBKc29uYlZhbHVlICpiYXNlT2JqZWN0KTsKKwogI2VuZGlmCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGFyc2UucGwgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3ByZXByb2MvcGFyc2UucGwKaW5kZXggZGVlNmI4MjAwZC4uNWVjNTExZmQw MSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlLnBsCisr KyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJzZS5wbApAQCAtNDcsNiArNDcs OCBAQCBteSAlcmVwbGFjZV9zdHJpbmcgPSAoCiAJJ05PVF9MQScgICAgICAgICA9PiAnbm90 JywKIAknTlVMTFNfTEEnICAgICAgID0+ICdudWxscycsCiAJJ1dJVEhfTEEnICAgICAgICA9 PiAnd2l0aCcsCisJJ1dJVEhfTEFfVU5JUVVFJyA9PiAnd2l0aCcsCisJJ1dJVEhPVVRfTEEn ICAgICA9PiAnd2l0aG91dCcsCiAJJ1RZUEVDQVNUJyAgICAgICA9PiAnOjonLAogCSdET1Rf RE9UJyAgICAgICAgPT4gJy4uJywKIAknQ09MT05fRVFVQUxTJyAgID0+ICc6PScsCmRpZmYg LS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGFyc2VyLmMgYi9zcmMvaW50 ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGFyc2VyLmMKaW5kZXggYTQ0ZTA3YTE3YS4uNWUyYjYw NmY5YiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlci5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJzZXIuYwpAQCAtODMsNiAr ODMsNyBAQCBmaWx0ZXJlZF9iYXNlX3l5bGV4KHZvaWQpCiAJCWNhc2UgV0lUSDoKIAkJY2Fz ZSBVSURFTlQ6CiAJCWNhc2UgVVNDT05TVDoKKwkJY2FzZSBXSVRIT1VUOgogCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gY3VyX3Rva2VuOwpAQCAtMTQzLDYgKzE0NCwxOSBA QCBmaWx0ZXJlZF9iYXNlX3l5bGV4KHZvaWQpCiAJCQkJY2FzZSBPUkRJTkFMSVRZOgogCQkJ CQljdXJfdG9rZW4gPSBXSVRIX0xBOwogCQkJCQlicmVhazsKKwkJCQljYXNlIFVOSVFVRToK KwkJCQkJY3VyX3Rva2VuID0gV0lUSF9MQV9VTklRVUU7CisJCQkJCWJyZWFrOworCQkJfQor CQkJYnJlYWs7CisKKwkJY2FzZSBXSVRIT1VUOgorCQkJLyogUmVwbGFjZSBXSVRIT1VUIGJ5 IFdJVEhPVVRfTEEgaWYgaXQncyBmb2xsb3dlZCBieSBUSU1FICovCisJCQlzd2l0Y2ggKG5l eHRfdG9rZW4pCisJCQl7CisJCQkJY2FzZSBUSU1FOgorCQkJCQljdXJfdG9rZW4gPSBXSVRI T1VUX0xBOworCQkJCQlicmVhazsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFVJREVOVDoK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iYjYyNjM0MzE0Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0CkBA IC0wLDAgKzEsMTUgQEAKKy0tIEpTT05fRVhJU1RTCitTRUxFQ1QgSlNPTl9FWElTVFMoTlVM TCBGT1JNQVQgSlNPTiwgJyQnKTsKK0VSUk9SOiAgSlNPTl9FWElTVFMoKSBpcyBub3QgeWV0 IGltcGxlbWVudGVkIGZvciBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUIEpTT05fRVhJU1RT KE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAgICBeCistLSBKU09OX1ZB TFVFCitTRUxFQ1QgSlNPTl9WQUxVRShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworRVJST1I6 ICBKU09OX1ZBTFVFKCkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IganNvbiB0eXBlCitM SU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAg ICAgICAgICAgICBeCistLSBKU09OX1FVRVJZCitTRUxFQ1QgSlNPTl9RVUVSWShOVUxMIEZP Uk1BVCBKU09OLCAnJCcpOworRVJST1I6ICBKU09OX1FVRVJZKCkgaXMgbm90IHlldCBpbXBs ZW1lbnRlZCBmb3IganNvbiB0eXBlCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKE5VTEwg Rk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAgICBeCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvanNvbmIub3V0CmluZGV4IGE5Y2QxNDVhZWMuLjkwNWI1MGU4NTAgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC01NTA5LDMgKzU1MDksMTMzIEBAIHNl bGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwNSc6Ompzb25iOjppbnQ4OwogIDEyMzQ1CiAoMSByb3cpCiAKKy0tIHRlc3QgbWFwcGlu ZyBvZiBqc29uYiB0byBTUUwvSlNPTiBKU09OIHR5cGUKK3NlbGVjdCBqc29uKCcgeyAiYWEi OiAxLCAiYiIgOiAyIH0nKTsKKyAgICAgICAgIGpzb24gICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICB7ICJhYSI6IDEsICJiIiA6IDIgfQorKDEgcm93KQorCitzZWxl Y3QganNvbiAnIHsgImFhIjogMSwgImIiIDogMiB9JzsKKyAgICAgICAgIGpzb24gICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB7ICJhYSI6IDEsICJiIiA6IDIgfQor KDEgcm93KQorCitzZWxlY3QgcGdfY2F0YWxvZy5qc29uICcgeyAiYWEiOiAxLCAiYiIgOiAy IH0nOworICAgICAgICAganNvbiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgIHsgImFhIjogMSwgImIiIDogMiB9CisoMSByb3cpCisKK2NyZWF0ZSB0YWJsZSB0ZXN0 X2pzb25fYXNfanNvbiAoanMganNvbiwgamIganNvbmIpOworXGQgdGVzdF9qc29uX2FzX2pz b24KKyAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0X2pzb25fYXNfanNvbiIKKyBDb2x1bW4g fCBUeXBlICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBqcyAgICAgfCBqc29u ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgamIgICAgIHwganNvbmIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorCitzZXQgc3FsX2pzb24gPSBqc29uYjsKK3NlbGVjdCBqc29u KCcgeyAiYWEiOiAxLCAiYiIgOiAyIH0nKTsKKyAgICAgICBqc29uICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0KKyB7ImIiOiAyLCAiYWEiOiAxfQorKDEgcm93KQorCitzZWxlY3Qg anNvbiAnIHsgImFhIjogMSwgImIiIDogMiB9JzsKKyAgICAgICBqc29uYiAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyB7ImIiOiAyLCAiYWEiOiAxfQorKDEgcm93KQorCitzZWxl Y3QgcGdfY2F0YWxvZy5qc29uICcgeyAiYWEiOiAxLCAiYiIgOiAyIH0nOworICAgICAgICAg anNvbiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHsgImFhIjogMSwg ImIiIDogMiB9CisoMSByb3cpCisKK1xkIHRlc3RfanNvbl9hc19qc29uCisgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy50ZXN0X2pzb25fYXNfanNvbiIKKyBDb2x1bW4gfCAgICAgIFR5 cGUgICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGpz ICAgICB8IHBnX2NhdGFsb2cuanNvbiB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgamIg ICAgIHwganNvbiAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworY3Jl YXRlIHRhYmxlIHRlc3RfanNvbl9hc19qc29uYiAoanMganNvbiwgamIganNvbmIsIGp0IHBn X2NhdGFsb2cuanNvbik7CitcZCB0ZXN0X2pzb25fYXNfanNvbmIKKyAgICAgICAgICAgICBU YWJsZSAicHVibGljLnRlc3RfanNvbl9hc19qc29uYiIKKyBDb2x1bW4gfCAgICAgIFR5cGUg ICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGpzICAg ICB8IGpzb24gICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgamIgICAg IHwganNvbiAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBqdCAgICAg fCBwZ19jYXRhbG9nLmpzb24gfCAgICAgICAgICAgfCAgICAgICAgICB8IAorCitpbnNlcnQg aW50byB0ZXN0X2pzb25fYXNfanNvbmIgdmFsdWVzICgneyAiYSIgOiAxIH0nLCAneyAiYSIg OiAxIH0nLCAneyAiYSIgOiAxIH0nKTsKK3NlbGVjdCAqIGZyb20gdGVzdF9qc29uX2FzX2pz b25iOworICAgIGpzICAgIHwgICAgamIgICAgfCAgICAganQgICAgICAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgeyJhIjogMX0gfCB7ImEiOiAxfSB8IHsgImEi IDogMSB9CisoMSByb3cpCisKK3NlbGVjdCBqc29uYl9vYmplY3RfZmllbGQoanMsICdhJykg ZnJvbSB0ZXN0X2pzb25fYXNfanNvbmI7CisganNvbmJfb2JqZWN0X2ZpZWxkIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKK3NlbGVjdCBqc29uYl9vYmplY3RfZmll bGQoamIsICdhJykgZnJvbSB0ZXN0X2pzb25fYXNfanNvbmI7CisganNvbmJfb2JqZWN0X2Zp ZWxkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKK3NlbGVjdCBqc29u Yl9vYmplY3RfZmllbGQoanQsICdhJykgZnJvbSB0ZXN0X2pzb25fYXNfanNvbmI7CitFUlJP UjogIGZ1bmN0aW9uIGpzb25iX29iamVjdF9maWVsZChwZ19jYXRhbG9nLmpzb24sIHVua25v d24pIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IHNlbGVjdCBqc29uYl9vYmplY3RfZmllbGQo anQsICdhJykgZnJvbSB0ZXN0X2pzb25fYXNfanNvbmI7CisgICAgICAgICAgICAgICBeCitI SU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQg dHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgorc2Vs ZWN0IGpzb25fb2JqZWN0X2ZpZWxkKGp0LCAnYScpIGZyb20gdGVzdF9qc29uX2FzX2pzb25i OworIGpzb25fb2JqZWN0X2ZpZWxkIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEKKygxIHJv dykKKworc2V0IHNxbF9qc29uID0ganNvbjsKK1xkIHRlc3RfanNvbl9hc19qc29uYgorICAg ICAgICBUYWJsZSAicHVibGljLnRlc3RfanNvbl9hc19qc29uYiIKKyBDb2x1bW4gfCBUeXBl ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBqcyAgICAgfCBqc29uYiB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgamIgICAgIHwganNvbmIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorIGp0ICAgICB8IGpzb24gIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK Kworc2VsZWN0ICogZnJvbSB0ZXN0X2pzb25fYXNfanNvbmI7CisgICAganMgICAgfCAgICBq YiAgICB8ICAgICBqdCAgICAgIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyB7ImEiOiAxfSB8IHsiYSI6IDF9IHwgeyAiYSIgOiAxIH0KKygxIHJvdykKKworc2Vs ZWN0IGpzb25iX29iamVjdF9maWVsZChqcywgJ2EnKSBmcm9tIHRlc3RfanNvbl9hc19qc29u YjsKKyBqc29uYl9vYmplY3RfZmllbGQgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEKKygx IHJvdykKKworc2VsZWN0IGpzb25iX29iamVjdF9maWVsZChqYiwgJ2EnKSBmcm9tIHRlc3Rf anNvbl9hc19qc29uYjsKKyBqc29uYl9vYmplY3RfZmllbGQgCistLS0tLS0tLS0tLS0tLS0t LS0tLQorIDEKKygxIHJvdykKKworc2VsZWN0IGpzb25iX29iamVjdF9maWVsZChqdCwgJ2En KSBmcm9tIHRlc3RfanNvbl9hc19qc29uYjsKK0VSUk9SOiAgZnVuY3Rpb24ganNvbmJfb2Jq ZWN0X2ZpZWxkKGpzb24sIHVua25vd24pIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IHNlbGVj dCBqc29uYl9vYmplY3RfZmllbGQoanQsICdhJykgZnJvbSB0ZXN0X2pzb25fYXNfanNvbmI7 CisgICAgICAgICAgICAgICBeCitISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0aGUgZ2l2 ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBleHBs aWNpdCB0eXBlIGNhc3RzLgorc2VsZWN0IGpzb25fb2JqZWN0X2ZpZWxkKGp0LCAnYScpIGZy b20gdGVzdF9qc29uX2FzX2pzb25iOworIGpzb25fb2JqZWN0X2ZpZWxkIAorLS0tLS0tLS0t LS0tLS0tLS0tLQorIDEKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmJfc3FsanNvbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uZjJmNWUyNzFiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKQEAgLTAsMCArMSwxMDE4IEBACistLSBKU09O X0VYSVNUUworU0VMRUNUIEpTT05fRVhJU1RTKE5VTEw6Ompzb25iLCAnJCcpOworIGpzb25f ZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ1tdJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhKU09OX09CSkVDVChSRVRVUk5JTkcg anNvbmIpLCAnJCcpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQnKTsKKyBqc29uX2V4aXN0 cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAnbnVsbCcsICckJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1tdJywgJyQnKTsKKyBqc29u X2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VY SVNUUyhqc29uYiAnMScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0K KyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJpY3Qg JC5hJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJS T1IpOworRVJST1I6ICBqc29ucGF0aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBw bGllZCB0byBhbiBvYmplY3QKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICck LmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAnJC5hJyk7CisganNvbl9leGlzdHMgCist LS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg J1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ3N0cmljdCAkLmEnKTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnbGF4ICQuYScpOworIGpzb25fZXhpc3RzIAor LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25i ICd7fScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJiIjogMSwgImEiOiAyfScsICck LmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEuYicpOworIGpzb25fZXhpc3RzIAor LS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25i ICd7ImEiOiB7ImIiOiAxfX0nLCAnJC5hLmInKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0t LS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjog MSwgImIiOiAyfScsICckLmEuYicpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQor IGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6 IDJ9JywgJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIDEgQVMgeCk7CisganNvbl9leGlzdHMg CistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgJzEnIEFT IHgpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4g JHggJiYgQCA8ICR5KScgUEFTU0lORyAwIEFTIHgsIDIgQVMgeSk7CisganNvbl9leGlzdHMg CistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNT SU5HIDAgQVMgeCwgMSBBUyB5KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBm CisoMSByb3cpCisKKy0tIGV4dGVuc2lvbjogYm9vbGVhbiBleHByZXNzaW9ucworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQgPiAyJyk7CisganNvbl9leGlzdHMgCistLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEn LCAnJC5hID4gMicgRVJST1IgT04gRVJST1IpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0t LS0tLQorIHQKKygxIHJvdykKKworLS0gZXh0ZW5zaW9uOiBSRVRVUk5JTkcgY2xhdXNlCitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJFswXScgUkVUVVJOSU5HIGJvb2wpOwor IGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICcxJywgJyRbMV0nIFJFVFVSTklORyBib29sKTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAnMScsICckWzBdJyBSRVRVUk5JTkcgaW50KTsKKyBqc29uX2V4aXN0cyAKKy0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJzEnLCAnJFsxXScgUkVUVVJOSU5HIGludCk7CisganNvbl9leGlzdHMgCist LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDAKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICcxJywgJyRbMF0nIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyB0cnVlCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAnMScsICckWzFdJyBSRVRVUk5JTkcgdGV4dCk7CisganNvbl9leGlzdHMgCistLS0t LS0tLS0tLS0tCisgZmFsc2UKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25i ICcxJywgJ3N0cmljdCAkWzFdJyBSRVRVUk5JTkcgdGV4dCBGQUxTRSBPTiBFUlJPUik7Cisg anNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZmFsc2UKKygxIHJvdykKKworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICcxJywgJyRbMF0nIFJFVFVSTklORyBqc29uYik7CitFUlJP UjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byBqc29uYgorTElORSAxOiBTRUxFQ1Qg SlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJFswXScgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAg ICAgICAgICAgIF4KK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckWzBdJyBSRVRV Uk5JTkcgZmxvYXQ0KTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIHJl YWwKK0xJTkUgMTogU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyRbMF0nIFJFVFVS TklORyBmbG9hdDQpOworICAgICAgICAgICAgICAgXgorLS0gSlNPTl9WQUxVRQorU0VMRUNU IEpTT05fVkFMVUUoTlVMTDo6anNvbmIsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICck Jyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgaW50KTsKKyBqc29uX3Zh bHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAndHJ1ZScsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorIHRydWUKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAn JCcgUkVUVVJOSU5HIGJvb2wpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcpOworIGpzb25f dmFsdWUgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgaW50KSArIDIzNDsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyAgICAgIDM1NworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnMTIzJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgMTIzCisoMSByb3cpCisKKy8qIGpzb25iIGJ5dGVhID8/PyAqLworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgYnl0ZWEgRVJST1IgT04g RVJST1IpOworRVJST1I6ICBTUUwvSlNPTiBpdGVtIGNhbm5vdCBiZSBjYXN0IHRvIHRhcmdl dCB0eXBlCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMS4yMycsICckJyk7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEuMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEuMjMnLCAnJCcgUkVUVVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0t LS0tLS0tLS0tLQorICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7CisganNvbl92YWx1ZSAK Ky0tLS0tLS0tLS0tLQorICAgICAgIDEuMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsK K0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogIjEuMjMi CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcpOworIGpzb25fdmFsdWUg CistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFh IicsICckJyBSRVRVUk5JTkcgY2hhcig1KSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorIGFhYSAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIics ICckJyBSRVRVUk5JTkcgY2hhcigyKSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQor IGFhCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBS RVRVUk5JTkcganNvbik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcganNvbmIpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpz b24gRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFh IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIGpzb25iIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0t LS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFh YVwiIicsICckJyBSRVRVUk5JTkcganNvbik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorICJcImFhYVwiIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIlwi YWFhXCIiJywgJyQnIFJFVFVSTklORyBqc29uYik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0t LS0tLQorICJcImFhYVwiIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn ImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJh YWEiJywgJyQnIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZh bGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYWFhIgorU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQgREVGQVVMVCAxMTEgT04g RVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMTExCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMTIzIicsICckJyBSRVRVUk5JTkcg aW50KSArIDIzNDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgIDM1NworKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjIwMTctMDItMjAiJywgJyQnIFJFVFVS TklORyBkYXRlKSArIDk7CisgID9jb2x1bW4/ICAKKy0tLS0tLS0tLS0tLQorIDAzLTAxLTIw MTcKKygxIHJvdykKKworLS0gVGVzdCBOVUxMIGNoZWNrcyBleGVjdXRpb24gaW4gZG9tYWlu IHR5cGVzCitDUkVBVEUgRE9NQUlOIHNxbGpzb25iX2ludF9ub3RfbnVsbCBBUyBpbnQgTk9U IE5VTEw7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnIFJFVFVSTklORyBz cWxqc29uYl9pbnRfbm90X251bGwpOworRVJST1I6ICBkb21haW4gc3FsanNvbmJfaW50X25v dF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnMScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgTlVMTCBP TiBFUlJPUik7CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBu b3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQu YScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIE5VTEwgT04gRVJS T1IpOworRVJST1I6ICBkb21haW4gc3FsanNvbmJfaW50X25vdF9udWxsIGRvZXMgbm90IGFs bG93IG51bGwgdmFsdWVzCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ1tdJywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBw YXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBz Y2FsYXIgaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3t9JywgJyQnKTsKKyBqc29u X3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICd7fScsICckJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBl eHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gc2NhbGFy IGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQuYScpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBqc29ucGF0 aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIERFRkFVTFQgJ2Vycm9y JyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGVycm9yCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9O IEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZIEVS Uk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUIDIgT04gRVJST1IpOworIGpzb25f dmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicgT04gRVJST1IpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJzEnLCAnbGF4ICQuYScgTlVMTCBPTiBFTVBUWSBERUZBVUxUICcyJyBPTiBFUlJPUik7 CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUICcyJyBPTiBFTVBUWSBERUZB VUxUICczJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDIKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1Ig T04gRU1QVFkgREVGQVVMVCAnMycgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwyXScs ICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBleHByZXNzaW9u IGluIEpTT05fVkFMVUUgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gc2NhbGFyIGl0ZW0KK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwyXScsICckWypdJyBERUZBVUxUICcwJyBPTiBF UlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDAKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ1siICJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgRVJS T1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBp bnRlZ2VyOiAiICIKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIiAiXScsICckWypdJyBS RVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04gRVJST1IpOworIGpzb25fdmFsdWUgCist LS0tLS0tLS0tLS0KKyAgICAgICAgICA1CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04g RVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAxCisoMSBy b3cpCisKK1NFTEVDVAorCXgsCisJSlNPTl9WQUxVRSgKKwkJanNvbmIgJ3siYSI6IDEsICJi IjogMn0nLAorCQknJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgeCBBUyB4CisJCVJFVFVSTklO RyBpbnQKKwkJREVGQVVMVCAtMSBPTiBFTVBUWQorCQlERUZBVUxUIC0yIE9OIEVSUk9SCisJ KSB5CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDIpIHg7CisgeCB8IHkgIAorLS0tKy0t LS0KKyAwIHwgLTIKKyAxIHwgIDIKKyAyIHwgLTEKKygzIHJvd3MpCisKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIgKScgQVMg YSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICgxLDIpCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEs IDIgKScgQVMgYSBSRVRVUk5JTkcgcG9pbnQpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0t LS0KKyAoMSwyKQorKDEgcm93KQorCistLSBUZXN0IHRpbWVzdGFtcHR6IHBhc3NpbmcgYW5k IG91dHB1dAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5H IHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMpOworICAgICAg ICAgIGpzb25fdmFsdWUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBUdWUgRmViIDIwIDE4OjM0OjU2IDIwMTggUFNUCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAx OC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXB0eik7Cisg ICAgICAgICAganNvbl92YWx1ZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYgMjAxOCBQU1QKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6 ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcCk7 CisgICAgICAgIGpzb25fdmFsdWUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBUdWUgRmViIDIwIDE4OjM0OjU2IDIwMTgKKygxIHJvdykKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAy LTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb24pOworICAgICAgICAganNv bl92YWx1ZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIw MTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAx MjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uYik7CisgICAgICAgICBqc29uX3Zh bHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAiMjAxOC0w Mi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworLS0gSlNPTl9RVUVSWQorU0VMRUNU CisJSlNPTl9RVUVSWShqcywgJyQnKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSE9VVCBX UkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVS KSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIEFSUkFZIFdSQVBQ RVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIEFSUkFZIFdSQVBQRVIpCitGUk9NCisJ KFZBTFVFUworCQkoanNvbmIgJ251bGwnKSwKKwkJKCcxMi4zJyksCisJCSgndHJ1ZScpLAor CQkoJyJhYWEiJyksCisJCSgnWzEsIG51bGwsICIyIl0nKSwKKwkJKCd7ImEiOiAxLCAiYiI6 IFsyXX0nKQorCSkgZm9vKGpzKTsKKyAgICAganNvbl9xdWVyeSAgICAgfCAgICAganNvbl9x dWVyeSAgICAgfCAgICAganNvbl9xdWVyeSAgICAgfCAgICAgIGpzb25fcXVlcnkgICAgICB8 ICAgICAganNvbl9xdWVyeSAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbnVsbCAgICAgICAgICAgICAgIHwgbnVsbCAg ICAgICAgICAgICAgIHwgW251bGxdICAgICAgICAgICAgIHwgW251bGxdICAgICAgICAgICAg ICAgfCBbbnVsbF0KKyAxMi4zICAgICAgICAgICAgICAgfCAxMi4zICAgICAgICAgICAgICAg fCBbMTIuM10gICAgICAgICAgICAgfCBbMTIuM10gICAgICAgICAgICAgICB8IFsxMi4zXQor IHRydWUgICAgICAgICAgICAgICB8IHRydWUgICAgICAgICAgICAgICB8IFt0cnVlXSAgICAg ICAgICAgICB8IFt0cnVlXSAgICAgICAgICAgICAgIHwgW3RydWVdCisgImFhYSIgICAgICAg ICAgICAgIHwgImFhYSIgICAgICAgICAgICAgIHwgWyJhYWEiXSAgICAgICAgICAgIHwgWyJh YWEiXSAgICAgICAgICAgICAgfCBbImFhYSJdCisgWzEsIG51bGwsICIyIl0gICAgIHwgWzEs IG51bGwsICIyIl0gICAgIHwgWzEsIG51bGwsICIyIl0gICAgIHwgW1sxLCBudWxsLCAiMiJd XSAgICAgfCBbWzEsIG51bGwsICIyIl1dCisgeyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjog MSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBbMl19IHwgW3siYSI6IDEsICJiIjogWzJd fV0gfCBbeyJhIjogMSwgImIiOiBbMl19XQorKDYgcm93cykKKworU0VMRUNUCisJSlNPTl9R VUVSWShqcywgJ3N0cmljdCAkWypdJykgQVMgInVuc3BlYyIsCisJSlNPTl9RVUVSWShqcywg J3N0cmljdCAkWypdJyBXSVRIT1VUIFdSQVBQRVIpIEFTICJ3aXRob3V0IiwKKwlKU09OX1FV RVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUikgQVMgIndp dGggY29uZCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIFVOQ09ORElU SU9OQUwgQVJSQVkgV1JBUFBFUikgQVMgIndpdGggdW5jb25kIiwKKwlKU09OX1FVRVJZKGpz LCAnc3RyaWN0ICRbKl0nIFdJVEggQVJSQVkgV1JBUFBFUikgQVMgIndpdGgiCitGUk9NCisJ KFZBTFVFUworCQkoanNvbmIgJzEnKSwKKwkJKCdbXScpLAorCQkoJ1tudWxsXScpLAorCQko J1sxMi4zXScpLAorCQkoJ1t0cnVlXScpLAorCQkoJ1siYWFhIl0nKSwKKwkJKCdbWzEsIDIs IDNdXScpLAorCQkoJ1t7ImEiOiAxLCAiYiI6IFsyXX1dJyksCisJCSgnWzEsICIyIiwgbnVs bCwgWzNdXScpCisJKSBmb28oanMpOworICAgICAgIHVuc3BlYyAgICAgICB8ICAgICAgd2l0 aG91dCAgICAgICB8ICAgICAgd2l0aCBjb25kICAgICAgfCAgICAgd2l0aCB1bmNvbmQgICAg ICB8ICAgICAgICAgd2l0aCAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICB8IAorICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8IAorIG51bGwg ICAgICAgICAgICAgICB8IG51bGwgICAgICAgICAgICAgICB8IFtudWxsXSAgICAgICAgICAg ICAgfCBbbnVsbF0gICAgICAgICAgICAgICB8IFtudWxsXQorIDEyLjMgICAgICAgICAgICAg ICB8IDEyLjMgICAgICAgICAgICAgICB8IFsxMi4zXSAgICAgICAgICAgICAgfCBbMTIuM10g ICAgICAgICAgICAgICB8IFsxMi4zXQorIHRydWUgICAgICAgICAgICAgICB8IHRydWUgICAg ICAgICAgICAgICB8IFt0cnVlXSAgICAgICAgICAgICAgfCBbdHJ1ZV0gICAgICAgICAgICAg ICB8IFt0cnVlXQorICJhYWEiICAgICAgICAgICAgICB8ICJhYWEiICAgICAgICAgICAgICB8 IFsiYWFhIl0gICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAgICB8IFsiYWFhIl0K KyBbMSwgMiwgM10gICAgICAgICAgfCBbMSwgMiwgM10gICAgICAgICAgfCBbMSwgMiwgM10g ICAgICAgICAgIHwgW1sxLCAyLCAzXV0gICAgICAgICAgfCBbWzEsIDIsIDNdXQorIHsiYSI6 IDEsICJiIjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJd fSAgfCBbeyJhIjogMSwgImIiOiBbMl19XSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dCisgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgWzEsICIyIiwgbnVsbCwg WzNdXSB8IFsxLCAiMiIsIG51bGwsIFszXV0gIHwgWzEsICIyIiwgbnVsbCwgWzNdXQorKDkg cm93cykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyB0ZXh0KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0 IEtFRVAgUVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygx IHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyB0ZXh0IEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpOworIGpzb25fcXVlcnkgCist LS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgT01JVCBRVU9URVMpOworIGpzb25fcXVl cnkgCistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQgUVVPVEVTIE9OIFNDQUxB UiBTVFJJTkcpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIE9NSVQgUVVPVEVTIEVS Uk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUg anNvbgorREVUQUlMOiAgVG9rZW4gImFhYSIgaXMgaW52YWxpZC4KK0NPTlRFWFQ6ICBKU09O IGRhdGEsIGxpbmUgMTogYWFhCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAn JCcgUkVUVVJOSU5HIGpzb24gT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworRVJST1I6 ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBqc29uCitERVRBSUw6ICBUb2tlbiAi YWFhIiBpcyBpbnZhbGlkLgorQ09OVEVYVDogIEpTT04gZGF0YSwgbGluZSAxOiBhYWEKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgYnl0ZWEgRk9S TUFUIEpTT04gT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworIGpzb25fcXVlcnkgCist LS0tLS0tLS0tLS0KKyBceDYxNjE2MQorKDEgcm93KQorCistLSBRVU9URVMgYmVoYXZpb3Ig c2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgdXNlZDoKKy0tIFNo b3VsZCBmYWlsCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggV1JB UFBFUiBPTUlUIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBiZWhhdmlvciBz aGFsbCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUg MTogU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgT01J VCBRVU9URVMpLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcg V0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJl aGF2aW9yIHNoYWxsIG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNl ZAorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggV1JB UFBFUiBLRUVQIFFVT1RFUykuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx XScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgS0VFUCBRVU9URVMpOworRVJST1I6 ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3Igc2hhbGwgbm90IGJlIHNwZWNpZmllZCB3aGVu IFdJVEggV1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IC4uLk5fUVVFUlkoanNvbmIgJ1sxXScs ICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgS0VFUCBRVU9URS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBX UkFQUEVSIE9NSVQgUVVPVEVTKTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJlaGF2aW9y IHNoYWxsIG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAorTElO RSAxOiAuLi5OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQ UEVSIE9NSVQgUVVPVEUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTaG91bGQgc3VjY2VlZAorU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIT1VUIFdSQVBQRVIgT01JVCBRVU9U RVMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMV0KKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBR VU9URVMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMV0KKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nKTsKKyBqc29uX3F1ZXJ5IAor LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb XScsICckWypdJyBOVUxMIE9OIEVNUFRZKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF TVBUWSBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBBUlJB WSBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPQkpFQ1Qg T04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkp OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9OIEVNUFRZ KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImVtcHR5IgorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgTlVM TCBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkg RU1QVFkgQVJSQVkgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBb XQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJS T1IgT04gRU1QVFkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0t LS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1td JywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8g U1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVS Uk9SIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBFUlJPUiBPTiBF UlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fUVVFUlkgc2hv dWxkIHJldHVybiBzaW5nbGV0b24gaXRlbSB3aXRob3V0IHdyYXBwZXIKK0hJTlQ6ICB1c2Ug V0lUSCBXUkFQUEVSIGNsYXVzZSB0byB3cmFwIFNRTC9KU09OIGl0ZW0gc2VxdWVuY2UgaW50 byBhcnJheQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERFRkFV TFQgJyJlbXB0eSInIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg ImVtcHR5IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAn JCcgUkVUVVJOSU5HIGpzb24pOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwg Ml0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJF VFVSTklORyBqc29uIEZPUk1BVCBKU09OKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0t CisgWzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckJyBSRVRVUk5JTkcganNvbmIpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBb MSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQn IFJFVFVSTklORyBqc29uYiBGT1JNQVQgSlNPTik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0t LS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEs Ml0nLCAnJCcgUkVUVVJOSU5HIHRleHQpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0K KyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywg JyQnIFJFVFVSTklORyBjaGFyKDEwKSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQor IFsxLCAyXSAgICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJd JywgJyQnIFJFVFVSTklORyBjaGFyKDMpKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0t CisgWzEsCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICck JyBSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0t LS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEs Ml0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhKTsKKyAgIGpzb25fcXVlcnkgICAKKy0tLS0tLS0t LS0tLS0tLS0KKyBceDViMzEyYzIwMzI1ZAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OKTsKKyAg IGpzb25fcXVlcnkgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBceDViMzEyYzIwMzI1ZAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJO SU5HIGJ5dGVhIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0t LS0tLS0tLQorIFx4N2I3ZAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn WzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVNUFRZIE9CSkVD VCBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFx4N2I3ZAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJO SU5HIGpzb24gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0t LS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJd JywgJyRbKl0nIFJFVFVSTklORyBqc29uYiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworIGpz b25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QKKwl4LCB5 LAorCUpTT05fUVVFUlkoCisJCWpzb25iICdbMSwyLDMsNCw1LG51bGxdJywKKwkJJyRbKl0g PyAoQCA+PSAkeCAmJiBAIDw9ICR5KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlX SVRIIENPTkRJVElPTkFMIFdSQVBQRVIKKwkJRU1QVFkgQVJSQVkgT04gRU1QVFkKKwkpIGxp c3QKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMCwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJpZXMo MCwgNCkgeTsKKyB4IHwgeSB8ICAgICBsaXN0ICAgICAKKy0tLSstLS0rLS0tLS0tLS0tLS0t LS0KKyAwIHwgMCB8IFtdCisgMCB8IDEgfCBbMV0KKyAwIHwgMiB8IFsxLCAyXQorIDAgfCAz IHwgWzEsIDIsIDNdCisgMCB8IDQgfCBbMSwgMiwgMywgNF0KKyAxIHwgMCB8IFtdCisgMSB8 IDEgfCBbMV0KKyAxIHwgMiB8IFsxLCAyXQorIDEgfCAzIHwgWzEsIDIsIDNdCisgMSB8IDQg fCBbMSwgMiwgMywgNF0KKyAyIHwgMCB8IFtdCisgMiB8IDEgfCBbXQorIDIgfCAyIHwgWzJd CisgMiB8IDMgfCBbMiwgM10KKyAyIHwgNCB8IFsyLCAzLCA0XQorIDMgfCAwIHwgW10KKyAz IHwgMSB8IFtdCisgMyB8IDIgfCBbXQorIDMgfCAzIHwgWzNdCisgMyB8IDQgfCBbMywgNF0K KyA0IHwgMCB8IFtdCisgNCB8IDEgfCBbXQorIDQgfCAyIHwgW10KKyA0IHwgMyB8IFtdCisg NCB8IDQgfCBbNF0KKygyNSByb3dzKQorCistLSBFeHRlbnNpb246IHJlY29yZCB0eXBlcyBy ZXR1cm5pbmcKK0NSRUFURSBUWVBFIHNxbGpzb25iX3JlYyBBUyAoYSBpbnQsIHQgdGV4dCwg anMganNvbiwgamIganNvbmIsIGpzYSBqc29uW10pOworQ1JFQVRFIFRZUEUgc3FsanNvbmJf cmVjYSBBUyAocmVjYSBzcWxqc29uYl9yZWNbXSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9 XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVU VVJOSU5HIHNxbGpzb25iX3JlYyk7CisgICAgICAgICAgICAgICAgICAgICBqc29uX3F1ZXJ5 ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSxhYWEsIlsxLCAiIjIiIiwge31dIiwieyIi eCIiOiBbMSwgIiIyIiIsIHt9XX0iLCkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSB1bm5l c3QoKEpTT05fUVVFUlkoanNvbmIgJ3sianNhIjogIFt7ImEiOiAxLCAiYiI6IFsiZm9vIl19 LCB7ImEiOiAyLCAiYyI6IHt9fSwgMTIzXX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3Jl YykpLmpzYSk7CisgICAgICAgICB1bm5lc3QgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHsiYSI6IDEsICJiIjogWyJmb28iXX0KKyB7ImEiOiAyLCAiYyI6IHt9fQor IDEyMworKDMgcm93cykKKworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNv bmIgJ3sicmVjYSI6IFt7ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpi IjogW3t9LCB0cnVlXX1dfScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2Ep OworIGEgfCAgICAgIHQgICAgICB8IGpzIHwgICAgIGpiICAgICB8IGpzYSAKKy0tLSstLS0t LS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tCisgMSB8IFsiZm9vIiwgW11dIHwg ICAgfCAgICAgICAgICAgIHwgCisgMiB8ICAgICAgICAgICAgIHwgICAgfCBbe30sIHRydWVd IHwgCisoMiByb3dzKQorCistLSBFeHRlbnNpb246IGFycmF5IHR5cGVzIHJldHVybmluZwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJFVFVS TklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworICBqc29uX3F1ZXJ5ICAKKy0tLS0tLS0tLS0t LS0tCisgezEsMixOVUxMLDN9CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gdW5uZXN0KEpT T05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwg ImpiIjogW3t9LCB0cnVlXX1dJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9yZWNbXSkpOwor IGEgfCAgICAgIHQgICAgICB8IGpzIHwgICAgIGpiICAgICB8IGpzYSAKKy0tLSstLS0tLS0t LS0tLS0tKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tCisgMSB8IFsiZm9vIiwgW11dIHwgICAg fCAgICAgICAgICAgIHwgCisgMiB8ICAgICAgICAgICAgIHwgICAgfCBbe30sIHRydWVdIHwg CisoMiByb3dzKQorCistLSBFeHRlbnNpb246IGRvbWFpbiB0eXBlcyByZXR1cm5pbmcKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICckLmEnIFJFVFVSTklORyBzcWxq c29uYl9pbnRfbm90X251bGwpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAgICAg ICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScs ICckLmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwpOworRVJST1I6ICBkb21h aW4gc3FsanNvbmJfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCist LSBUZXN0IHRpbWVzdGFtcHR6IHBhc3NpbmcgYW5kIG91dHB1dAorU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIx IDEyOjM0OjU2ICsxMCcgQVMgdHMpOworICAgICAgICAganNvbl9xdWVyeSAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYr MDA6MDAiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxsJywgJyR0 cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRz IFJFVFVSTklORyBqc29uKTsKKyAgICAgICAgIGpzb25fcXVlcnkgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2KzAwOjAw IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBB U1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRV Uk5JTkcganNvbmIpOworICAgICAgICAganNvbl9xdWVyeSAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAiCiso MSByb3cpCisKKy0tIFRlc3QgY29uc3RyYWludHMKK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25i X2NvbnN0cmFpbnRzICgKKwlqcyB0ZXh0LAorCWkgaW50LAorCXgganNvbmIgREVGQVVMVCBK U09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBXSVRIIFdSQVBQRVIpCisJQ09OU1RS QUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQxCisJCUNIRUNLIChqcyBJUyBKU09OKQorCUNP TlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MgorCQlDSEVDSyAoSlNPTl9FWElTVFMo anM6Ompzb25iLCAnJC5hJyBQQVNTSU5HIGkgKyA1IEFTIGludCwgaTo6dGV4dCBBUyB0eHQs IGFycmF5WzEsMiwzXSBhcyBhcnIpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJh aW50MworCQlDSEVDSyAoSlNPTl9WQUxVRShqczo6anNvbmIsICckLmEnIFJFVFVSTklORyBp bnQgREVGQVVMVCAoJzEyJyB8fCBpKTo6aW50IE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+ IGkpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ0CisJCUNIRUNLIChKU09O X1FVRVJZKGpzOjpqc29uYiwgJyQuYScgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIEVNUFRZ IE9CSkVDVCBPTiBFUlJPUikgPCBqc29uYiAnWzEwXScpCisJQ09OU1RSQUlOVCB0ZXN0X2pz b25iX2NvbnN0cmFpbnQ1CisJCUNIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwgJyQuYScg UkVUVVJOSU5HIGNoYXIoNSkgT01JVCBRVU9URVMgRU1QVFkgQVJSQVkgT04gRU1QVFkpID4g ICdhJyBDT0xMQVRFICJDIikKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDYK KwkJQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJ3N0cmljdCAkLmEnIFJFVFVSTklO RyBpbnQgVFJVRSBPTiBFUlJPUikgPCAyKQorKTsKK1xkIHRlc3RfanNvbmJfY29uc3RyYWlu dHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJw dWJsaWMudGVzdF9qc29uYl9jb25zdHJhaW50cyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIGpzICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor IGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHggICAgICB8 IGpzb25iICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IEpTT05fUVVFUlkoJ1sxLCAyXSc6 Ompzb25iLCAnJFsqXScgUkVUVVJOSU5HIGpzb25iIFdJVEggVU5DT05ESVRJT05BTCBXUkFQ UEVSKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDEi IENIRUNLIChqcyBJUyBKU09OKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQyIiBDSEVD SyAoSlNPTl9FWElTVFMoanM6Ompzb25iLCAnJC4iYSInIFBBU1NJTkcgaSArIDUgQVMgaW50 LCBpOjp0ZXh0IEFTIHR4dCwgQVJSQVlbMSwgMiwgM10gQVMgYXJyKSkKKyAgICAidGVzdF9q c29uYl9jb25zdHJhaW50MyIgQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC4iYSIn IFJFVFVSTklORyBpbnRlZ2VyIERFRkFVTFQgKCcxMic6OnRleHQgfHwgaSk6OmludGVnZXIg T04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKKyAgICAidGVzdF9qc29uYl9jb25zdHJh aW50NCIgQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBq c29uYiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8 ICdbMTBdJzo6anNvbmIpCisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDUiIENIRUNLIChK U09OX1FVRVJZKGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgY2hhcmFjdGVyKDUpIE9N SVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgnYSc6OmJwY2hhciBDT0xMQVRF ICJDIikpCisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDYiIENIRUNLIChKU09OX0VYSVNU Uyhqczo6anNvbmIsICdzdHJpY3QgJC4iYSInIFJFVFVSTklORyBpbnRlZ2VyIFRSVUUgT04g RVJST1IpIDwgMikKKworU0VMRUNUIGNoZWNrX2NsYXVzZQorRlJPTSBpbmZvcm1hdGlvbl9z Y2hlbWEuY2hlY2tfY29uc3RyYWludHMKK1dIRVJFIGNvbnN0cmFpbnRfbmFtZSBMSUtFICd0 ZXN0X2pzb25iX2NvbnN0cmFpbnQlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jbGF1c2UgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICgoanMgSVMgSlNPTikpCisgKEpTT05fRVhJU1RTKChqcyk6Ompzb25iLCAnJC4iYSIn IFBBU1NJTkcgKGkgKyA1KSBBUyBpbnQsIChpKTo6dGV4dCBBUyB0eHQsIEFSUkFZWzEsIDIs IDNdIEFTIGFycikpCisgKChKU09OX1ZBTFVFKChqcyk6Ompzb25iLCAnJC4iYSInIFJFVFVS TklORyBpbnRlZ2VyIERFRkFVTFQgKCgnMTInOjp0ZXh0IHx8IGkpKTo6aW50ZWdlciBPTiBF TVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKSkKKyAoKEpTT05fUVVFUlkoKGpzKTo6anNvbmIs ICckLiJhIicgUkVUVVJOSU5HIGpzb25iIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBU WSBPQkpFQ1QgT04gRVJST1IpIDwgJ1sxMF0nOjpqc29uYikpCisgKChKU09OX1FVRVJZKChq cyk6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBjaGFyYWN0ZXIoNSkgT01JVCBRVU9URVMg RU1QVFkgQVJSQVkgT04gRU1QVFkpID4gKCdhJzo6YnBjaGFyIENPTExBVEUgIkMiKSkpCisg KChKU09OX0VYSVNUUygoanMpOjpqc29uYiwgJ3N0cmljdCAkLiJhIicgUkVUVVJOSU5HIGlu dGVnZXIgVFJVRSBPTiBFUlJPUikgPCAyKSkKKyg2IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRf ZXhwcihhZGJpbiwgYWRyZWxpZCkgRlJPTSBwZ19hdHRyZGVmIFdIRVJFIGFkcmVsaWQgPSAn dGVzdF9qc29uYl9jb25zdHJhaW50cyc6OnJlZ2NsYXNzOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSlNPTl9RVUVSWSgnWzEs IDJdJzo6anNvbmIsICckWypdJyBSRVRVUk5JTkcganNvbmIgV0lUSCBVTkNPTkRJVElPTkFM IFdSQVBQRVIpCisoMSByb3cpCisKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWlu dHMgVkFMVUVTICgnJywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0 X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pz b25iX2NvbnN0cmFpbnQxIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKCwgMSwg WzEsIDJdKS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgn MScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25z dHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJh aW50MiIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgxLCAxLCBbMSwgMl0pLgor SU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCdbXScpOworRVJS T1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlv bGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MiIKK0RFVEFJ TDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChbXSwgbnVsbCwgWzEsIDJdKS4KK0lOU0VSVCBJ TlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJiIjogMX0nLCAxKTsKK0VS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZp b2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDIiCitERVRB SUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoeyJiIjogMX0sIDEsIFsxLCAyXSkuCitJTlNF UlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDF9JywgMSk7 CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRz IiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQzIgor REVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKHsiYSI6IDF9LCAxLCBbMSwgMl0pLgor SU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImEiOiA3fScs IDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJh aW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50 NSIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEiOiA3fSwgMSwgWzEsIDJd KS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjog MTB9JywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2Nv bnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0 cmFpbnQ0IgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKHsiYSI6IDEwfSwgMSwg WzEsIDJdKS4KK0RST1AgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50czsKKy0tIFRlc3Qg bXV0YWJpbGlseSBvZCBxdWVyeSBmdW5jdGlvbnMKK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25i X211dGFiaWxpdHkoanMganNvbmIpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0 YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQnKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hWzBdJykpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRp bWUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckLmEgPyAoQCA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0 ZXRpbWUoKSA8ICQuZGF0ZXRpbWUoKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRl eCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0 aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitFUlJPUjogIGZ1bmN0aW9u cyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/ IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScp KTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlko anMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRpbWUoIllZLU1NLURE IEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0 ZXRpbWUoIllZLU1NLUREIEhIOk1JIikpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5k ZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBP TiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJI SDpNSSBUWkgiKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVB VEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5k YXRldGltZSgiSEg6TUkgVFpIIikgPCAkeScgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMg eCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVS WShqcywgJyQuZGF0ZXRpbWUoKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4 KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFy a2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA8ICR4JyBQQVNTSU5HICcxMjM0Jzo6aW50 IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckLmRhdGV0aW1lKCkgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzEyOjM0Jzo6 dGltZSBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11 c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0 YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIllZLU1NLUREIikgPyAoQCA9 PSAkeCknIFBBU1NJTkcgJzIwMjAtMDctMTQnOjpkYXRlIEFTIHgpKTsKK0NSRUFURSBJTkRF WCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/ IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsK K0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQg SU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJFsxLCAwIHRvICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFT U0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4 IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5k YXRldGltZSgiSEg6TUkiKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkp OworRFJPUCBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCA1NjJiNTg2ZDhlLi5lN2Q2MzU4YTI1 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKQEAgLTE0 NzMsOCArMTQ3MywxMCBAQCBXSEVSRSBhLmFnZ2Zub2lkID0gcC5vaWQgQU5ECiAgICAgICAg ICBOT1QgYmluYXJ5X2NvZXJjaWJsZShwLnByb2FyZ3R5cGVzWzFdLCBwdHIucHJvYXJndHlw ZXNbMl0pKQogICAgICBPUiAocC5wcm9uYXJncyA+IDIgQU5ECiAgICAgICAgICBOT1QgYmlu YXJ5X2NvZXJjaWJsZShwLnByb2FyZ3R5cGVzWzJdLCBwdHIucHJvYXJndHlwZXNbM10pKQot ICAgICAtLSB3ZSBjb3VsZCBjYXJyeSB0aGUgY2hlY2sgZnVydGhlciwgYnV0IDMgYXJncyBp cyBlbm91Z2ggZm9yIG5vdwotICAgICBPUiAocC5wcm9uYXJncyA+IDMpCisgICAgIE9SIChw LnByb25hcmdzID4gMyBBTkQKKyAgICAgICAgIE5PVCBiaW5hcnlfY29lcmNpYmxlKHAucHJv YXJndHlwZXNbM10sIHB0ci5wcm9hcmd0eXBlc1s0XSkpCisgICAgIC0tIHdlIGNvdWxkIGNh cnJ5IHRoZSBjaGVjayBmdXJ0aGVyLCBidXQgNCBhcmdzIGlzIGVub3VnaCBmb3Igbm93Cisg ICAgIE9SIChwLnByb25hcmdzID4gNCkKICAgICApOwogIGFnZ2Zub2lkIHwgcHJvbmFtZSB8 IG9pZCB8IHByb25hbWUgCiAtLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbi5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24ub3V0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUxYmQyMTYxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24ub3V0CkBAIC0wLDAgKzEsMTM1MiBA QAorLS0gSlNPTigpCitTRUxFQ1QgSlNPTigpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQg b3IgbmVhciAiKSIKK0xJTkUgMTogU0VMRUNUIEpTT04oKTsKKyAgICAgICAgICAgICAgICAg ICAgXgorU0VMRUNUIEpTT04oTlVMTCk7CisganNvbiAKKy0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgSlNPTigneyAiYSIgOiAxIH0gJyk7CisgICAgIGpzb24gICAgIAorLS0tLS0t LS0tLS0tLS0KKyB7ICJhIiA6IDEgfSAKKygxIHJvdykKKworU0VMRUNUIEpTT04oJ3sgImEi IDogMSB9ICcgRk9STUFUIEpTT04pOworICAgICBqc29uICAgICAKKy0tLS0tLS0tLS0tLS0t CisgeyAiYSIgOiAxIH0gCisoMSByb3cpCisKK1NFTEVDVCBKU09OKCd7ICJhIiA6IDEgfSAn IEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworRVJST1I6ICBKU09OIEVOQ09ESU5HIGNs YXVzZSBpcyBvbmx5IGFsbG93ZWQgZm9yIGJ5dGVhIGlucHV0IHR5cGUKK0xJTkUgMTogU0VM RUNUIEpTT04oJ3sgImEiIDogMSB9ICcgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OKCd7ICJh IiA6IDEgfSAnOjpieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKKyAgICAganNv biAgICAgCistLS0tLS0tLS0tLS0tLQorIHsgImEiIDogMSB9IAorKDEgcm93KQorCitTRUxF Q1QgcGdfdHlwZW9mKEpTT04oJ3sgImEiIDogMSB9ICcpKTsKKyBwZ190eXBlb2YgCistLS0t LS0tLS0tLQorIGpzb24KKygxIHJvdykKKworU0VMRUNUIEpTT04oJyAgIDEgICAnOjpqc29u KTsKKyAganNvbiAgIAorLS0tLS0tLS0tCisgICAgMSAgIAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTignICAgMSAgICc6Ompzb25iKTsKKyBqc29uIAorLS0tLS0tCisgMQorKDEgcm93KQor CitTRUxFQ1QgSlNPTignICAgMSAgICc6Ompzb24gV0lUSCBVTklRVUUgS0VZUyk7CitFUlJP UjogIGNhbm5vdCB1c2Ugbm9uLXN0cmluZyB0eXBlcyB3aXRoIFdJVEggVU5JUVVFIEtFWVMg Y2xhdXNlCitMSU5FIDE6IFNFTEVDVCBKU09OKCcgICAxICAgJzo6anNvbiBXSVRIIFVOSVFV RSBLRVlTKTsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OKDEyMyk7CitFUlJPUjog IGNhbm5vdCBjYXN0IHR5cGUgaW50ZWdlciB0byBqc29uCitMSU5FIDE6IFNFTEVDVCBKU09O KDEyMyk7CisgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OKCd7ImEiOiAxLCAi YSI6IDJ9Jyk7CisgICAgICAganNvbiAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHsi YSI6IDEsICJhIjogMn0KKygxIHJvdykKKworU0VMRUNUIEpTT04oJ3siYSI6IDEsICJhIjog Mn0nIFdJVEggVU5JUVVFIEtFWVMpOworRVJST1I6ICBkdXBsaWNhdGUgSlNPTiBvYmplY3Qg a2V5IHZhbHVlCitTRUxFQ1QgSlNPTigneyJhIjogMSwgImEiOiAyfScgV0lUSE9VVCBVTklR VUUgS0VZUyk7CisgICAgICAganNvbiAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHsi YSI6IDEsICJhIjogMn0KKygxIHJvdykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBTRUxFQ1QgSlNPTignMTIzJyk7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNP TignMTIzJzo6anNvbikKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIEpTT04oJzEyMycgRk9STUFUIEpTT04pOworICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0Cisg ICBPdXRwdXQ6IEpTT04oJzEyMyc6Ompzb24pCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OKCcxMjMnOjpieXRlYSBGT1JNQVQgSlNPTik7 CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQK KyAgIE91dHB1dDogSlNPTignXHgzMTMyMzMnOjpieXRlYSBGT1JNQVQgSlNPTikKKygyIHJv d3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT04oJzEyMyc6 OmJ5dGVhIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFJlc3VsdAorICAgT3V0cHV0OiBKU09OKCdceDMxMzIzMyc6OmJ5dGVhIEZPUk1BVCBKU09O IEVOQ09ESU5HIFVURjgpCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCBKU09OKCcxMjMnIFdJVEggVU5JUVVFIEtFWVMpOworICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBKU09O KCcxMjMnOjp0ZXh0IFdJVEggVU5JUVVFIEtFWVMpCisoMiByb3dzKQorCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OKCcxMjMnIFdJVEhPVVQgVU5JUVVFIEtF WVMpOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IEpTT04oJzEyMyc6Ompzb24pCiso MiByb3dzKQorCitTRUxFQ1QgSlNPTignMTIzJyBSRVRVUk5JTkcgdGV4dCk7CitFUlJPUjog IGNhbm5vdCB1c2UgUkVUVVJOSU5HIHR5cGUgdGV4dCBpbiBKU09OKCkKK0xJTkUgMTogU0VM RUNUIEpTT04oJzEyMycgUkVUVVJOSU5HIHRleHQpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg SlNPTignMTIzJyk7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTignMTIzJzo6 anNvbikKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU IEpTT04oJzEyMycgUkVUVVJOSU5HIGpzb24pOworICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRw dXQ6IEpTT04oJzEyMyc6Ompzb24pCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCBKU09OKCcxMjMnIFJFVFVSTklORyBqc29uYik7CisgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6 IEpTT04oJzEyMyc6Ompzb25iIFJFVFVSTklORyBqc29uYikKKygyIHJvd3MpCisKK1NFTEVD VCBwZ190eXBlb2YoSlNPTignMTIzJykpOworIHBnX3R5cGVvZiAKKy0tLS0tLS0tLS0tCisg anNvbgorKDEgcm93KQorCitTRUxFQ1QgcGdfdHlwZW9mKEpTT04oJzEyMycgUkVUVVJOSU5H IGpzb24pKTsKKyBwZ190eXBlb2YgCistLS0tLS0tLS0tLQorIGpzb24KKygxIHJvdykKKwor U0VMRUNUIHBnX3R5cGVvZihKU09OKCcxMjMnIFJFVFVSTklORyBqc29uYikpOworIHBnX3R5 cGVvZiAKKy0tLS0tLS0tLS0tCisganNvbmIKKygxIHJvdykKKworU0VUIHNxbF9qc29uID0g anNvbmI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OKCcxMjMn KTsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBKU09OKCcxMjMnOjpqc29uKQorKDIg cm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIz JyBSRVRVUk5JTkcganNvbik7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTign MTIzJzo6anNvbikKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUIEpTT04oJzEyMycgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAor ICAgT3V0cHV0OiBKU09OKCcxMjMnOjpqc29uKQorKDIgcm93cykKKworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJyBSRVRVUk5JTkcgcGdfY2F0YWxv Zy5qc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRw dXQ6IEpTT04oJzEyMyc6OnBnX2NhdGFsb2cuanNvbiBSRVRVUk5JTkcgcGdfY2F0YWxvZy5q c29uKQorKDIgcm93cykKKworU0VMRUNUIHBnX3R5cGVvZihKU09OKCcxMjMnKSk7CisgcGdf dHlwZW9mIAorLS0tLS0tLS0tLS0KKyBqc29uCisoMSByb3cpCisKK1NFTEVDVCBwZ190eXBl b2YoSlNPTignMTIzJyBSRVRVUk5JTkcganNvbikpOworIHBnX3R5cGVvZiAKKy0tLS0tLS0t LS0tCisganNvbgorKDEgcm93KQorCitTRUxFQ1QgcGdfdHlwZW9mKEpTT04oJzEyMycgUkVU VVJOSU5HIGpzb25iKSk7CisgcGdfdHlwZW9mIAorLS0tLS0tLS0tLS0KKyBqc29uCisoMSBy b3cpCisKK1NFTEVDVCBwZ190eXBlb2YoSlNPTignMTIzJyBSRVRVUk5JTkcgcGdfY2F0YWxv Zy5qc29uKSk7CisgICAgcGdfdHlwZW9mICAgIAorLS0tLS0tLS0tLS0tLS0tLS0KKyBwZ19j YXRhbG9nLmpzb24KKygxIHJvdykKKworU0VUIHNxbF9qc29uID0ganNvbjsKKy0tIEpTT05f U0NBTEFSKCkKK1NFTEVDVCBKU09OX1NDQUxBUigpOworRVJST1I6ICBzeW50YXggZXJyb3Ig YXQgb3IgbmVhciAiKSIKK0xJTkUgMTogU0VMRUNUIEpTT05fU0NBTEFSKCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9TQ0FMQVIoTlVMTCk7CisganNv bl9zY2FsYXIgCistLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ND QUxBUihOVUxMOjppbnQpOworIGpzb25fc2NhbGFyIAorLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzKTsKKyBqc29uX3NjYWxhciAKKy0tLS0t LS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fU0NBTEFSKDEyMy40NSk7 CisganNvbl9zY2FsYXIgCistLS0tLS0tLS0tLS0tCisgMTIzLjQ1CisoMSByb3cpCisKK1NF TEVDVCBKU09OX1NDQUxBUigxMjMuNDU6Om51bWVyaWMpOworIGpzb25fc2NhbGFyIAorLS0t LS0tLS0tLS0tLQorIDEyMy40NQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9TQ0FMQVIodHJ1 ZSk7CisganNvbl9zY2FsYXIgCistLS0tLS0tLS0tLS0tCisgdHJ1ZQorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9TQ0FMQVIoZmFsc2UpOworIGpzb25fc2NhbGFyIAorLS0tLS0tLS0tLS0t LQorIGZhbHNlCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NDQUxBUignIDEyMy40NScpOwor IGpzb25fc2NhbGFyIAorLS0tLS0tLS0tLS0tLQorICIgMTIzLjQ1IgorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9TQ0FMQVIoJzIwMjAtMDYtMDcnOjpkYXRlKTsKKyBqc29uX3NjYWxhciAg CistLS0tLS0tLS0tLS0tLQorICIyMDIwLTA2LTA3IgorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9TQ0FMQVIoJzIwMjAtMDYtMDcgMDE6MDI6MDMnOjp0aW1lc3RhbXApOworICAgICAganNv bl9zY2FsYXIgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMjAtMDYtMDdU MDE6MDI6MDMiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NDQUxBUigne30nOjpqc29uKTsK KyBqc29uX3NjYWxhciAKKy0tLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9TQ0FMQVIoJ3t9Jzo6anNvbmIpOworIGpzb25fc2NhbGFyIAorLS0tLS0tLS0tLS0t LQorIHt9CisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU IEpTT05fU0NBTEFSKDEyMyk7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IEpTT05fU0NB TEFSKDEyMykKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUIEpTT05fU0NBTEFSKCcxMjMnKTsKKyAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0 CisgICBPdXRwdXQ6IEpTT05fU0NBTEFSKCcxMjMnOjp0ZXh0KQorKDIgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzIFJFVFVS TklORyBqc29uKTsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TQ0FMQVIoMTIz KQorKDIgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNP Tl9TQ0FMQVIoMTIzIFJFVFVSTklORyBqc29uYik7CisgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TQ0FMQVIoMTIzIFJF VFVSTklORyBqc29uYikKKygyIHJvd3MpCisKK1NFVCBzcWxfanNvbiA9IGpzb25iOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzKTsKKyAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TQ0FMQVIoMTIzKQorKDIgcm93cykKKwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzIFJF VFVSTklORyBqc29uKTsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TQ0FMQVIo MTIzKQorKDIgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg SlNPTl9TQ0FMQVIoMTIzIFJFVFVSTklORyBqc29uYik7CisgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBP dXRwdXQ6IEpTT05fU0NBTEFSKDEyMykKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUIEpTT05fU0NBTEFSKDEyMyBSRVRVUk5JTkcgcGdfY2F0YWxv Zy5qc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IEpTT05fU0NBTEFSKDEyMyBSRVRV Uk5JTkcgcGdfY2F0YWxvZy5qc29uKQorKDIgcm93cykKKworU0VUIHNxbF9qc29uID0ganNv bjsKKy0tIEpTT05fU0VSSUFMSVpFKCkKK1NFTEVDVCBKU09OX1NFUklBTElaRSgpOworRVJS T1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKSIKK0xJTkUgMTogU0VMRUNUIEpTT05f U0VSSUFMSVpFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1Qg SlNPTl9TRVJJQUxJWkUoTlVMTCk7CisganNvbl9zZXJpYWxpemUgCistLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NFUklBTElaRShKU09OKCd7ICJhIiA6 IDEgfSAnKSk7CisganNvbl9zZXJpYWxpemUgCistLS0tLS0tLS0tLS0tLS0tCisgeyAiYSIg OiAxIH0gCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NFUklBTElaRSgneyAiYSIgOiAxIH0g Jyk7CisganNvbl9zZXJpYWxpemUgCistLS0tLS0tLS0tLS0tLS0tCisgeyAiYSIgOiAxIH0g CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NFUklBTElaRSgnMScpOworIGpzb25fc2VyaWFs aXplIAorLS0tLS0tLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworU0VMRUNUIEpTT05fU0VS SUFMSVpFKCcxJyBGT1JNQVQgSlNPTik7CisganNvbl9zZXJpYWxpemUgCistLS0tLS0tLS0t LS0tLS0tCisgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoJ3sgImEiIDog MSB9ICcgUkVUVVJOSU5HIGJ5dGVhKTsKKyAgICAgICBqc29uX3NlcmlhbGl6ZSAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBceDdiMjAyMjYxMjIyMDNhMjAzMTIw N2QyMAorKDEgcm93KQorCitTRUxFQ1QgcGdfdHlwZW9mKEpTT05fU0VSSUFMSVpFKE5VTEwp KTsKKyBwZ190eXBlb2YgCistLS0tLS0tLS0tLQorIHRleHQKKygxIHJvdykKKworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoJ3t9Jyk7Cisg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TRVJJQUxJWkUoJ3t9Jzo6anNvbiBSRVRVUk5J TkcgdGV4dCkKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUIEpTT05fU0VSSUFMSVpFKCd7fScgUkVUVVJOSU5HIGJ5dGVhKTsKKyAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0 CisgICBPdXRwdXQ6IEpTT05fU0VSSUFMSVpFKCd7fSc6Ompzb24gUkVUVVJOSU5HIGJ5dGVh KQorKDIgcm93cykKKworLS0gSlNPTl9PQkpFQ1QoKQorU0VMRUNUIEpTT05fT0JKRUNUKCk7 CisganNvbl9vYmplY3QgCistLS0tLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNU IEpTT05fT0JKRUNUKFJFVFVSTklORyBqc29uKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0t LS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGpz b24gRk9STUFUIEpTT04pOworIGpzb25fb2JqZWN0IAorLS0tLS0tLS0tLS0tLQorIHt9Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIpOworIGpzb25f b2JqZWN0IAorLS0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09C SkVDVChSRVRVUk5JTkcganNvbmIgRk9STUFUIEpTT04pOworIGpzb25fb2JqZWN0IAorLS0t LS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5J TkcgdGV4dCk7CisganNvbl9vYmplY3QgCistLS0tLS0tLS0tLS0tCisge30KKygxIHJvdykK KworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyB0ZXh0IEZPUk1BVCBKU09OKTsKKyBq c29uX29iamVjdCAKKy0tLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9PQkpFQ1QoUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7CitF UlJPUjogIGNhbm5vdCBzZXQgSlNPTiBlbmNvZGluZyBmb3Igbm9uLWJ5dGVhIG91dHB1dCB0 eXBlcworTElORSAxOiBTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIHRleHQgRk9STUFU IEpTT04gRU5DT0RJTkcgVVRGOCkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcgdGV4dCBGT1JN QVQgSlNPTiBFTkNPRElORyBJTlZBTElEX0VOQ09ESU5HKTsKK0VSUk9SOiAgdW5yZWNvZ25p emVkIEpTT04gZW5jb2Rpbmc6IGludmFsaWRfZW5jb2RpbmcKK1NFTEVDVCBKU09OX09CSkVD VChSRVRVUk5JTkcgYnl0ZWEpOworIGpzb25fb2JqZWN0IAorLS0tLS0tLS0tLS0tLQorIFx4 N2I3ZAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGJ5dGVhIEZP Uk1BVCBKU09OKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0tLS0tLS0KKyBceDdiN2QKKygx IHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNP TiBFTkNPRElORyBVVEY4KTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0tLS0tLS0KKyBceDdi N2QKKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBGT1JN QVQgSlNPTiBFTkNPRElORyBVVEYxNik7CitFUlJPUjogIHVuc3VwcG9ydGVkIEpTT04gZW5j b2RpbmcKK0xJTkUgMTogU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBGT1JN QVQgSlNPTiBFTkNPRElORyBVVEYxLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorSElOVDogIG9ubHkgVVRGOCBKU09OIGVuY29kaW5nIGlzIHN1 cHBvcnRlZAorU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNP TiBFTkNPRElORyBVVEYzMik7CitFUlJPUjogIHVuc3VwcG9ydGVkIEpTT04gZW5jb2RpbmcK K0xJTkUgMTogU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNP TiBFTkNPRElORyBVVEYzLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorSElOVDogIG9ubHkgVVRGOCBKU09OIGVuY29kaW5nIGlzIHN1cHBvcnRl ZAorU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nOiBOVUxMOjppbnQgRk9STUFUIEpTT04pOwor RVJST1I6ICBjYW5ub3QgdXNlIG5vbi1zdHJpbmcgdHlwZXMgd2l0aCBleHBsaWNpdCBGT1JN QVQgSlNPTiBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nOiBOVUxM OjppbnQgRk9STUFUIEpTT04pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2Zvbyc6IE5VTEw6OmludCBGT1JN QVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK0VSUk9SOiAgSlNPTiBFTkNPRElORyBjbGF1c2Ug aXMgb25seSBhbGxvd2VkIGZvciBieXRlYSBpbnB1dCB0eXBlCitMSU5FIDE6IFNFTEVDVCBK U09OX09CSkVDVCgnZm9vJzogTlVMTDo6aW50IEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURi4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgSlNPTl9PQkpFQ1QoJ2Zvbyc6IE5VTEw6Ompzb24gRk9STUFUIEpTT04pOworV0FSTklO RzogIEZPUk1BVCBKU09OIGhhcyBubyBlZmZlY3QgZm9yIGpzb24gYW5kIGpzb25iIHR5cGVz CitMSU5FIDE6IFNFTEVDVCBKU09OX09CSkVDVCgnZm9vJzogTlVMTDo6anNvbiBGT1JNQVQg SlNPTik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CisgIGpzb25fb2JqZWN0ICAgCistLS0tLS0tLS0tLS0tLS0tCisgeyJmb28iIDogbnVsbH0K KygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nOiBOVUxMOjpqc29uIEZPUk1B VCBKU09OIEVOQ09ESU5HIFVURjgpOworRVJST1I6ICBKU09OIEVOQ09ESU5HIGNsYXVzZSBp cyBvbmx5IGFsbG93ZWQgZm9yIGJ5dGVhIGlucHV0IHR5cGUKK0xJTkUgMTogU0VMRUNUIEpT T05fT0JKRUNUKCdmb28nOiBOVUxMOjpqc29uIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVULi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgSlNPTl9PQkpFQ1QoJ2Zvbyc6IE5VTEw6Ompzb25iIEZPUk1BVCBKU09OKTsKK1dBUk5J Tkc6ICBGT1JNQVQgSlNPTiBoYXMgbm8gZWZmZWN0IGZvciBqc29uIGFuZCBqc29uYiB0eXBl cworTElORSAxOiBTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2Zvbyc6IE5VTEw6Ompzb25iIEZPUk1B VCBKU09OKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCisgIGpzb25fb2JqZWN0ICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiZm9vIjogbnVsbH0K KygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nOiBOVUxMOjpqc29uYiBGT1JN QVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK0VSUk9SOiAgSlNPTiBFTkNPRElORyBjbGF1c2Ug aXMgb25seSBhbGxvd2VkIGZvciBieXRlYSBpbnB1dCB0eXBlCitMSU5FIDE6IFNFTEVDVCBK U09OX09CSkVDVCgnZm9vJzogTlVMTDo6anNvbmIgRk9STUFUIEpTT04gRU5DT0RJTkcgVS4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NF TEVDVCBKU09OX09CSkVDVChOVUxMOiAxKTsKK0VSUk9SOiAgYXJndW1lbnQgMSBjYW5ub3Qg YmUgbnVsbAorSElOVDogIE9iamVjdCBrZXlzIHNob3VsZCBiZSB0ZXh0LgorU0VMRUNUIEpT T05fT0JKRUNUKCdhJzogMiArIDMpOworIGpzb25fb2JqZWN0IAorLS0tLS0tLS0tLS0tLQor IHsiYSIgOiA1fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnIFZBTFVFIDIg KyAzKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0tLS0tLS0KKyB7ImEiIDogNX0KKygxIHJv dykKKworLS1TRUxFQ1QgSlNPTl9PQkpFQ1QoS0VZICdhJyBWQUxVRSAyICsgMyk7CitTRUxF Q1QgSlNPTl9PQkpFQ1QoJ2EnIHx8IDI6IDEpOworIGpzb25fb2JqZWN0IAorLS0tLS0tLS0t LS0tLQorIHsiYTIiIDogMX0KKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKCgnYScg fHwgMikgVkFMVUUgMSk7CisganNvbl9vYmplY3QgCistLS0tLS0tLS0tLS0tCisgeyJhMiIg OiAxfQorKDEgcm93KQorCistLVNFTEVDVCBKU09OX09CSkVDVCgnYScgfHwgMiBWQUxVRSAx KTsKKy0tU0VMRUNUIEpTT05fT0JKRUNUKEtFWSAnYScgfHwgMiBWQUxVRSAxKTsKK1NFTEVD VCBKU09OX09CSkVDVCgnYSc6IDI6OnRleHQpOworIGpzb25fb2JqZWN0IAorLS0tLS0tLS0t LS0tLQorIHsiYSIgOiAiMiJ9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVCgnYScg VkFMVUUgMjo6dGV4dCk7CisganNvbl9vYmplY3QgCistLS0tLS0tLS0tLS0tCisgeyJhIiA6 ICIyIn0KKygxIHJvdykKKworLS1TRUxFQ1QgSlNPTl9PQkpFQ1QoS0VZICdhJyBWQUxVRSAy Ojp0ZXh0KTsKK1NFTEVDVCBKU09OX09CSkVDVCgxOjp0ZXh0OiAyKTsKKyBqc29uX29iamVj dCAKKy0tLS0tLS0tLS0tLS0KKyB7IjEiIDogMn0KKygxIHJvdykKKworU0VMRUNUIEpTT05f T0JKRUNUKCgxOjp0ZXh0KSBWQUxVRSAyKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0tLS0t LS0KKyB7IjEiIDogMn0KKygxIHJvdykKKworLS1TRUxFQ1QgSlNPTl9PQkpFQ1QoMTo6dGV4 dCBWQUxVRSAyKTsKKy0tU0VMRUNUIEpTT05fT0JKRUNUKEtFWSAxOjp0ZXh0IFZBTFVFIDIp OworU0VMRUNUIEpTT05fT0JKRUNUKGpzb24gJ1sxXSc6IDEyMyk7CitFUlJPUjogIGtleSB2 YWx1ZSBtdXN0IGJlIHNjYWxhciwgbm90IGFycmF5LCBjb21wb3NpdGUsIG9yIGpzb24KK1NF TEVDVCBKU09OX09CSkVDVChBUlJBWVsxLDIsM106ICdhYWEnKTsKK0VSUk9SOiAga2V5IHZh bHVlIG11c3QgYmUgc2NhbGFyLCBub3QgYXJyYXksIGNvbXBvc2l0ZSwgb3IganNvbgorU0VM RUNUIEpTT05fT0JKRUNUKAorCSdhJzogJzEyMycsCisJMS4yMzogMTIzLAorCSdjJzoganNv biAnWyAxLHRydWUseyB9IF0nLAorCSdkJzoganNvbmIgJ3sgIngiIDogMTIzLjQ1IH0nCisp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25fb2JqZWN0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6ICIxMjMiLCAiYyI6IFsx LCB0cnVlLCB7fV0sICJkIjogeyJ4IjogMTIzLjQ1fSwgIjEuMjMiOiAxMjN9CisoMSByb3cp CisKK1NFTEVDVCBKU09OX09CSkVDVCgKKwknYSc6ICcxMjMnLAorCTEuMjM6IDEyMywKKwkn Yyc6IGpzb24gJ1sgMSx0cnVlLHsgfSBdJywKKwknZCc6IGpzb25iICd7ICJ4IiA6IDEyMy40 NSB9JworCVJFVFVSTklORyBqc29uYgorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBqc29uX29iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB7ImEiOiAiMTIzIiwgImMiOiBbMSwgdHJ1ZSwge31dLCAiZCI6IHsieCI6IDEyMy40 NX0sICIxLjIzIjogMTIzfQorKDEgcm93KQorCisvKgorU0VMRUNUIEpTT05fT0JKRUNUKAor CSdhJzogJzEyMycsCisJS0VZIDEuMjMgVkFMVUUgMTIzLAorCSdjJyBWQUxVRSBqc29uICdb MSwgdHJ1ZSwge31dJworKTsKKyovCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnOiAnMTIzJywg J2InOiBKU09OX09CSkVDVCgnYSc6IDExMSwgJ2InOiAnYWFhJykpOworICAgICAgICAgICAg ICAgICAganNvbl9vYmplY3QgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJhIiA6ICIxMjMiLCAiYiIgOiB7 ImEiIDogMTExLCAiYiIgOiAiYWFhIn19CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVD VCgnYSc6ICcxMjMnLCAnYic6IEpTT05fT0JKRUNUKCdhJzogMTExLCAnYic6ICdhYWEnIFJF VFVSTklORyBqc29uYikpOworICAgICAgICAgICAgICAgIGpzb25fb2JqZWN0ICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHsiYSI6ICIxMjMiLCAiYiI6IHsiYSI6IDExMSwgImIiOiAiYWFhIn19CisoMSByb3cpCisK K1NFTEVDVCBKU09OX09CSkVDVCgnYSc6IEpTT05fT0JKRUNUKCdiJzogMSBSRVRVUk5JTkcg dGV4dCkpOworICAgICAganNvbl9vYmplY3QgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgeyJhIiA6ICJ7XCJiXCIgOiAxfSJ9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09C SkVDVCgnYSc6IEpTT05fT0JKRUNUKCdiJzogMSBSRVRVUk5JTkcgdGV4dCkgRk9STUFUIEpT T04pOworICAgIGpzb25fb2JqZWN0ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiYSIg OiB7ImIiIDogMX19CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6IEpTT05f T0JKRUNUKCdiJzogMSBSRVRVUk5JTkcgYnl0ZWEpKTsKKyAgICAgICAgICAganNvbl9vYmpl Y3QgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJh IiA6ICJcXHg3YjIyNjIyMjIwM2EyMDMxN2QifQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9P QkpFQ1QoJ2EnOiBKU09OX09CSkVDVCgnYic6IDEgUkVUVVJOSU5HIGJ5dGVhKSBGT1JNQVQg SlNPTik7CisgICAganNvbl9vYmplY3QgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJh IiA6IHsiYiIgOiAxfX0KKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKCdhJzogJzEn LCAnYic6IE5VTEwsICdjJzogMik7CisgICAgICAgICAgIGpzb25fb2JqZWN0ICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJhIiA6ICIxIiwg ImIiIDogbnVsbCwgImMiIDogMn0KKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKCdh JzogJzEnLCAnYic6IE5VTEwsICdjJzogMiBOVUxMIE9OIE5VTEwpOworICAgICAgICAgICBq c29uX29iamVjdCAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHsiYSIgOiAiMSIsICJiIiA6IG51bGwsICJjIiA6IDJ9CisoMSByb3cpCisKK1NF TEVDVCBKU09OX09CSkVDVCgnYSc6ICcxJywgJ2InOiBOVUxMLCAnYyc6IDIgQUJTRU5UIE9O IE5VTEwpOworICAgICBqc29uX29iamVjdCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHsiYSIgOiAiMSIsICJjIiA6IDJ9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVD VCgxOiAxLCAnMSc6IE5VTEwgV0lUSCBVTklRVUUpOworRVJST1I6ICBkdXBsaWNhdGUgSlNP TiBrZXkgIjEiCitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwgJzEnOiBOVUxMIEFCU0VOVCBP TiBOVUxMIFdJVEggVU5JUVVFKTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04ga2V5ICIxIgor U0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcxJzogTlVMTCBOVUxMIE9OIE5VTEwgV0lUSCBV TklRVUUgUkVUVVJOSU5HIGpzb25iKTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04gb2JqZWN0 IGtleSB2YWx1ZQorU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcxJzogTlVMTCBBQlNFTlQg T04gTlVMTCBXSVRIIFVOSVFVRSBSRVRVUk5JTkcganNvbmIpOworRVJST1I6ICBkdXBsaWNh dGUgSlNPTiBvYmplY3Qga2V5IHZhbHVlCitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwgJzIn OiBOVUxMLCAnMSc6IDEgTlVMTCBPTiBOVUxMIFdJVEggVU5JUVVFKTsKK0VSUk9SOiAgZHVw bGljYXRlIEpTT04ga2V5ICIxIgorU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVM TCwgJzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFKTsKK0VSUk9SOiAgZHVwbGlj YXRlIEpTT04ga2V5ICIxIgorU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVMTCwg JzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJVEhPVVQgVU5JUVVFKTsKKyAgICBqc29uX29iamVj dCAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiMSIgOiAxLCAiMSIgOiAxfQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwgJzInOiBOVUxMLCAnMSc6IDEgQUJT RU5UIE9OIE5VTEwgV0lUSCBVTklRVUUgUkVUVVJOSU5HIGpzb25iKTsKK0VSUk9SOiAgZHVw bGljYXRlIEpTT04gb2JqZWN0IGtleSB2YWx1ZQorU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEs ICcyJzogTlVMTCwgJzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJVEhPVVQgVU5JUVVFIFJFVFVS TklORyBqc29uYik7CisganNvbl9vYmplY3QgCistLS0tLS0tLS0tLS0tCisgeyIxIjogMX0K KygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVMTCwgJzMnOiAx LCA0OiBOVUxMLCAnNSc6ICdhJyBBQlNFTlQgT04gTlVMTCBXSVRIIFVOSVFVRSBSRVRVUk5J TkcganNvbmIpOworICAgICAgICBqc29uX29iamVjdCAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsiMSI6IDEsICIzIjogMSwgIjUiOiAiYSJ9CisoMSByb3cp CisKKy0tIEpTT05fQVJSQVkoKQorU0VMRUNUIEpTT05fQVJSQVkoKTsKKyBqc29uX2FycmF5 IAorLS0tLS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoUkVU VVJOSU5HIGpzb24pOworIGpzb25fYXJyYXkgCistLS0tLS0tLS0tLS0KKyBbXQorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcganNvbiBGT1JNQVQgSlNPTik7Cisg anNvbl9hcnJheSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSByb3cpCisKK1NFTEVDVCBKU09O X0FSUkFZKFJFVFVSTklORyBqc29uYik7CisganNvbl9hcnJheSAKKy0tLS0tLS0tLS0tLQor IFtdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyBqc29uYiBGT1JN QVQgSlNPTik7CisganNvbl9hcnJheSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSByb3cpCisK K1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX2FycmF5IAorLS0t LS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5H IHRleHQgRk9STUFUIEpTT04pOworIGpzb25fYXJyYXkgCistLS0tLS0tLS0tLS0KKyBbXQor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNP TiBFTkNPRElORyBVVEY4KTsKK0VSUk9SOiAgY2Fubm90IHNldCBKU09OIGVuY29kaW5nIGZv ciBub24tYnl0ZWEgb3V0cHV0IHR5cGVzCitMSU5FIDE6IFNFTEVDVCBKU09OX0FSUkFZKFJF VFVSTklORyB0ZXh0IEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9BUlJBWShSRVRV Uk5JTkcgdGV4dCBGT1JNQVQgSlNPTiBFTkNPRElORyBJTlZBTElEX0VOQ09ESU5HKTsKK0VS Uk9SOiAgdW5yZWNvZ25pemVkIEpTT04gZW5jb2Rpbmc6IGludmFsaWRfZW5jb2RpbmcKK1NF TEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyBieXRlYSk7CisganNvbl9hcnJheSAKKy0tLS0t LS0tLS0tLQorIFx4NWI1ZAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5J TkcgYnl0ZWEgRk9STUFUIEpTT04pOworIGpzb25fYXJyYXkgCistLS0tLS0tLS0tLS0KKyBc eDViNWQKKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGJ5dGVhIEZP Uk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworIGpzb25fYXJyYXkgCistLS0tLS0tLS0tLS0K KyBceDViNWQKKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGJ5dGVh IEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjE2KTsKK0VSUk9SOiAgdW5zdXBwb3J0ZWQgSlNP TiBlbmNvZGluZworTElORSAxOiBTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcgYnl0ZWEg Rk9STUFUIEpTT04gRU5DT0RJTkcgVVRGMTYuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBvbmx5IFVURjggSlNPTiBlbmNvZGluZyBp cyBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyBieXRlYSBGT1JNQVQg SlNPTiBFTkNPRElORyBVVEYzMik7CitFUlJPUjogIHVuc3VwcG9ydGVkIEpTT04gZW5jb2Rp bmcKK0xJTkUgMTogU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBK U09OIEVOQ09ESU5HIFVURjMyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgb25seSBVVEY4IEpTT04gZW5jb2RpbmcgaXMgc3VwcG9y dGVkCitTRUxFQ1QgSlNPTl9BUlJBWSgnYWFhJywgMTExLCB0cnVlLCBhcnJheVsxLDIsM10s IE5VTEwsIGpzb24gJ3siYSI6IFsxXX0nLCBqc29uYiAnWyJhIiwzXScpOworICAgICAgICAg ICAgICAgICAgICAganNvbl9hcnJheSAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJhYWEi LCAxMTEsIHRydWUsIFsxLCAyLCAzXSwgeyJhIjogWzFdfSwgWyJhIiwgM11dCisoMSByb3cp CisKK1NFTEVDVCBKU09OX0FSUkFZKCdhJywgIE5VTEwsICdiJyBOVUxMICAgT04gTlVMTCk7 CisgICAganNvbl9hcnJheSAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIFsiYSIsIG51bGws ICJiIl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoJ2EnLCAgTlVMTCwgJ2InIEFC U0VOVCBPTiBOVUxMKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0tCisgWyJhIiwgImIi XQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShOVUxMLCBOVUxMLCAnYicgQUJTRU5U IE9OIE5VTEwpOworIGpzb25fYXJyYXkgCistLS0tLS0tLS0tLS0KKyBbImIiXQorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9BUlJBWSgnYScsICBOVUxMLCAnYicgTlVMTCAgIE9OIE5VTEwg UkVUVVJOSU5HIGpzb25iKTsKKyAgICBqc29uX2FycmF5ICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tCisgWyJhIiwgbnVsbCwgImIiXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWSgn YScsICBOVUxMLCAnYicgQUJTRU5UIE9OIE5VTEwgUkVUVVJOSU5HIGpzb25iKTsKKyBqc29u X2FycmF5IAorLS0tLS0tLS0tLS0tCisgWyJhIiwgImIiXQorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9BUlJBWShOVUxMLCBOVUxMLCAnYicgQUJTRU5UIE9OIE5VTEwgUkVUVVJOSU5HIGpz b25iKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0tCisgWyJiIl0KKygxIHJvdykKKwor U0VMRUNUIEpTT05fQVJSQVkoSlNPTl9BUlJBWSgneyAiYSIgOiAxMjMgfScgUkVUVVJOSU5H IHRleHQpKTsKKyAgICAgICAgICBqc29uX2FycmF5ICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbIltcInsgXFxcImFcXFwiIDogMTIzIH1cIl0iXQor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShKU09OX0FSUkFZKCd7ICJhIiA6IDEyMyB9 JyBGT1JNQVQgSlNPTiBSRVRVUk5JTkcgdGV4dCkpOworICAgICAganNvbl9hcnJheSAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJbeyBcImFcIiA6IDEyMyB9XSJdCiso MSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKEpTT05fQVJSQVkoJ3sgImEiIDogMTIzIH0n IEZPUk1BVCBKU09OIFJFVFVSTklORyB0ZXh0KSBGT1JNQVQgSlNPTik7CisgICAganNvbl9h cnJheSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgW1t7ICJhIiA6IDEyMyB9XV0KKygx IHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUIGkgRlJPTSAoVkFMVUVTICgxKSwg KDIpLCAoTlVMTCksICg0KSkgZm9vKGkpKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0t CisgWzEsIDIsIDRdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpIEZS T00gKFZBTFVFUyAoTlVMTDo6aW50W10pLCAoJ3sxLDJ9JyksIChOVUxMKSwgKE5VTEwpLCAo J3szLDR9JyksIChOVUxMKSkgZm9vKGkpKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0t CisgW1sxLDJdLCAgICsKKyAgWzMsNF1dCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZ KFNFTEVDVCBpIEZST00gKFZBTFVFUyAoTlVMTDo6aW50W10pLCAoJ3sxLDJ9JyksIChOVUxM KSwgKE5VTEwpLCAoJ3szLDR9JyksIChOVUxMKSkgZm9vKGkpIFJFVFVSTklORyBqc29uYik7 CisgICAganNvbl9hcnJheSAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIFtbMSwgMl0sIFsz LCA0XV0KKygxIHJvdykKKworLS1TRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9NIChW QUxVRVMgKE5VTEw6OmludFtdKSwgKCd7MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7Myw0 fScpLCAoTlVMTCkpIGZvbyhpKSBOVUxMIE9OIE5VTEwpOworLS1TRUxFQ1QgSlNPTl9BUlJB WShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6OmludFtdKSwgKCd7MSwyfScpLCAoTlVM TCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVMTCkpIGZvbyhpKSBOVUxMIE9OIE5VTEwgUkVU VVJOSU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpIEZST00gKFZBTFVF UyAoMyksICgxKSwgKE5VTEwpLCAoMikpIGZvbyhpKSBPUkRFUiBCWSBpKTsKKyBqc29uX2Fy cmF5IAorLS0tLS0tLS0tLS0tCisgWzEsIDIsIDNdCisoMSByb3cpCisKKy0tIFNob3VsZCBm YWlsCitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgRlJPTSAoVkFMVUVTICgxKSkgZm9vKGkp KTsKK0VSUk9SOiAgc3VicXVlcnkgbXVzdCByZXR1cm4gb25seSBvbmUgY29sdW1uCitMSU5F IDE6IFNFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBGUk9NIChWQUxVRVMgKDEpKSBmb28oaSkp OworICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUIGksIGkgRlJP TSAoVkFMVUVTICgxKSkgZm9vKGkpKTsKK0VSUk9SOiAgc3VicXVlcnkgbXVzdCByZXR1cm4g b25seSBvbmUgY29sdW1uCitMSU5FIDE6IFNFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpLCBp IEZST00gKFZBTFVFUyAoMSkpIGZvbyhpKSk7CisgICAgICAgICAgICAgICBeCitTRUxFQ1Qg SlNPTl9BUlJBWShTRUxFQ1QgKiBGUk9NIChWQUxVRVMgKDEsIDIpKSBmb28oaSwgaikpOwor RVJST1I6ICBzdWJxdWVyeSBtdXN0IHJldHVybiBvbmx5IG9uZSBjb2x1bW4KK0xJTkUgMTog U0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUICogRlJPTSAoVkFMVUVTICgxLCAyKSkgZm9vKGks IGopKTsKKyAgICAgICAgICAgICAgIF4KKy0tIEpTT05fQVJSQVlBR0coKQorU0VMRUNUCUpT T05fQVJSQVlBR0coaSkgSVMgTlVMTCwKKwkJSlNPTl9BUlJBWUFHRyhpIFJFVFVSTklORyBq c29uYikgSVMgTlVMTAorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCkgaTsKKyA/Y29sdW1u PyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAgfCB0Ciso MSByb3cpCisKK1NFTEVDVAlKU09OX0FSUkFZQUdHKGkpLAorCQlKU09OX0FSUkFZQUdHKGkg UkVUVVJOSU5HIGpzb25iKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgaTsKKyAganNv bl9hcnJheWFnZyAgfCAganNvbl9hcnJheWFnZyAgCistLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLQorIFsxLCAyLCAzLCA0LCA1XSB8IFsxLCAyLCAzLCA0LCA1XQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWUFHRyhpIE9SREVSIEJZIGkgREVTQykKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUpIGk7CisgIGpzb25fYXJyYXlhZ2cgIAorLS0tLS0tLS0t LS0tLS0tLS0KKyBbNSwgNCwgMywgMiwgMV0KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJS QVlBR0coaTo6dGV4dDo6anNvbikKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIGk7Cisg IGpzb25fYXJyYXlhZ2cgIAorLS0tLS0tLS0tLS0tLS0tLS0KKyBbMSwgMiwgMywgNCwgNV0K KygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVlBR0coSlNPTl9BUlJBWShpLCBpICsgMSBS RVRVUk5JTkcgdGV4dCkgRk9STUFUIEpTT04pCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 KSBpOworICAgICAgICAgICAgICBqc29uX2FycmF5YWdnICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDJdLCBbMiwg M10sIFszLCA0XSwgWzQsIDVdLCBbNSwgNl1dCisoMSByb3cpCisKK1NFTEVDVAlKU09OX0FS UkFZQUdHKE5VTEwpLAorCQlKU09OX0FSUkFZQUdHKE5VTEwgUkVUVVJOSU5HIGpzb25iKQor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSk7CisganNvbl9hcnJheWFnZyB8IGpzb25fYXJy YXlhZ2cgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgW10gICAgICAgICAg ICB8IFtdCisoMSByb3cpCisKK1NFTEVDVAlKU09OX0FSUkFZQUdHKE5VTEwgTlVMTCBPTiBO VUxMKSwKKwkJSlNPTl9BUlJBWUFHRyhOVUxMIE5VTEwgT04gTlVMTCBSRVRVUk5JTkcganNv bmIpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KTsKKyAgICAgICAgIGpzb25fYXJyYXlh Z2cgICAgICAgICAgfCAgICAgICAgIGpzb25fYXJyYXlhZ2cgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXSB8IFtudWxsLCBudWxsLCBu dWxsLCBudWxsLCBudWxsXQorKDEgcm93KQorCitTRUxFQ1QKKwlKU09OX0FSUkFZQUdHKGJh ciksCisJSlNPTl9BUlJBWUFHRyhiYXIgUkVUVVJOSU5HIGpzb25iKSwKKwlKU09OX0FSUkFZ QUdHKGJhciBBQlNFTlQgT04gTlVMTCksCisJSlNPTl9BUlJBWUFHRyhiYXIgQUJTRU5UIE9O IE5VTEwgUkVUVVJOSU5HIGpzb25iKSwKKwlKU09OX0FSUkFZQUdHKGJhciBOVUxMIE9OIE5V TEwpLAorCUpTT05fQVJSQVlBR0coYmFyIE5VTEwgT04gTlVMTCBSRVRVUk5JTkcganNvbmIp LAorCUpTT05fQVJSQVlBR0coZm9vKSwKKwlKU09OX0FSUkFZQUdHKGZvbyBSRVRVUk5JTkcg anNvbmIpLAorCUpTT05fQVJSQVlBR0coZm9vIE9SREVSIEJZIGJhcikgRklMVEVSIChXSEVS RSBiYXIgPiAyKSwKKwlKU09OX0FSUkFZQUdHKGZvbyBPUkRFUiBCWSBiYXIgUkVUVVJOSU5H IGpzb25iKSBGSUxURVIgKFdIRVJFIGJhciA+IDIpCitGUk9NCisJKFZBTFVFUyAoTlVMTCks ICgzKSwgKDEpLCAoTlVMTCksIChOVUxMKSwgKDUpLCAoMiksICg0KSwgKE5VTEwpKSBmb28o YmFyKTsKKyAganNvbl9hcnJheWFnZyAgfCAganNvbl9hcnJheWFnZyAgfCAganNvbl9hcnJh eWFnZyAgfCAganNvbl9hcnJheWFnZyAgfCAgICAgICAgICAgICAganNvbl9hcnJheWFnZyAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAganNvbl9hcnJheWFnZyAgICAgICAgICAgICAg fCAganNvbl9hcnJheWFnZyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGpzb25fYXJyYXlhZ2cgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBqc29uX2FycmF5YWdnIHwgICAg ICAgICAgICBqc29uX2FycmF5YWdnICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgWzMsIDEsIDUsIDIsIDRdIHwgWzMsIDEsIDUsIDIsIDRdIHwgWzMsIDEs IDUsIDIsIDRdIHwgWzMsIDEsIDUsIDIsIDRdIHwgW251bGwsIDMsIDEsIG51bGwsIG51bGws IDUsIDIsIDQsIG51bGxdIHwgW251bGwsIDMsIDEsIG51bGwsIG51bGwsIDUsIDIsIDQsIG51 bGxdIHwgW3siYmFyIjpudWxsfSwgK3wgW3siYmFyIjogbnVsbH0sIHsiYmFyIjogM30sIHsi YmFyIjogMX0sIHsiYmFyIjogbnVsbH0sIHsiYmFyIjogbnVsbH0sIHsiYmFyIjogNX0sIHsi YmFyIjogMn0sIHsiYmFyIjogNH0sIHsiYmFyIjogbnVsbH1dIHwgW3siYmFyIjozfSwgICt8 IFt7ImJhciI6IDN9LCB7ImJhciI6IDR9LCB7ImJhciI6IDV9XQorICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6M30sICAgICt8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICB7ImJhciI6NH0sICArfCAKKyAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgeyJiYXIiOjF9LCAgICArfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgeyJiYXIiOjV9XSAgIHwgCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIHsiYmFyIjpudWxsfSwgK3wgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8IAorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICB7ImJhciI6bnVsbH0sICt8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgfCAKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgeyJiYXIiOjV9LCAgICArfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgCisg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHsiYmFy IjoyfSwgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IAorICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6NH0sICAg ICt8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAKKyAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgeyJiYXIiOm51bGx9XSAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgCisoMSByb3cpCisKK1NFTEVDVAorCWJhciwg SlNPTl9BUlJBWUFHRyhiYXIpIEZJTFRFUiAoV0hFUkUgYmFyID4gMikgT1ZFUiAoUEFSVElU SU9OIEJZIGZvby5iYXIgJSAyKQorRlJPTQorCShWQUxVRVMgKE5VTEwpLCAoMyksICgxKSwg KE5VTEwpLCAoTlVMTCksICg1KSwgKDIpLCAoNCksIChOVUxMKSwgKDUpLCAoNCkpIGZvbyhi YXIpOworIGJhciB8IGpzb25fYXJyYXlhZ2cgCistLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAg IDQgfCBbNCwgNF0KKyAgIDQgfCBbNCwgNF0KKyAgIDIgfCBbNCwgNF0KKyAgIDUgfCBbNSwg MywgNV0KKyAgIDMgfCBbNSwgMywgNV0KKyAgIDEgfCBbNSwgMywgNV0KKyAgIDUgfCBbNSwg MywgNV0KKyAgICAgfCAKKyAgICAgfCAKKyAgICAgfCAKKyAgICAgfCAKKygxMSByb3dzKQor CistLSBKU09OX09CSkVDVEFHRygpCitTRUxFQ1QJSlNPTl9PQkpFQ1RBR0coJ2tleSc6IDEp IElTIE5VTEwsCisJCUpTT05fT0JKRUNUQUdHKCdrZXknOiAxIFJFVFVSTklORyBqc29uYikg SVMgTlVMTAorV0hFUkUgRkFMU0U7CisgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHQgICAgICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9P QkpFQ1RBR0coTlVMTDogMSk7CitFUlJPUjogIGZpZWxkIG5hbWUgbXVzdCBub3QgYmUgbnVs bAorU0VMRUNUIEpTT05fT0JKRUNUQUdHKE5VTEw6IDEgUkVUVVJOSU5HIGpzb25iKTsKK0VS Uk9SOiAgZmllbGQgbmFtZSBtdXN0IG5vdCBiZSBudWxsCitTRUxFQ1QKKwlKU09OX09CSkVD VEFHRyhpOiBpKSwKKy0tCUpTT05fT0JKRUNUQUdHKGkgVkFMVUUgaSksCistLQlKU09OX09C SkVDVEFHRyhLRVkgaSBWQUxVRSBpKSwKKwlKU09OX09CSkVDVEFHRyhpOiBpIFJFVFVSTklO RyBqc29uYikKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgaTsKKyAgICAgICAgICAg ICAgICAganNvbl9vYmplY3RhZ2cgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICBq c29uX29iamVjdGFnZyAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsgIjEiIDogMSwgIjIiIDogMiwgIjMiIDogMywgIjQiIDogNCwg IjUiIDogNSB9IHwgeyIxIjogMSwgIjIiOiAyLCAiMyI6IDMsICI0IjogNCwgIjUiOiA1fQor KDEgcm93KQorCitTRUxFQ1QKKwlKU09OX09CSkVDVEFHRyhrOiB2KSwKKwlKU09OX09CSkVD VEFHRyhrOiB2IE5VTEwgT04gTlVMTCksCisJSlNPTl9PQkpFQ1RBR0coazogdiBBQlNFTlQg T04gTlVMTCksCisJSlNPTl9PQkpFQ1RBR0coazogdiBSRVRVUk5JTkcganNvbmIpLAorCUpT T05fT0JKRUNUQUdHKGs6IHYgTlVMTCBPTiBOVUxMIFJFVFVSTklORyBqc29uYiksCisJSlNP Tl9PQkpFQ1RBR0coazogdiBBQlNFTlQgT04gTlVMTCBSRVRVUk5JTkcganNvbmIpCitGUk9N CisJKFZBTFVFUyAoMSwgMSksICgxLCBOVUxMKSwgKDIsIE5VTEwpLCAoMywgMykpIGZvbyhr LCB2KTsKKyAgICAgICAgICAgICAgICBqc29uX29iamVjdGFnZyAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgIGpzb25fb2JqZWN0YWdnICAgICAgICAgICAgICAgIHwgICAganNv bl9vYmplY3RhZ2cgICAgfCAgICAgICAgIGpzb25fb2JqZWN0YWdnICAgICAgICAgfCAgICAg ICAgIGpzb25fb2JqZWN0YWdnICAgICAgICAgfCAganNvbl9vYmplY3RhZ2cgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgeyAiMSIgOiAxLCAiMSIgOiBu dWxsLCAiMiIgOiBudWxsLCAiMyIgOiAzIH0gfCB7ICIxIiA6IDEsICIxIiA6IG51bGwsICIy IiA6IG51bGwsICIzIiA6IDMgfSB8IHsgIjEiIDogMSwgIjMiIDogMyB9IHwgeyIxIjogbnVs bCwgIjIiOiBudWxsLCAiMyI6IDN9IHwgeyIxIjogbnVsbCwgIjIiOiBudWxsLCAiMyI6IDN9 IHwgeyIxIjogMSwgIjMiOiAzfQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1RBR0co azogdiBXSVRIIFVOSVFVRSBLRVlTKQorRlJPTSAoVkFMVUVTICgxLCAxKSwgKDEsIE5VTEwp LCAoMiwgMikpIGZvbyhrLCB2KTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04ga2V5ICIxIgor U0VMRUNUIEpTT05fT0JKRUNUQUdHKGs6IHYgQUJTRU5UIE9OIE5VTEwgV0lUSCBVTklRVUUg S0VZUykKK0ZST00gKFZBTFVFUyAoMSwgMSksICgxLCBOVUxMKSwgKDIsIDIpKSBmb28oaywg dik7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OIGtleSAiMSIKK1NFTEVDVCBKU09OX09CSkVD VEFHRyhrOiB2IEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFIEtFWVMpCitGUk9NIChWQUxV RVMgKDEsIDEpLCAoMCwgTlVMTCksICgzLCBOVUxMKSwgKDIsIDIpLCAoNCwgTlVMTCkpIGZv byhrLCB2KTsKKyAgICBqc29uX29iamVjdGFnZyAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB7ICIxIiA6IDEsICIyIiA6IDIgfQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9PQkpF Q1RBR0coazogdiBXSVRIIFVOSVFVRSBLRVlTIFJFVFVSTklORyBqc29uYikKK0ZST00gKFZB TFVFUyAoMSwgMSksICgxLCBOVUxMKSwgKDIsIDIpKSBmb28oaywgdik7CitFUlJPUjogIGR1 cGxpY2F0ZSBKU09OIG9iamVjdCBrZXkgdmFsdWUKK1NFTEVDVCBKU09OX09CSkVDVEFHRyhr OiB2IEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFIEtFWVMgUkVUVVJOSU5HIGpzb25iKQor RlJPTSAoVkFMVUVTICgxLCAxKSwgKDEsIE5VTEwpLCAoMiwgMikpIGZvbyhrLCB2KTsKK0VS Uk9SOiAgZHVwbGljYXRlIEpTT04gb2JqZWN0IGtleSB2YWx1ZQorLS0gVGVzdCBKU09OX09C SkVDVCBkZXBhcnNpbmcKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBK U09OX09CSkVDVCgnZm9vJyA6ICcxJyBGT1JNQVQgSlNPTiwgJ2JhcicgOiAnYmF6JyBSRVRV Uk5JTkcganNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBKU09OX09CSkVDVCgnZm9vJyA6ICcx Jzo6anNvbiwgJ2JhcicgOiAnYmF6Jzo6dGV4dCBSRVRVUk5JTkcganNvbikKKygyIHJvd3Mp CisKK0NSRUFURSBWSUVXIGpzb25fb2JqZWN0X3ZpZXcgQVMKK1NFTEVDVCBKU09OX09CSkVD VCgnZm9vJyA6ICcxJyBGT1JNQVQgSlNPTiwgJ2JhcicgOiAnYmF6JyBSRVRVUk5JTkcganNv bik7Citcc3YganNvbl9vYmplY3RfdmlldworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJs aWMuanNvbl9vYmplY3RfdmlldyBBUworIFNFTEVDVCBKU09OX09CSkVDVCgnZm9vJyA6ICcx Jzo6dGV4dCBGT1JNQVQgSlNPTiwgJ2JhcicgOiAnYmF6Jzo6dGV4dCBSRVRVUk5JTkcganNv bikgQVMgImpzb25fb2JqZWN0IgorRFJPUCBWSUVXIGpzb25fb2JqZWN0X3ZpZXc7CistLSBU ZXN0IEpTT05fQVJSQVkgZGVwYXJzaW5nCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgSlNPTl9BUlJBWSgnMScgRk9STUFUIEpTT04sIDIgUkVUVVJOSU5HIGpzb24p OworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9BUlJBWSgnMSc6Ompzb24sIDIgUkVUVVJOSU5H IGpzb24pCisoMiByb3dzKQorCitDUkVBVEUgVklFVyBqc29uX2FycmF5X3ZpZXcgQVMKK1NF TEVDVCBKU09OX0FSUkFZKCcxJyBGT1JNQVQgSlNPTiwgMiBSRVRVUk5JTkcganNvbik7Citc c3YganNvbl9hcnJheV92aWV3CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29u X2FycmF5X3ZpZXcgQVMKKyBTRUxFQ1QgSlNPTl9BUlJBWSgnMSc6OnRleHQgRk9STUFUIEpT T04sIDIgUkVUVVJOSU5HIGpzb24pIEFTICJqc29uX2FycmF5IgorRFJPUCBWSUVXIGpzb25f YXJyYXlfdmlldzsKKy0tIFRlc3QgSlNPTl9PQkpFQ1RBR0cgZGVwYXJzaW5nCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgSlNPTl9PQkpFQ1RBR0coaTogKCcxMTEn IHx8IGkpOjpieXRlYSBGT1JNQVQgSlNPTiBXSVRIIFVOSVFVRSBSRVRVUk5JTkcgdGV4dCkg RklMVEVSIChXSEVSRSBpID4gMykKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgaTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiBKU09OX09CSkVDVEFHRyhpIDogKCgnMTExJzo6dGV4 dCB8fCAoaSk6OnRleHQpKTo6Ynl0ZWEgRk9STUFUIEpTT04gV0lUSCBVTklRVUUgS0VZUyBS RVRVUk5JTkcgdGV4dCkgRklMVEVSIChXSEVSRSAoaSA+IDMpKQorICAgLT4gIEZ1bmN0aW9u IFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgaQorICAgICAgICAgT3V0cHV0 OiBpCisgICAgICAgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkKKyg1 IHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBKU09OX09C SkVDVEFHRyhpOiAoJzExMScgfHwgaSk6OmJ5dGVhIEZPUk1BVCBKU09OIFdJVEggVU5JUVVF IFJFVFVSTklORyB0ZXh0KSBPVkVSIChQQVJUSVRJT04gQlkgaSAlIDIpCitGUk9NIGdlbmVy YXRlX3NlcmllcygxLDUpIGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIE91dHB1dDogSlNPTl9PQkpFQ1RBR0co aSA6ICgoJzExMSc6OnRleHQgfHwgKGkpOjp0ZXh0KSk6OmJ5dGVhIEZPUk1BVCBKU09OIFdJ VEggVU5JUVVFIEtFWVMgUkVUVVJOSU5HIHRleHQpIE9WRVIgKD8pLCAoKGkgJSAyKSkKKyAg IC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6ICgoaSAlIDIpKSwgaQorICAgICAgICAgU29y dCBLZXk6ICgoaS5pICUgMikpCisgICAgICAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBwZ19j YXRhbG9nLmdlbmVyYXRlX3NlcmllcyBpCisgICAgICAgICAgICAgICBPdXRwdXQ6IChpICUg MiksIGkKKyAgICAgICAgICAgICAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3Nlcmllcygx LCA1KQorKDggcm93cykKKworQ1JFQVRFIFZJRVcganNvbl9vYmplY3RhZ2dfdmlldyBBUwor U0VMRUNUIEpTT05fT0JKRUNUQUdHKGk6ICgnMTExJyB8fCBpKTo6Ynl0ZWEgRk9STUFUIEpT T04gV0lUSCBVTklRVUUgUkVUVVJOSU5HIHRleHQpIEZJTFRFUiAoV0hFUkUgaSA+IDMpCitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGk7Citcc3YganNvbl9vYmplY3RhZ2dfdmlldwor Q1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbl9vYmplY3RhZ2dfdmlldyBBUwor IFNFTEVDVCBKU09OX09CSkVDVEFHRyhpLmkgOiAoJzExMSc6OnRleHQgfHwgaS5pKTo6Ynl0 ZWEgRk9STUFUIEpTT04gV0lUSCBVTklRVUUgS0VZUyBSRVRVUk5JTkcgdGV4dCkgRklMVEVS IChXSEVSRSBpLmkgPiAzKSBBUyAianNvbl9vYmplY3RhZ2ciCisgICBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1KSBpKGkpCitEUk9QIFZJRVcganNvbl9vYmplY3RhZ2dfdmlldzsKKy0t IFRlc3QgSlNPTl9BUlJBWUFHRyBkZXBhcnNpbmcKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikKK1NFTEVDVCBKU09OX0FSUkFZQUdHKCgnMTExJyB8fCBpKTo6Ynl0ZWEgRk9STUFU IEpTT04gTlVMTCBPTiBOVUxMIFJFVFVSTklORyB0ZXh0KSBGSUxURVIgKFdIRVJFIGkgPiAz KQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICBPdXRwdXQ6IEpTT05fQVJSQVlBR0co KCgnMTExJzo6dGV4dCB8fCAoaSk6OnRleHQpKTo6Ynl0ZWEgRk9STUFUIEpTT04gTlVMTCBP TiBOVUxMIFJFVFVSTklORyB0ZXh0KSBGSUxURVIgKFdIRVJFIChpID4gMykpCisgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRlX3NlcmllcyBpCisgICAgICAg ICBPdXRwdXQ6IGkKKyAgICAgICAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3Nlcmllcygx LCA1KQorKDUgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU IEpTT05fQVJSQVlBR0coKCcxMTEnIHx8IGkpOjpieXRlYSBGT1JNQVQgSlNPTiBOVUxMIE9O IE5VTEwgUkVUVVJOSU5HIHRleHQpIE9WRVIgKFBBUlRJVElPTiBCWSBpICUgMikKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsNSkgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZworICAgT3V0cHV0OiBKU09OX0FSUkFZQUdHKCgoJzExMSc6OnRleHQg fHwgKGkpOjp0ZXh0KSk6OmJ5dGVhIEZPUk1BVCBKU09OIE5VTEwgT04gTlVMTCBSRVRVUk5J TkcgdGV4dCkgT1ZFUiAoPyksICgoaSAlIDIpKQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91 dHB1dDogKChpICUgMikpLCBpCisgICAgICAgICBTb3J0IEtleTogKChpLmkgJSAyKSkKKyAg ICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVz IGkKKyAgICAgICAgICAgICAgIE91dHB1dDogKGkgJSAyKSwgaQorICAgICAgICAgICAgICAg RnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDUpCisoOCByb3dzKQorCitDUkVB VEUgVklFVyBqc29uX2FycmF5YWdnX3ZpZXcgQVMKK1NFTEVDVCBKU09OX0FSUkFZQUdHKCgn MTExJyB8fCBpKTo6Ynl0ZWEgRk9STUFUIEpTT04gTlVMTCBPTiBOVUxMIFJFVFVSTklORyB0 ZXh0KSBGSUxURVIgKFdIRVJFIGkgPiAzKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBp OworXHN2IGpzb25fYXJyYXlhZ2dfdmlldworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJs aWMuanNvbl9hcnJheWFnZ192aWV3IEFTCisgU0VMRUNUIEpTT05fQVJSQVlBR0coKCcxMTEn Ojp0ZXh0IHx8IGkuaSk6OmJ5dGVhIEZPUk1BVCBKU09OIE5VTEwgT04gTlVMTCBSRVRVUk5J TkcgdGV4dCkgRklMVEVSIChXSEVSRSBpLmkgPiAzKSBBUyAianNvbl9hcnJheWFnZyIKKyAg IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIGkoaSkKK0RST1AgVklFVyBqc29uX2FycmF5 YWdnX3ZpZXc7CistLSBUZXN0IEpTT05fQVJSQVkoc3VicXVlcnkpIGRlcGFyc2luZworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUIGkg RlJPTSAoVkFMVUVTICgxKSwgKDIpLCAoTlVMTCksICg0KSkgZm9vKGkpIFJFVFVSTklORyBq c29uYik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAg T3V0cHV0OiAkMAorICAgSW5pdFBsYW4gMSAocmV0dXJucyAkMCkKKyAgICAgLT4gIEFnZ3Jl Z2F0ZQorICAgICAgICAgICBPdXRwdXQ6IEpTT05fQVJSQVlBR0coIipWQUxVRVMqIi5jb2x1 bW4xIFJFVFVSTklORyBqc29uYikKKyAgICAgICAgICAgLT4gIFZhbHVlcyBTY2FuIG9uICIq VkFMVUVTKiIKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAiKlZBTFVFUyoiLmNvbHVtbjEK Kyg3IHJvd3MpCisKK0NSRUFURSBWSUVXIGpzb25fYXJyYXlfc3VicXVlcnlfdmlldyBBUwor U0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUIGkgRlJPTSAoVkFMVUVTICgxKSwgKDIpLCAoTlVM TCksICg0KSkgZm9vKGkpIFJFVFVSTklORyBqc29uYik7Citcc3YganNvbl9hcnJheV9zdWJx dWVyeV92aWV3CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uX2FycmF5X3N1 YnF1ZXJ5X3ZpZXcgQVMKKyBTRUxFQ1QgKCBTRUxFQ1QgSlNPTl9BUlJBWUFHRyhxLmEgUkVU VVJOSU5HIGpzb25iKSBBUyAianNvbl9hcnJheWFnZyIKKyAgICAgICAgICAgRlJPTSAoIFNF TEVDVCBmb28uaQorICAgICAgICAgICAgICAgICAgIEZST00gKCBWQUxVRVMgKDEpLCAoMiks IChOVUxMOjppbnRlZ2VyKSwgKDQpKSBmb28oaSkpIHEoYSkpIEFTICJqc29uX2FycmF5Igor RFJPUCBWSUVXIGpzb25fYXJyYXlfc3VicXVlcnlfdmlldzsKKy0tIElTIEpTT04gcHJlZGlj YXRlCitTRUxFQ1QgTlVMTCBJUyBKU09OOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgTlVMTCBJUyBOT1QgSlNPTjsKKyA/Y29sdW1uPyAKKy0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIE5VTEw6Ompzb24gSVMgSlNPTjsKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIE5VTEw6Ompzb25iIElT IEpTT047CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBO VUxMOjp0ZXh0IElTIEpTT047CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBOVUxMOjpieXRlYSBJUyBKU09OOworID9jb2x1bW4/IAorLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgTlVMTDo6aW50IElTIEpTT047CitFUlJPUjogIGNh bm5vdCB1c2UgdHlwZSBpbnRlZ2VyIGluIElTIEpTT04gcHJlZGljYXRlCitTRUxFQ1QgJycg SVMgSlNPTjsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVD VCBieXRlYSAnXHgwMCcgSVMgSlNPTjsKK0VSUk9SOiAgaW52YWxpZCBieXRlIHNlcXVlbmNl IGZvciBlbmNvZGluZyAiVVRGOCI6IDB4MDAKK0NSRUFURSBUQUJMRSB0ZXN0X2lzX2pzb24g KGpzIHRleHQpOworSU5TRVJUIElOVE8gdGVzdF9pc19qc29uIFZBTFVFUworIChOVUxMKSwK KyAoJycpLAorICgnMTIzJyksCisgKCciYWFhICInKSwKKyAoJ3RydWUnKSwKKyAoJ251bGwn KSwKKyAoJ1tdJyksCisgKCdbMSwgIjIiLCB7fV0nKSwKKyAoJ3t9JyksCisgKCd7ICJhIjog MSwgImIiOiBudWxsIH0nKSwKKyAoJ3sgImEiOiAxLCAiYSI6IG51bGwgfScpLAorICgneyAi YSI6IDEsICJiIjogW3sgImEiOiAxIH0sIHsgImEiOiAyIH1dIH0nKSwKKyAoJ3sgImEiOiAx LCAiYiI6IFt7ICJhIjogMSwgImIiOiAwLCAiYSI6IDIgfV0gfScpLAorICgnYWFhJyksCisg KCd7YToxfScpLAorICgnWyJhIixdJyk7CitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09OICJJ UyBKU09OIiwKKwlqcyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04g VkFMVUUgIklTIFZBTFVFIiwKKwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlq cyBJUyBKU09OIEFSUkFZICJJUyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFND QUxBUiIsCisJanMgSVMgSlNPTiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFV RSIsCisJanMgSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00K Kwl0ZXN0X2lzX2pzb247CisgICAgICAgICAgICAgICAgICAgICAganMgICAgICAgICAgICAg ICAgICAgICAgIHwgSVMgSlNPTiB8IElTIE5PVCBKU09OIHwgSVMgVkFMVUUgfCBJUyBPQkpF Q1QgfCBJUyBBUlJBWSB8IElTIFNDQUxBUiB8IFdJVEhPVVQgVU5JUVVFIHwgV0lUSCBVTklR VUUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg ICB8ICAgICAgICAgICAgICAgIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICAgIHwgZiAgICAgICAgfCBm ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICAgICAgIHwgZgor IDEyMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyAiYWFhICIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAg ICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgICAg ICAgfCB0CisgdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCBmICAg ICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIG51bGwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg ICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAg ICAgICAgICAgICB8IHQKKyBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAg ICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgWzEsICIy Iiwge31dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAg ICB8IHQgICAgICAgICAgICAgIHwgdAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwg dCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQK KyB7ICJhIjogMSwgImIiOiBudWxsIH0gICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwg ZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgeyAiYSI6IDEsICJhIjogbnVsbCB9 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAg ICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAg ICAgIHwgZgorIHsgImEiOiAxLCAiYiI6IFt7ICJhIjogMSB9LCB7ICJhIjogMiB9XSB9ICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAg ICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ICJhIjogMSwgImIi OiBbeyAiYSI6IDEsICJiIjogMCwgImEiOiAyIH1dIH0gfCB0ICAgICAgIHwgZiAgICAgICAg ICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgdCAg ICAgICAgICAgICAgfCBmCisgYWFhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAg ICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICAgICAgIHwgZgorIHthOjF9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgfCB0 ICAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAg ICAgfCBmICAgICAgICAgICAgICB8IGYKKyBbImEiLF0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgICAgICAgfCBm CisoMTYgcm93cykKKworU0VMRUNUCisJanMsCisJanMgSVMgSlNPTiAiSVMgSlNPTiIsCisJ anMgSVMgTk9UIEpTT04gIklTIE5PVCBKU09OIiwKKwlqcyBJUyBKU09OIFZBTFVFICJJUyBW QUxVRSIsCisJanMgSVMgSlNPTiBPQkpFQ1QgIklTIE9CSkVDVCIsCisJanMgSVMgSlNPTiBB UlJBWSAiSVMgQVJSQVkiLAorCWpzIElTIEpTT04gU0NBTEFSICJJUyBTQ0FMQVIiLAorCWpz IElTIEpTT04gV0lUSE9VVCBVTklRVUUgS0VZUyAiV0lUSE9VVCBVTklRVUUiLAorCWpzIElT IEpTT04gV0lUSCBVTklRVUUgS0VZUyAiV0lUSCBVTklRVUUiCitGUk9NCisJKFNFTEVDVCBq czo6anNvbiBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28oanMpOwor ICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAgICAgICAgICAgICAgICB8IElTIEpT T04gfCBJUyBOT1QgSlNPTiB8IElTIFZBTFVFIHwgSVMgT0JKRUNUIHwgSVMgQVJSQVkgfCBJ UyBTQ0FMQVIgfCBXSVRIT1VUIFVOSVFVRSB8IFdJVEggVU5JUVVFIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIDEyMyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAg ICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAg ICB8IHQKKyAiYWFhICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IGYgICAg ICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgdHJ1ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAg IHwgdCAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAg ICAgICAgICAgIHwgdAorIG51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAg IHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBbXSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAg IHwgdCAgICAgICAgICAgICAgfCB0CisgWzEsICIyIiwge31dICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBm ICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAor IHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBm ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ICJhIjogMSwgImIiOiBudWxsIH0g ICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAg ICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAg ICAgfCB0CisgeyAiYSI6IDEsICJhIjogbnVsbCB9ICAgICAgICAgICAgICAgICAgICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgZgorIHsgImEiOiAxLCAiYiI6 IFt7ICJhIjogMSB9LCB7ICJhIjogMiB9XSB9ICAgICB8IHQgICAgICAgfCBmICAgICAgICAg ICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAg ICAgICAgICAgICB8IHQKKyB7ICJhIjogMSwgImIiOiBbeyAiYSI6IDEsICJiIjogMCwgImEi OiAyIH1dIH0gfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAg ICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCBmCisoMTEgcm93 cykKKworU0VMRUNUCisJanMwLAorCWpzIElTIEpTT04gIklTIEpTT04iLAorCWpzIElTIE5P VCBKU09OICJJUyBOT1QgSlNPTiIsCisJanMgSVMgSlNPTiBWQUxVRSAiSVMgVkFMVUUiLAor CWpzIElTIEpTT04gT0JKRUNUICJJUyBPQkpFQ1QiLAorCWpzIElTIEpTT04gQVJSQVkgIklT IEFSUkFZIiwKKwlqcyBJUyBKU09OIFNDQUxBUiAiSVMgU0NBTEFSIiwKKwlqcyBJUyBKU09O IFdJVEhPVVQgVU5JUVVFIEtFWVMgIldJVEhPVVQgVU5JUVVFIiwKKwlqcyBJUyBKU09OIFdJ VEggVU5JUVVFIEtFWVMgIldJVEggVU5JUVVFIgorRlJPTQorCShTRUxFQ1QganMsIGpzOjpi eXRlYSBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28oanMwLCBqcyk7 CisgICAgICAgICAgICAgICAgICAgICAganMwICAgICAgICAgICAgICAgICAgICAgIHwgSVMg SlNPTiB8IElTIE5PVCBKU09OIHwgSVMgVkFMVUUgfCBJUyBPQkpFQ1QgfCBJUyBBUlJBWSB8 IElTIFNDQUxBUiB8IFdJVEhPVVQgVU5JUVVFIHwgV0lUSCBVTklRVUUgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgMTIzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAg ICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICAg ICAgIHwgdAorICJhYWEgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAg ICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB0cnVlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAg ICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgIHwgdCAg ICAgICAgICAgICAgfCB0CisgbnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAg ICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIFtdICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAg ICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBbMSwgIjIiLCB7fV0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8 IGYgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0 Cisge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHsgImEiOiAxLCAiYiI6IG51bGwg fSAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQg ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAg ICAgICB8IHQKKyB7ICJhIjogMSwgImEiOiBudWxsIH0gICAgICAgICAgICAgICAgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYg ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCBmCisgeyAiYSI6IDEsICJi IjogW3sgImEiOiAxIH0sIHsgImEiOiAyIH1dIH0gICAgIHwgdCAgICAgICB8IGYgICAgICAg ICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQg ICAgICAgICAgICAgIHwgdAorIHsgImEiOiAxLCAiYiI6IFt7ICJhIjogMSwgImIiOiAwLCAi YSI6IDIgfV0gfSB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IGYKKygxMSBy b3dzKQorCitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09OICJJUyBKU09OIiwKKwlqcyBJUyBO T1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklTIFZBTFVFIiwK KwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09OIEFSUkFZICJJ UyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJanMgSVMgSlNP TiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMgSVMgSlNPTiBX SVRIIFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNUIGpzOjpqc29u YiBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28oanMpOworICAgICAg ICAgICAgICAgICBqcyAgICAgICAgICAgICAgICAgIHwgSVMgSlNPTiB8IElTIE5PVCBKU09O IHwgSVMgVkFMVUUgfCBJUyBPQkpFQ1QgfCBJUyBBUlJBWSB8IElTIFNDQUxBUiB8IFdJVEhP VVQgVU5JUVVFIHwgV0lUSCBVTklRVUUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyAxMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAg ICAgfCB0ICAgICAgICAgICAgICB8IHQKKyAiYWFhICIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAg IHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB0cnVlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8 IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAg ICAgICAgICB8IHQKKyBudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAg fCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBbXSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwg ZiAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQK KyBbMSwgIjIiLCB7fV0gICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAg ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAg fCB0ICAgICAgICAgICAgICB8IHQKKyB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ImEiOiAxLCAi YiI6IG51bGx9ICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQg ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAg ICAgICB8IHQKKyB7ImEiOiBudWxsfSAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBm ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ImEiOiAxLCAiYiI6IFt7ImEiOiAx fSwgeyJhIjogMn1dfSB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAg ICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7 ImEiOiAxLCAiYiI6IFt7ImEiOiAyLCAiYiI6IDB9XX0gICB8IHQgICAgICAgfCBmICAgICAg ICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0 ICAgICAgICAgICAgICB8IHQKKygxMSByb3dzKQorCistLSBUZXN0IElTIEpTT04gZGVwYXJz aW5nCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgJzEnIElTIEpTT04g QVMgImFueSIsICgnMScgfHwgaSkgSVMgSlNPTiBTQ0FMQVIgQVMgInNjYWxhciIsICdbXScg SVMgTk9UIEpTT04gQVJSQVkgQVMgImFycmF5IiwgJ3t9JyBJUyBKU09OIE9CSkVDVCBXSVRI IFVOSVFVRSBBUyAib2JqZWN0IiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4g b24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgaQorICAgT3V0cHV0OiAoJzEnOjp0ZXh0 IElTIEpTT04pLCAoKCcxJzo6dGV4dCB8fCAoaSk6OnRleHQpIElTIEpTT04gU0NBTEFSKSwg KE5PVCAoJ1tdJzo6dGV4dCBJUyBKU09OIEFSUkFZKSksICgne30nOjp0ZXh0IElTIEpTT04g T0JKRUNUIFdJVEggVU5JUVVFIEtFWVMpCisgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9z ZXJpZXMoMSwgMykKKygzIHJvd3MpCisKK0NSRUFURSBWSUVXIGlzX2pzb25fdmlldyBBUwor U0VMRUNUICcxJyBJUyBKU09OIEFTICJhbnkiLCAoJzEnIHx8IGkpIElTIEpTT04gU0NBTEFS IEFTICJzY2FsYXIiLCAnW10nIElTIE5PVCBKU09OIEFSUkFZIEFTICJhcnJheSIsICd7fScg SVMgSlNPTiBPQkpFQ1QgV0lUSCBVTklRVUUgQVMgIm9iamVjdCIgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMykgaTsKK1xzdiBpc19qc29uX3ZpZXcKK0NSRUFURSBPUiBSRVBMQUNFIFZJ RVcgcHVibGljLmlzX2pzb25fdmlldyBBUworIFNFTEVDVCAnMSc6OnRleHQgSVMgSlNPTiBB UyAiYW55IiwKKyAgICAoJzEnOjp0ZXh0IHx8IGkuaSkgSVMgSlNPTiBTQ0FMQVIgQVMgc2Nh bGFyLAorICAgIE5PVCAnW10nOjp0ZXh0IElTIEpTT04gQVJSQVkgQVMgImFycmF5IiwKKyAg ICAne30nOjp0ZXh0IElTIEpTT04gT0JKRUNUIFdJVEggVU5JUVVFIEtFWVMgQVMgb2JqZWN0 CisgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBpKGkpCitEUk9QIFZJRVcgaXNfanNv bl92aWV3OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggODYxYzMwYTcz YS4uZmRiM2ZiY2IxNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0x MTIsNyArMTEyLDcgQEAgdGVzdDogc2VsZWN0X3ZpZXdzIHBvcnRhbHNfcDIgZm9yZWlnbl9r ZXkgY2x1c3RlciBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMgY29tYm8KICMgLS0tLS0tLS0t LQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzIChKU09OIHJlbGF0ZWQpCiAj IC0tLS0tLS0tLS0KLXRlc3Q6IGpzb24ganNvbmIganNvbl9lbmNvZGluZyBqc29ucGF0aCBq c29ucGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0aAordGVzdDoganNvbiBqc29uYiBqc29u X2VuY29kaW5nIGpzb25wYXRoIGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNx bGpzb24ganNvbl9zcWxqc29uIGpzb25iX3NxbGpzb24KIAogIyAtLS0tLS0tLS0tCiAjIEFu b3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pzb25fc3FsanNvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29u X3NxbGpzb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjRm MzBmYTQ2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29u X3NxbGpzb24uc3FsCkBAIC0wLDAgKzEsMTEgQEAKKy0tIEpTT05fRVhJU1RTCisKK1NFTEVD VCBKU09OX0VYSVNUUyhOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworCistLSBKU09OX1ZBTFVF CisKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisKKy0tIEpT T05fUVVFUlkKKworU0VMRUNUIEpTT05fUVVFUlkoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAppbmRleCA1MDE2ZjI5YzE1Li40YWYyYTBjYjExIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNDgyLDMgKzE0ODIsNDEgQEAgc2VsZWN0 ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1 Jzo6anNvbmI6OmZsb2F0ODsKIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQyOwogc2VsZWN0ICcxMjM0 NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNv bmI6OmludDQ7CiBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50ODsKKworLS0gdGVzdCBtYXBwaW5nIG9m IGpzb25iIHRvIFNRTC9KU09OIEpTT04gdHlwZQorc2VsZWN0IGpzb24oJyB7ICJhYSI6IDEs ICJiIiA6IDIgfScpOworc2VsZWN0IGpzb24gJyB7ICJhYSI6IDEsICJiIiA6IDIgfSc7Citz ZWxlY3QgcGdfY2F0YWxvZy5qc29uICcgeyAiYWEiOiAxLCAiYiIgOiAyIH0nOworCitjcmVh dGUgdGFibGUgdGVzdF9qc29uX2FzX2pzb24gKGpzIGpzb24sIGpiIGpzb25iKTsKK1xkIHRl c3RfanNvbl9hc19qc29uCisKK3NldCBzcWxfanNvbiA9IGpzb25iOworCitzZWxlY3QganNv bignIHsgImFhIjogMSwgImIiIDogMiB9Jyk7CitzZWxlY3QganNvbiAnIHsgImFhIjogMSwg ImIiIDogMiB9JzsKK3NlbGVjdCBwZ19jYXRhbG9nLmpzb24gJyB7ICJhYSI6IDEsICJiIiA6 IDIgfSc7CisKK1xkIHRlc3RfanNvbl9hc19qc29uCisKK2NyZWF0ZSB0YWJsZSB0ZXN0X2pz b25fYXNfanNvbmIgKGpzIGpzb24sIGpiIGpzb25iLCBqdCBwZ19jYXRhbG9nLmpzb24pOwor XGQgdGVzdF9qc29uX2FzX2pzb25iCisKK2luc2VydCBpbnRvIHRlc3RfanNvbl9hc19qc29u YiB2YWx1ZXMgKCd7ICJhIiA6IDEgfScsICd7ICJhIiA6IDEgfScsICd7ICJhIiA6IDEgfScp OworCitzZWxlY3QgKiBmcm9tIHRlc3RfanNvbl9hc19qc29uYjsKKworc2VsZWN0IGpzb25i X29iamVjdF9maWVsZChqcywgJ2EnKSBmcm9tIHRlc3RfanNvbl9hc19qc29uYjsKK3NlbGVj dCBqc29uYl9vYmplY3RfZmllbGQoamIsICdhJykgZnJvbSB0ZXN0X2pzb25fYXNfanNvbmI7 CitzZWxlY3QganNvbmJfb2JqZWN0X2ZpZWxkKGp0LCAnYScpIGZyb20gdGVzdF9qc29uX2Fz X2pzb25iOworc2VsZWN0IGpzb25fb2JqZWN0X2ZpZWxkKGp0LCAnYScpIGZyb20gdGVzdF9q c29uX2FzX2pzb25iOworCitzZXQgc3FsX2pzb24gPSBqc29uOworXGQgdGVzdF9qc29uX2Fz X2pzb25iCisKK3NlbGVjdCAqIGZyb20gdGVzdF9qc29uX2FzX2pzb25iOworCitzZWxlY3Qg anNvbmJfb2JqZWN0X2ZpZWxkKGpzLCAnYScpIGZyb20gdGVzdF9qc29uX2FzX2pzb25iOwor c2VsZWN0IGpzb25iX29iamVjdF9maWVsZChqYiwgJ2EnKSBmcm9tIHRlc3RfanNvbl9hc19q c29uYjsKK3NlbGVjdCBqc29uYl9vYmplY3RfZmllbGQoanQsICdhJykgZnJvbSB0ZXN0X2pz b25fYXNfanNvbmI7CitzZWxlY3QganNvbl9vYmplY3RfZmllbGQoanQsICdhJykgZnJvbSB0 ZXN0X2pzb25fYXNfanNvbmI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9q c29uYl9zcWxqc29uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24u c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAwYTA2N2EwNmEK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29u LnNxbApAQCAtMCwwICsxLDMxNyBAQAorLS0gSlNPTl9FWElTVFMKKworU0VMRUNUIEpTT05f RVhJU1RTKE5VTEw6Ompzb25iLCAnJCcpOworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg J1tdJywgJyQnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhKU09OX09CSkVDVChSRVRVUk5JTkcg anNvbmIpLCAnJCcpOworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJCcpOwor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdudWxsJywgJyQnKTsKK1NFTEVDVCBKU09OX0VY SVNUUyhqc29uYiAnW10nLCAnJCcpOworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEn LCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScp OworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIEVSUk9SIE9O IEVSUk9SKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICckLmEnKTsKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ3N0cmljdCAkLmEnKTsKK1NFTEVD VCBKU09OX0VYSVNUUyhqc29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnbGF4ICQuYScp OworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7fScsICckLmEnKTsKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAneyJiIjogMSwgImEiOiAyfScsICckLmEnKTsKKworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICcxJywgJyQuYS5iJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJ3siYSI6IHsiYiI6IDF9fScsICckLmEuYicpOworU0VMRUNUIEpTT05fRVhJU1RTKGpz b25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuYS5iJyk7CisKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4KScgUEFTU0lORyAx IEFTIHgpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9Jywg JyQuKiA/IChAID4gJHgpJyBQQVNTSU5HICcxJyBBUyB4KTsKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4ICYmIEAgPCAkeSkn IFBBU1NJTkcgMCBBUyB4LCAyIEFTIHkpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7 ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8ICR5KScgUEFTU0lORyAw IEFTIHgsIDEgQVMgeSk7CisKKy0tIGV4dGVuc2lvbjogYm9vbGVhbiBleHByZXNzaW9ucwor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQgPiAyJyk7CitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJzEnLCAnJC5hID4gMicgRVJST1IgT04gRVJST1IpOworCistLSBleHRl bnNpb246IFJFVFVSTklORyBjbGF1c2UKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScs ICckWzBdJyBSRVRVUk5JTkcgYm9vbCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEn LCAnJFsxXScgUkVUVVJOSU5HIGJvb2wpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcx JywgJyRbMF0nIFJFVFVSTklORyBpbnQpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcx JywgJyRbMV0nIFJFVFVSTklORyBpbnQpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcx JywgJyRbMF0nIFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn MScsICckWzFdJyBSRVRVUk5JTkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg JzEnLCAnc3RyaWN0ICRbMV0nIFJFVFVSTklORyB0ZXh0IEZBTFNFIE9OIEVSUk9SKTsKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckWzBdJyBSRVRVUk5JTkcganNvbmIpOwor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyRbMF0nIFJFVFVSTklORyBmbG9hdDQp OworCisKKy0tIEpTT05fVkFMVUUKKworU0VMRUNUIEpTT05fVkFMVUUoTlVMTDo6anNvbmIs ICckJyk7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBpbnQpOworCitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAndHJ1ZScsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAndHJ1ZScsICckJyBSRVRVUk5JTkcgYm9vbCk7CisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxMjMnLCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICck JyBSRVRVUk5JTkcgaW50KSArIDIzNDsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMn LCAnJCcgUkVUVVJOSU5HIHRleHQpOworLyoganNvbmIgYnl0ZWEgPz8/ICovCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBieXRlYSBFUlJPUiBPTiBF UlJPUik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywgJyQnKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywgJyQnIFJFVFVSTklORyBpbnQpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBpbnQgRVJS T1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcp OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0 KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgY2hh cig1KSk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGNoYXIoMikpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVS TklORyBqc29uKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRV Uk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJF VFVSTklORyBqc29uIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbmIgRVJST1IgT04gRVJST1IpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5JTkcganNvbik7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIlwiYWFhXCIiJywgJyQnIFJFVFVSTklORyBqc29u Yik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGlu dCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGlu dCBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAn JCcgUkVUVVJOSU5HIGludCBERUZBVUxUIDExMSBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciMjAxNy0wMi0yMCInLCAnJCcgUkVUVVJOSU5HIGRhdGUp ICsgOTsKKworLS0gVGVzdCBOVUxMIGNoZWNrcyBleGVjdXRpb24gaW4gZG9tYWluIHR5cGVz CitDUkVBVEUgRE9NQUlOIHNxbGpzb25iX2ludF9ub3RfbnVsbCBBUyBpbnQgTk9UIE5VTEw7 CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnIFJFVFVSTklORyBzcWxqc29u Yl9pbnRfbm90X251bGwpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyBS RVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIE5VTEwgT04gRVJST1IpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25v dF9udWxsIERFRkFVTFQgTlVMTCBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICdbXScsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcgRVJS T1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3t9JywgJyQnKTsKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICd7fScsICckJyBFUlJPUiBPTiBFUlJPUik7CisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQuYScpOworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAnZXJyb3InIE9OIEVSUk9S KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVS Uk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9O IEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywg J3N0cmljdCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUIDIgT04gRVJST1IpOworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicgT04gRVJST1IpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgTlVMTCBPTiBFTVBUWSBERUZB VUxUICcyJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXgg JC5hJyBERUZBVUxUICcyJyBPTiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSBERUZB VUxUICczJyBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwyXScs ICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzEs Ml0nLCAnJFsqXScgREVGQVVMVCAnMCcgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ1siICJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siICJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQg REVGQVVMVCAyICsgMyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIx Il0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBERUZBVUxUIDIgKyAzIE9OIEVSUk9SKTsKKwor U0VMRUNUCisJeCwKKwlKU09OX1ZBTFVFKAorCQlqc29uYiAneyJhIjogMSwgImIiOiAyfScs CisJCSckLiogPyAoQCA+ICR4KScgUEFTU0lORyB4IEFTIHgKKwkJUkVUVVJOSU5HIGludAor CQlERUZBVUxUIC0xIE9OIEVNUFRZCisJCURFRkFVTFQgLTIgT04gRVJST1IKKwkpIHkKK0ZS T00KKwlnZW5lcmF0ZV9zZXJpZXMoMCwgMikgeDsKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIg KScgQVMgYSBSRVRVUk5JTkcgcG9pbnQpOworCistLSBUZXN0IHRpbWVzdGFtcHR6IHBhc3Np bmcgYW5kIG91dHB1dAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQ QVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMpOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFt cHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFt cHR6KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0 aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0 aW1lc3RhbXApOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNT SU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJO SU5HIGpzb24pOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNT SU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJO SU5HIGpzb25iKTsKKworLS0gSlNPTl9RVUVSWQorCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpz LCAnJCcpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIT1VUIFdSQVBQRVIpLAorCUpTT05f UVVFUlkoanMsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIpLAorCUpTT05fUVVFUlko anMsICckJyBXSVRIIFVOQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiksCisJSlNPTl9RVUVS WShqcywgJyQnIFdJVEggQVJSQVkgV1JBUFBFUikKK0ZST00KKwkoVkFMVUVTCisJCShqc29u YiAnbnVsbCcpLAorCQkoJzEyLjMnKSwKKwkJKCd0cnVlJyksCisJCSgnImFhYSInKSwKKwkJ KCdbMSwgbnVsbCwgIjIiXScpLAorCQkoJ3siYSI6IDEsICJiIjogWzJdfScpCisJKSBmb28o anMpOworCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nKSBBUyAidW5z cGVjIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEhPVVQgV1JBUFBFUikg QVMgIndpdGhvdXQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBDT05E SVRJT05BTCBXUkFQUEVSKSBBUyAid2l0aCBjb25kIiwKKwlKU09OX1FVRVJZKGpzLCAnc3Ry aWN0ICRbKl0nIFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCB1 bmNvbmQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBBUlJBWSBXUkFQ UEVSKSBBUyAid2l0aCIKK0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAnMScpLAorCQkoJ1td JyksCisJCSgnW251bGxdJyksCisJCSgnWzEyLjNdJyksCisJCSgnW3RydWVdJyksCisJCSgn WyJhYWEiXScpLAorCQkoJ1tbMSwgMiwgM11dJyksCisJCSgnW3siYSI6IDEsICJiIjogWzJd fV0nKSwKKwkJKCdbMSwgIjIiLCBudWxsLCBbM11dJykKKwkpIGZvbyhqcyk7CisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBR VU9URVMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyB0ZXh0IEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQgUVVPVEVTKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBPTUlU IFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICci YWFhIicsICckJyBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb24gT01JVCBRVU9URVMgRVJS T1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJF VFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7 CisKKy0tIFFVT1RFUyBiZWhhdmlvciBzaG91bGQgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJ VEggV1JBUFBFUiB1c2VkOgorLS0gU2hvdWxkIGZhaWwKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQ UEVSIEtFRVAgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcg V0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKKy0tIFNob3VsZCBzdWNj ZWVkCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBF UiBPTUlUIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJ VEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUyk7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbXScsICckWypdJyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg TlVMTCBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg RU1QVFkgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0n IEVNUFRZIEFSUkFZIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScs ICckWypdJyBFTVBUWSBPQkpFQ1QgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbXScsICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBFTVBUWSk7CisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBOVUxMIE9O IEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBP TiBFTVBUWSBFTVBUWSBBUlJBWSBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBF UlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg RVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAn JFsqXScgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJd JywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbiBGT1JNQVQgSlNPTik7 CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb25i KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNv bmIgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQn IFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICck JyBSRVRVUk5JTkcgY2hhcigxMCkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJd JywgJyQnIFJFVFVSTklORyBjaGFyKDMpKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb MSwyXScsICckJyBSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhKTsKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04p OworCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5H IGJ5dGVhIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVNUFRZIE9C SkVDVCBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsq XScgUkVUVVJOSU5HIGpzb24gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcganNvbmIgRU1QVFkgT0JK RUNUIE9OIEVSUk9SKTsKKworU0VMRUNUCisJeCwgeSwKKwlKU09OX1FVRVJZKAorCQlqc29u YiAnWzEsMiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAgPj0gJHggJiYgQCA8PSAkeSkn CisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05ESVRJT05BTCBXUkFQUEVS CisJCUVNUFRZIEFSUkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJZ2VuZXJhdGVfc2Vy aWVzKDAsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisKKy0tIEV4dGVuc2lv bjogcmVjb3JkIHR5cGVzIHJldHVybmluZworQ1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFT IChhIGludCwgdCB0ZXh0LCBqcyBqc29uLCBqYiBqc29uYiwganNhIGpzb25bXSk7CitDUkVB VEUgVFlQRSBzcWxqc29uYl9yZWNhIEFTIChyZWNhIHNxbGpzb25iX3JlY1tdKTsKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEi LCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJh IjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBzcWxqc29uYl9yZWMpOworU0VMRUNUICogRlJP TSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIgJ3sianNhIjogIFt7ImEiOiAxLCAiYiI6IFsi Zm9vIl19LCB7ImEiOiAyLCAiYyI6IHt9fSwgMTIzXX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpz b25iX3JlYykpLmpzYSk7CitTRUxFQ1QgKiBGUk9NIHVubmVzdCgoSlNPTl9RVUVSWShqc29u YiAneyJyZWNhIjogW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEiOiAyLCAiamIi OiBbe30sIHRydWVdfV19JywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9yZWNhKSkucmVjYSk7 CisKKy0tIEV4dGVuc2lvbjogYXJyYXkgdHlwZXMgcmV0dXJuaW5nCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzEsMixudWxsLCIzIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludFtdIFdJ VEggV1JBUFBFUik7CitTRUxFQ1QgKiBGUk9NIHVubmVzdChKU09OX1FVRVJZKGpzb25iICdb eyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsiYSI6IDIsICJqYiI6IFt7fSwgdHJ1ZV19 XScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjW10pKTsKKworLS0gRXh0ZW5zaW9uOiBk b21haW4gdHlwZXMgcmV0dXJuaW5nCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjog MX0nLCAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICckLmInIFJFVFVSTklORyBzcWxqc29uYl9p bnRfbm90X251bGwpOworCistLSBUZXN0IHRpbWVzdGFtcHR6IHBhc3NpbmcgYW5kIG91dHB1 dAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVz dGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAy LTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAy LTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKworLS0gVGVzdCBj b25zdHJhaW50cworCitDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50cyAoCisJ anMgdGV4dCwKKwlpIGludCwKKwl4IGpzb25iIERFRkFVTFQgSlNPTl9RVUVSWShqc29uYiAn WzEsMl0nLCAnJFsqXScgV0lUSCBXUkFQUEVSKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9j b25zdHJhaW50MQorCQlDSEVDSyAoanMgSVMgSlNPTikKKwlDT05TVFJBSU5UIHRlc3RfanNv bmJfY29uc3RyYWludDIKKwkJQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJyQuYScg UEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBhcnJheVsxLDIsM10gYXMg YXJyKSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDMKKwkJQ0hFQ0sgKEpT T05fVkFMVUUoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgKCcxMicg fHwgaSk6OmludCBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKQorCUNPTlNUUkFJTlQg dGVzdF9qc29uYl9jb25zdHJhaW50NAorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIs ICckLmEnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1Ip IDwganNvbmIgJ1sxMF0nKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50NQor CQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEnIFJFVFVSTklORyBjaGFyKDUp IE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICAnYScgQ09MTEFURSAiQyIp CisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ2CisJCUNIRUNLIChKU09OX0VY SVNUUyhqczo6anNvbmIsICdzdHJpY3QgJC5hJyBSRVRVUk5JTkcgaW50IFRSVUUgT04gRVJS T1IpIDwgMikKKyk7CisKK1xkIHRlc3RfanNvbmJfY29uc3RyYWludHMKKworU0VMRUNUIGNo ZWNrX2NsYXVzZQorRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY2hlY2tfY29uc3RyYWludHMK K1dIRVJFIGNvbnN0cmFpbnRfbmFtZSBMSUtFICd0ZXN0X2pzb25iX2NvbnN0cmFpbnQlJzsK KworU0VMRUNUIHBnX2dldF9leHByKGFkYmluLCBhZHJlbGlkKSBGUk9NIHBnX2F0dHJkZWYg V0hFUkUgYWRyZWxpZCA9ICd0ZXN0X2pzb25iX2NvbnN0cmFpbnRzJzo6cmVnY2xhc3M7CisK K0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnJywgMSk7CitJ TlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJzEnLCAxKTsKK0lO U0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnW10nKTsKK0lOU0VS VCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJiIjogMX0nLCAxKTsK K0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogMX0n LCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJh IjogN30nLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVT ICgneyJhIjogMTB9JywgMSk7CisKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50 czsKKworLS0gVGVzdCBtdXRhYmlsaWx5IG9kIHF1ZXJ5IGZ1bmN0aW9ucworQ1JFQVRFIFRB QkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eShqcyBqc29uYik7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJCcpKTsKK0NSRUFURSBJ TkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmFbMF0n KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZ KGpzLCAnJC5kYXRldGltZSgpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0 YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChAIDwgJC5kYXRldGltZSgpKScpKTsK K0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5kYXRldGltZSgpKScpKTsKK0NSRUFURSBJTkRF WCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5k YXRldGltZSgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRh dGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScpKTsKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICck LmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRpbWUoIllZLU1NLUREIEhIOk1J IikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9R VUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUo IllZLU1NLUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0 YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJHgn IFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBU WkgiKSA8ICR5JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGlt ZSgpIDwgJHgnIFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRF WCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1l KCkgPCAkeCcgUEFTU0lORyAnMTIzNCc6OmludCBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpID8g KEAgPT0gJHgpJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUo IllZLU1NLUREIikgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzIwMjAtMDctMTQnOjpkYXRlIEFT IHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6 MzQnOjp0aW1lIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxp dHkgKEpTT05fUVVFUlkoanMsICckWzEsIDAgdG8gJC5hID8gKEAuZGF0ZXRpbWUoKSA9PSAk eCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRl c3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAuZGF0 ZXRpbWUoIkhIOk1JIikgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsK K0RST1AgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5OwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9v cHJfc2FuaXR5LnNxbAppbmRleCA1YTljNDc5NjkyLi43YTg0OWFlMzYzIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbApAQCAtODU0LDggKzg1NCwxMCBAQCBXSEVSRSBh LmFnZ2Zub2lkID0gcC5vaWQgQU5ECiAgICAgICAgICBOT1QgYmluYXJ5X2NvZXJjaWJsZShw LnByb2FyZ3R5cGVzWzFdLCBwdHIucHJvYXJndHlwZXNbMl0pKQogICAgICBPUiAocC5wcm9u YXJncyA+IDIgQU5ECiAgICAgICAgICBOT1QgYmluYXJ5X2NvZXJjaWJsZShwLnByb2FyZ3R5 cGVzWzJdLCBwdHIucHJvYXJndHlwZXNbM10pKQotICAgICAtLSB3ZSBjb3VsZCBjYXJyeSB0 aGUgY2hlY2sgZnVydGhlciwgYnV0IDMgYXJncyBpcyBlbm91Z2ggZm9yIG5vdwotICAgICBP UiAocC5wcm9uYXJncyA+IDMpCisgICAgIE9SIChwLnByb25hcmdzID4gMyBBTkQKKyAgICAg ICAgIE5PVCBiaW5hcnlfY29lcmNpYmxlKHAucHJvYXJndHlwZXNbM10sIHB0ci5wcm9hcmd0 eXBlc1s0XSkpCisgICAgIC0tIHdlIGNvdWxkIGNhcnJ5IHRoZSBjaGVjayBmdXJ0aGVyLCBi dXQgNCBhcmdzIGlzIGVub3VnaCBmb3Igbm93CisgICAgIE9SIChwLnByb25hcmdzID4gNCkK ICAgICApOwogCiAtLSBDcm9zcy1jaGVjayBmaW5hbGZuIChpZiBwcmVzZW50KSBhZ2FpbnN0 IGl0cyBlbnRyeSBpbiBwZ19wcm9jLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc3FsanNvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40ZmY2MDc2NzYzCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbi5zcWwKQEAgLTAsMCAr MSw0NjcgQEAKKy0tIEpTT04oKQorU0VMRUNUIEpTT04oKTsKK1NFTEVDVCBKU09OKE5VTEwp OworU0VMRUNUIEpTT04oJ3sgImEiIDogMSB9ICcpOworU0VMRUNUIEpTT04oJ3sgImEiIDog MSB9ICcgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT04oJ3sgImEiIDogMSB9ICcgRk9STUFU IEpTT04gRU5DT0RJTkcgVVRGOCk7CitTRUxFQ1QgSlNPTigneyAiYSIgOiAxIH0gJzo6Ynl0 ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7CitTRUxFQ1QgcGdfdHlwZW9mKEpTT04o J3sgImEiIDogMSB9ICcpKTsKKworU0VMRUNUIEpTT04oJyAgIDEgICAnOjpqc29uKTsKK1NF TEVDVCBKU09OKCcgICAxICAgJzo6anNvbmIpOworU0VMRUNUIEpTT04oJyAgIDEgICAnOjpq c29uIFdJVEggVU5JUVVFIEtFWVMpOworU0VMRUNUIEpTT04oMTIzKTsKKworU0VMRUNUIEpT T04oJ3siYSI6IDEsICJhIjogMn0nKTsKK1NFTEVDVCBKU09OKCd7ImEiOiAxLCAiYSI6IDJ9 JyBXSVRIIFVOSVFVRSBLRVlTKTsKK1NFTEVDVCBKU09OKCd7ImEiOiAxLCAiYSI6IDJ9JyBX SVRIT1VUIFVOSVFVRSBLRVlTKTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgSlNPTignMTIzJyk7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVD VCBKU09OKCcxMjMnIEZPUk1BVCBKU09OKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIEpTT04oJzEyMyc6OmJ5dGVhIEZPUk1BVCBKU09OKTsKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT04oJzEyMyc6OmJ5dGVhIEZPUk1BVCBKU09O IEVOQ09ESU5HIFVURjgpOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg SlNPTignMTIzJyBXSVRIIFVOSVFVRSBLRVlTKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIEpTT04oJzEyMycgV0lUSE9VVCBVTklRVUUgS0VZUyk7CisKK1NFTEVD VCBKU09OKCcxMjMnIFJFVFVSTklORyB0ZXh0KTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJyk7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCBKU09OKCcxMjMnIFJFVFVSTklORyBqc29uKTsKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT04oJzEyMycgUkVUVVJOSU5HIGpzb25iKTsKK1NF TEVDVCBwZ190eXBlb2YoSlNPTignMTIzJykpOworU0VMRUNUIHBnX3R5cGVvZihKU09OKCcx MjMnIFJFVFVSTklORyBqc29uKSk7CitTRUxFQ1QgcGdfdHlwZW9mKEpTT04oJzEyMycgUkVU VVJOSU5HIGpzb25iKSk7CisKK1NFVCBzcWxfanNvbiA9IGpzb25iOworCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OKCcxMjMnKTsKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT04oJzEyMycgUkVUVVJOSU5HIGpzb24pOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJyBSRVRVUk5JTkcg anNvbmIpOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIz JyBSRVRVUk5JTkcgcGdfY2F0YWxvZy5qc29uKTsKK1NFTEVDVCBwZ190eXBlb2YoSlNPTign MTIzJykpOworU0VMRUNUIHBnX3R5cGVvZihKU09OKCcxMjMnIFJFVFVSTklORyBqc29uKSk7 CitTRUxFQ1QgcGdfdHlwZW9mKEpTT04oJzEyMycgUkVUVVJOSU5HIGpzb25iKSk7CitTRUxF Q1QgcGdfdHlwZW9mKEpTT04oJzEyMycgUkVUVVJOSU5HIHBnX2NhdGFsb2cuanNvbikpOwor CitTRVQgc3FsX2pzb24gPSBqc29uOworCistLSBKU09OX1NDQUxBUigpCitTRUxFQ1QgSlNP Tl9TQ0FMQVIoKTsKK1NFTEVDVCBKU09OX1NDQUxBUihOVUxMKTsKK1NFTEVDVCBKU09OX1ND QUxBUihOVUxMOjppbnQpOworU0VMRUNUIEpTT05fU0NBTEFSKDEyMyk7CitTRUxFQ1QgSlNP Tl9TQ0FMQVIoMTIzLjQ1KTsKK1NFTEVDVCBKU09OX1NDQUxBUigxMjMuNDU6Om51bWVyaWMp OworU0VMRUNUIEpTT05fU0NBTEFSKHRydWUpOworU0VMRUNUIEpTT05fU0NBTEFSKGZhbHNl KTsKK1NFTEVDVCBKU09OX1NDQUxBUignIDEyMy40NScpOworU0VMRUNUIEpTT05fU0NBTEFS KCcyMDIwLTA2LTA3Jzo6ZGF0ZSk7CitTRUxFQ1QgSlNPTl9TQ0FMQVIoJzIwMjAtMDYtMDcg MDE6MDI6MDMnOjp0aW1lc3RhbXApOworU0VMRUNUIEpTT05fU0NBTEFSKCd7fSc6Ompzb24p OworU0VMRUNUIEpTT05fU0NBTEFSKCd7fSc6Ompzb25iKTsKKworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzKTsKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT05fU0NBTEFSKCcxMjMnKTsKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT05fU0NBTEFSKDEyMyBSRVRVUk5JTkcganNv bik7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OX1NDQUxBUigx MjMgUkVUVVJOSU5HIGpzb25iKTsKKworU0VUIHNxbF9qc29uID0ganNvbmI7CisKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT05fU0NBTEFSKDEyMyk7CitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OX1NDQUxBUigxMjMgUkVUVVJO SU5HIGpzb24pOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9T Q0FMQVIoMTIzIFJFVFVSTklORyBqc29uYik7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCBKU09OX1NDQUxBUigxMjMgUkVUVVJOSU5HIHBnX2NhdGFsb2cuanNvbik7 CisKK1NFVCBzcWxfanNvbiA9IGpzb247CisKKy0tIEpTT05fU0VSSUFMSVpFKCkKK1NFTEVD VCBKU09OX1NFUklBTElaRSgpOworU0VMRUNUIEpTT05fU0VSSUFMSVpFKE5VTEwpOworU0VM RUNUIEpTT05fU0VSSUFMSVpFKEpTT04oJ3sgImEiIDogMSB9ICcpKTsKK1NFTEVDVCBKU09O X1NFUklBTElaRSgneyAiYSIgOiAxIH0gJyk7CitTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoJzEn KTsKK1NFTEVDVCBKU09OX1NFUklBTElaRSgnMScgRk9STUFUIEpTT04pOworU0VMRUNUIEpT T05fU0VSSUFMSVpFKCd7ICJhIiA6IDEgfSAnIFJFVFVSTklORyBieXRlYSk7CitTRUxFQ1Qg cGdfdHlwZW9mKEpTT05fU0VSSUFMSVpFKE5VTEwpKTsKKworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoJ3t9Jyk7CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OX1NFUklBTElaRSgne30nIFJFVFVSTklORyBi eXRlYSk7CisKKy0tIEpTT05fT0JKRUNUKCkKK1NFTEVDVCBKU09OX09CSkVDVCgpOworU0VM RUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX09CSkVDVChS RVRVUk5JTkcganNvbiBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJO SU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIgRk9STUFU IEpTT04pOworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBK U09OX09CSkVDVChSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9P QkpFQ1QoUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7CitTRUxF Q1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04gRU5DT0RJTkcgSU5W QUxJRF9FTkNPRElORyk7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGJ5dGVhKTsK K1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04pOworU0VM RUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBV VEY4KTsKK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04g RU5DT0RJTkcgVVRGMTYpOworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBG T1JNQVQgSlNPTiBFTkNPRElORyBVVEYzMik7CisKK1NFTEVDVCBKU09OX09CSkVDVCgnZm9v JzogTlVMTDo6aW50IEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnZm9vJzog TlVMTDo6aW50IEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworU0VMRUNUIEpTT05fT0JK RUNUKCdmb28nOiBOVUxMOjpqc29uIEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX09CSkVD VCgnZm9vJzogTlVMTDo6anNvbiBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK1NFTEVD VCBKU09OX09CSkVDVCgnZm9vJzogTlVMTDo6anNvbmIgRk9STUFUIEpTT04pOworU0VMRUNU IEpTT05fT0JKRUNUKCdmb28nOiBOVUxMOjpqc29uYiBGT1JNQVQgSlNPTiBFTkNPRElORyBV VEY4KTsKKworU0VMRUNUIEpTT05fT0JKRUNUKE5VTEw6IDEpOworU0VMRUNUIEpTT05fT0JK RUNUKCdhJzogMiArIDMpOworU0VMRUNUIEpTT05fT0JKRUNUKCdhJyBWQUxVRSAyICsgMyk7 CistLVNFTEVDVCBKU09OX09CSkVDVChLRVkgJ2EnIFZBTFVFIDIgKyAzKTsKK1NFTEVDVCBK U09OX09CSkVDVCgnYScgfHwgMjogMSk7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoKCdhJyB8fCAy KSBWQUxVRSAxKTsKKy0tU0VMRUNUIEpTT05fT0JKRUNUKCdhJyB8fCAyIFZBTFVFIDEpOwor LS1TRUxFQ1QgSlNPTl9PQkpFQ1QoS0VZICdhJyB8fCAyIFZBTFVFIDEpOworU0VMRUNUIEpT T05fT0JKRUNUKCdhJzogMjo6dGV4dCk7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnIFZBTFVF IDI6OnRleHQpOworLS1TRUxFQ1QgSlNPTl9PQkpFQ1QoS0VZICdhJyBWQUxVRSAyOjp0ZXh0 KTsKK1NFTEVDVCBKU09OX09CSkVDVCgxOjp0ZXh0OiAyKTsKK1NFTEVDVCBKU09OX09CSkVD VCgoMTo6dGV4dCkgVkFMVUUgMik7CistLVNFTEVDVCBKU09OX09CSkVDVCgxOjp0ZXh0IFZB TFVFIDIpOworLS1TRUxFQ1QgSlNPTl9PQkpFQ1QoS0VZIDE6OnRleHQgVkFMVUUgMik7CitT RUxFQ1QgSlNPTl9PQkpFQ1QoanNvbiAnWzFdJzogMTIzKTsKK1NFTEVDVCBKU09OX09CSkVD VChBUlJBWVsxLDIsM106ICdhYWEnKTsKKworU0VMRUNUIEpTT05fT0JKRUNUKAorCSdhJzog JzEyMycsCisJMS4yMzogMTIzLAorCSdjJzoganNvbiAnWyAxLHRydWUseyB9IF0nLAorCSdk JzoganNvbmIgJ3sgIngiIDogMTIzLjQ1IH0nCispOworCitTRUxFQ1QgSlNPTl9PQkpFQ1Qo CisJJ2EnOiAnMTIzJywKKwkxLjIzOiAxMjMsCisJJ2MnOiBqc29uICdbIDEsdHJ1ZSx7IH0g XScsCisJJ2QnOiBqc29uYiAneyAieCIgOiAxMjMuNDUgfScKKwlSRVRVUk5JTkcganNvbmIK Kyk7CisKKy8qCitTRUxFQ1QgSlNPTl9PQkpFQ1QoCisJJ2EnOiAnMTIzJywKKwlLRVkgMS4y MyBWQUxVRSAxMjMsCisJJ2MnIFZBTFVFIGpzb24gJ1sxLCB0cnVlLCB7fV0nCispOworKi8K KworU0VMRUNUIEpTT05fT0JKRUNUKCdhJzogJzEyMycsICdiJzogSlNPTl9PQkpFQ1QoJ2En OiAxMTEsICdiJzogJ2FhYScpKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6ICcxMjMnLCAn Yic6IEpTT05fT0JKRUNUKCdhJzogMTExLCAnYic6ICdhYWEnIFJFVFVSTklORyBqc29uYikp OworCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnOiBKU09OX09CSkVDVCgnYic6IDEgUkVUVVJO SU5HIHRleHQpKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6IEpTT05fT0JKRUNUKCdiJzog MSBSRVRVUk5JTkcgdGV4dCkgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fT0JKRUNUKCdh JzogSlNPTl9PQkpFQ1QoJ2InOiAxIFJFVFVSTklORyBieXRlYSkpOworU0VMRUNUIEpTT05f T0JKRUNUKCdhJzogSlNPTl9PQkpFQ1QoJ2InOiAxIFJFVFVSTklORyBieXRlYSkgRk9STUFU IEpTT04pOworCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnOiAnMScsICdiJzogTlVMTCwgJ2Mn OiAyKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6ICcxJywgJ2InOiBOVUxMLCAnYyc6IDIg TlVMTCBPTiBOVUxMKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6ICcxJywgJ2InOiBOVUxM LCAnYyc6IDIgQUJTRU5UIE9OIE5VTEwpOworCitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwg JzEnOiBOVUxMIFdJVEggVU5JUVVFKTsKK1NFTEVDVCBKU09OX09CSkVDVCgxOiAxLCAnMSc6 IE5VTEwgQUJTRU5UIE9OIE5VTEwgV0lUSCBVTklRVUUpOworU0VMRUNUIEpTT05fT0JKRUNU KDE6IDEsICcxJzogTlVMTCBOVUxMIE9OIE5VTEwgV0lUSCBVTklRVUUgUkVUVVJOSU5HIGpz b25iKTsKK1NFTEVDVCBKU09OX09CSkVDVCgxOiAxLCAnMSc6IE5VTEwgQUJTRU5UIE9OIE5V TEwgV0lUSCBVTklRVUUgUkVUVVJOSU5HIGpzb25iKTsKKworU0VMRUNUIEpTT05fT0JKRUNU KDE6IDEsICcyJzogTlVMTCwgJzEnOiAxIE5VTEwgT04gTlVMTCBXSVRIIFVOSVFVRSk7CitT RUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwgJzInOiBOVUxMLCAnMSc6IDEgQUJTRU5UIE9OIE5V TEwgV0lUSCBVTklRVUUpOworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVMTCwg JzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJVEhPVVQgVU5JUVVFKTsKK1NFTEVDVCBKU09OX09C SkVDVCgxOiAxLCAnMic6IE5VTEwsICcxJzogMSBBQlNFTlQgT04gTlVMTCBXSVRIIFVOSVFV RSBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVM TCwgJzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJVEhPVVQgVU5JUVVFIFJFVFVSTklORyBqc29u Yik7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwgJzInOiBOVUxMLCAnMyc6IDEsIDQ6IE5V TEwsICc1JzogJ2EnIEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFIFJFVFVSTklORyBqc29u Yik7CisKKworLS0gSlNPTl9BUlJBWSgpCitTRUxFQ1QgSlNPTl9BUlJBWSgpOworU0VMRUNU IEpTT05fQVJSQVkoUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJO SU5HIGpzb24gRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGpz b25iKTsKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyBqc29uYiBGT1JNQVQgSlNPTik7 CitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9BUlJB WShSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9BUlJBWShSRVRV Uk5JTkcgdGV4dCBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK1NFTEVDVCBKU09OX0FS UkFZKFJFVFVSTklORyB0ZXh0IEZPUk1BVCBKU09OIEVOQ09ESU5HIElOVkFMSURfRU5DT0RJ TkcpOworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGJ5dGVhKTsKK1NFTEVDVCBKU09O X0FSUkFZKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9BUlJB WShSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7CitTRUxFQ1Qg SlNPTl9BUlJBWShSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGMTYp OworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVOQ09E SU5HIFVURjMyKTsKKworU0VMRUNUIEpTT05fQVJSQVkoJ2FhYScsIDExMSwgdHJ1ZSwgYXJy YXlbMSwyLDNdLCBOVUxMLCBqc29uICd7ImEiOiBbMV19JywganNvbmIgJ1siYSIsM10nKTsK KworU0VMRUNUIEpTT05fQVJSQVkoJ2EnLCAgTlVMTCwgJ2InIE5VTEwgICBPTiBOVUxMKTsK K1NFTEVDVCBKU09OX0FSUkFZKCdhJywgIE5VTEwsICdiJyBBQlNFTlQgT04gTlVMTCk7CitT RUxFQ1QgSlNPTl9BUlJBWShOVUxMLCBOVUxMLCAnYicgQUJTRU5UIE9OIE5VTEwpOworU0VM RUNUIEpTT05fQVJSQVkoJ2EnLCAgTlVMTCwgJ2InIE5VTEwgICBPTiBOVUxMIFJFVFVSTklO RyBqc29uYik7CitTRUxFQ1QgSlNPTl9BUlJBWSgnYScsICBOVUxMLCAnYicgQUJTRU5UIE9O IE5VTEwgUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX0FSUkFZKE5VTEwsIE5VTEws ICdiJyBBQlNFTlQgT04gTlVMTCBSRVRVUk5JTkcganNvbmIpOworCitTRUxFQ1QgSlNPTl9B UlJBWShKU09OX0FSUkFZKCd7ICJhIiA6IDEyMyB9JyBSRVRVUk5JTkcgdGV4dCkpOworU0VM RUNUIEpTT05fQVJSQVkoSlNPTl9BUlJBWSgneyAiYSIgOiAxMjMgfScgRk9STUFUIEpTT04g UkVUVVJOSU5HIHRleHQpKTsKK1NFTEVDVCBKU09OX0FSUkFZKEpTT05fQVJSQVkoJ3sgImEi IDogMTIzIH0nIEZPUk1BVCBKU09OIFJFVFVSTklORyB0ZXh0KSBGT1JNQVQgSlNPTik7CisK K1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpIEZST00gKFZBTFVFUyAoMSksICgyKSwgKE5V TEwpLCAoNCkpIGZvbyhpKSk7CitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9NIChW QUxVRVMgKE5VTEw6OmludFtdKSwgKCd7MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7Myw0 fScpLCAoTlVMTCkpIGZvbyhpKSk7CitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9N IChWQUxVRVMgKE5VTEw6OmludFtdKSwgKCd7MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7 Myw0fScpLCAoTlVMTCkpIGZvbyhpKSBSRVRVUk5JTkcganNvbmIpOworLS1TRUxFQ1QgSlNP Tl9BUlJBWShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6OmludFtdKSwgKCd7MSwyfScp LCAoTlVMTCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVMTCkpIGZvbyhpKSBOVUxMIE9OIE5V TEwpOworLS1TRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6 OmludFtdKSwgKCd7MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVMTCkp IGZvbyhpKSBOVUxMIE9OIE5VTEwgUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX0FS UkFZKFNFTEVDVCBpIEZST00gKFZBTFVFUyAoMyksICgxKSwgKE5VTEwpLCAoMikpIGZvbyhp KSBPUkRFUiBCWSBpKTsKKy0tIFNob3VsZCBmYWlsCitTRUxFQ1QgSlNPTl9BUlJBWShTRUxF Q1QgRlJPTSAoVkFMVUVTICgxKSkgZm9vKGkpKTsKK1NFTEVDVCBKU09OX0FSUkFZKFNFTEVD VCBpLCBpIEZST00gKFZBTFVFUyAoMSkpIGZvbyhpKSk7CitTRUxFQ1QgSlNPTl9BUlJBWShT RUxFQ1QgKiBGUk9NIChWQUxVRVMgKDEsIDIpKSBmb28oaSwgaikpOworCistLSBKU09OX0FS UkFZQUdHKCkKK1NFTEVDVAlKU09OX0FSUkFZQUdHKGkpIElTIE5VTEwsCisJCUpTT05fQVJS QVlBR0coaSBSRVRVUk5JTkcganNvbmIpIElTIE5VTEwKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDApIGk7CisKK1NFTEVDVAlKU09OX0FSUkFZQUdHKGkpLAorCQlKU09OX0FSUkFZQUdH KGkgUkVUVVJOSU5HIGpzb25iKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgaTsKKwor U0VMRUNUIEpTT05fQVJSQVlBR0coaSBPUkRFUiBCWSBpIERFU0MpCitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1KSBpOworCitTRUxFQ1QgSlNPTl9BUlJBWUFHRyhpOjp0ZXh0Ojpqc29u KQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgaTsKKworU0VMRUNUIEpTT05fQVJSQVlB R0coSlNPTl9BUlJBWShpLCBpICsgMSBSRVRVUk5JTkcgdGV4dCkgRk9STUFUIEpTT04pCitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBpOworCitTRUxFQ1QJSlNPTl9BUlJBWUFHRyhO VUxMKSwKKwkJSlNPTl9BUlJBWUFHRyhOVUxMIFJFVFVSTklORyBqc29uYikKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUpOworCitTRUxFQ1QJSlNPTl9BUlJBWUFHRyhOVUxMIE5VTEwg T04gTlVMTCksCisJCUpTT05fQVJSQVlBR0coTlVMTCBOVUxMIE9OIE5VTEwgUkVUVVJOSU5H IGpzb25iKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSk7CisKK1NFTEVDVAorCUpTT05f QVJSQVlBR0coYmFyKSwKKwlKU09OX0FSUkFZQUdHKGJhciBSRVRVUk5JTkcganNvbmIpLAor CUpTT05fQVJSQVlBR0coYmFyIEFCU0VOVCBPTiBOVUxMKSwKKwlKU09OX0FSUkFZQUdHKGJh ciBBQlNFTlQgT04gTlVMTCBSRVRVUk5JTkcganNvbmIpLAorCUpTT05fQVJSQVlBR0coYmFy IE5VTEwgT04gTlVMTCksCisJSlNPTl9BUlJBWUFHRyhiYXIgTlVMTCBPTiBOVUxMIFJFVFVS TklORyBqc29uYiksCisJSlNPTl9BUlJBWUFHRyhmb28pLAorCUpTT05fQVJSQVlBR0coZm9v IFJFVFVSTklORyBqc29uYiksCisJSlNPTl9BUlJBWUFHRyhmb28gT1JERVIgQlkgYmFyKSBG SUxURVIgKFdIRVJFIGJhciA+IDIpLAorCUpTT05fQVJSQVlBR0coZm9vIE9SREVSIEJZIGJh ciBSRVRVUk5JTkcganNvbmIpIEZJTFRFUiAoV0hFUkUgYmFyID4gMikKK0ZST00KKwkoVkFM VUVTIChOVUxMKSwgKDMpLCAoMSksIChOVUxMKSwgKE5VTEwpLCAoNSksICgyKSwgKDQpLCAo TlVMTCkpIGZvbyhiYXIpOworCitTRUxFQ1QKKwliYXIsIEpTT05fQVJSQVlBR0coYmFyKSBG SUxURVIgKFdIRVJFIGJhciA+IDIpIE9WRVIgKFBBUlRJVElPTiBCWSBmb28uYmFyICUgMikK K0ZST00KKwkoVkFMVUVTIChOVUxMKSwgKDMpLCAoMSksIChOVUxMKSwgKE5VTEwpLCAoNSks ICgyKSwgKDQpLCAoTlVMTCksICg1KSwgKDQpKSBmb28oYmFyKTsKKworLS0gSlNPTl9PQkpF Q1RBR0coKQorU0VMRUNUCUpTT05fT0JKRUNUQUdHKCdrZXknOiAxKSBJUyBOVUxMLAorCQlK U09OX09CSkVDVEFHRygna2V5JzogMSBSRVRVUk5JTkcganNvbmIpIElTIE5VTEwKK1dIRVJF IEZBTFNFOworCitTRUxFQ1QgSlNPTl9PQkpFQ1RBR0coTlVMTDogMSk7CisKK1NFTEVDVCBK U09OX09CSkVDVEFHRyhOVUxMOiAxIFJFVFVSTklORyBqc29uYik7CisKK1NFTEVDVAorCUpT T05fT0JKRUNUQUdHKGk6IGkpLAorLS0JSlNPTl9PQkpFQ1RBR0coaSBWQUxVRSBpKSwKKy0t CUpTT05fT0JKRUNUQUdHKEtFWSBpIFZBTFVFIGkpLAorCUpTT05fT0JKRUNUQUdHKGk6IGkg UkVUVVJOSU5HIGpzb25iKQorRlJPTQorCWdlbmVyYXRlX3NlcmllcygxLCA1KSBpOworCitT RUxFQ1QKKwlKU09OX09CSkVDVEFHRyhrOiB2KSwKKwlKU09OX09CSkVDVEFHRyhrOiB2IE5V TEwgT04gTlVMTCksCisJSlNPTl9PQkpFQ1RBR0coazogdiBBQlNFTlQgT04gTlVMTCksCisJ SlNPTl9PQkpFQ1RBR0coazogdiBSRVRVUk5JTkcganNvbmIpLAorCUpTT05fT0JKRUNUQUdH KGs6IHYgTlVMTCBPTiBOVUxMIFJFVFVSTklORyBqc29uYiksCisJSlNPTl9PQkpFQ1RBR0co azogdiBBQlNFTlQgT04gTlVMTCBSRVRVUk5JTkcganNvbmIpCitGUk9NCisJKFZBTFVFUyAo MSwgMSksICgxLCBOVUxMKSwgKDIsIE5VTEwpLCAoMywgMykpIGZvbyhrLCB2KTsKKworU0VM RUNUIEpTT05fT0JKRUNUQUdHKGs6IHYgV0lUSCBVTklRVUUgS0VZUykKK0ZST00gKFZBTFVF UyAoMSwgMSksICgxLCBOVUxMKSwgKDIsIDIpKSBmb28oaywgdik7CisKK1NFTEVDVCBKU09O X09CSkVDVEFHRyhrOiB2IEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFIEtFWVMpCitGUk9N IChWQUxVRVMgKDEsIDEpLCAoMSwgTlVMTCksICgyLCAyKSkgZm9vKGssIHYpOworCitTRUxF Q1QgSlNPTl9PQkpFQ1RBR0coazogdiBBQlNFTlQgT04gTlVMTCBXSVRIIFVOSVFVRSBLRVlT KQorRlJPTSAoVkFMVUVTICgxLCAxKSwgKDAsIE5VTEwpLCAoMywgTlVMTCksICgyLCAyKSwg KDQsIE5VTEwpKSBmb28oaywgdik7CisKK1NFTEVDVCBKU09OX09CSkVDVEFHRyhrOiB2IFdJ VEggVU5JUVVFIEtFWVMgUkVUVVJOSU5HIGpzb25iKQorRlJPTSAoVkFMVUVTICgxLCAxKSwg KDEsIE5VTEwpLCAoMiwgMikpIGZvbyhrLCB2KTsKKworU0VMRUNUIEpTT05fT0JKRUNUQUdH KGs6IHYgQUJTRU5UIE9OIE5VTEwgV0lUSCBVTklRVUUgS0VZUyBSRVRVUk5JTkcganNvbmIp CitGUk9NIChWQUxVRVMgKDEsIDEpLCAoMSwgTlVMTCksICgyLCAyKSkgZm9vKGssIHYpOwor CistLSBUZXN0IEpTT05fT0JKRUNUIGRlcGFyc2luZworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nIDogJzEnIEZPUk1BVCBKU09OLCAn YmFyJyA6ICdiYXonIFJFVFVSTklORyBqc29uKTsKKworQ1JFQVRFIFZJRVcganNvbl9vYmpl Y3RfdmlldyBBUworU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nIDogJzEnIEZPUk1BVCBKU09O LCAnYmFyJyA6ICdiYXonIFJFVFVSTklORyBqc29uKTsKKworXHN2IGpzb25fb2JqZWN0X3Zp ZXcKKworRFJPUCBWSUVXIGpzb25fb2JqZWN0X3ZpZXc7CisKKy0tIFRlc3QgSlNPTl9BUlJB WSBkZXBhcnNpbmcKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBKU09O X0FSUkFZKCcxJyBGT1JNQVQgSlNPTiwgMiBSRVRVUk5JTkcganNvbik7CisKK0NSRUFURSBW SUVXIGpzb25fYXJyYXlfdmlldyBBUworU0VMRUNUIEpTT05fQVJSQVkoJzEnIEZPUk1BVCBK U09OLCAyIFJFVFVSTklORyBqc29uKTsKKworXHN2IGpzb25fYXJyYXlfdmlldworCitEUk9Q IFZJRVcganNvbl9hcnJheV92aWV3OworCistLSBUZXN0IEpTT05fT0JKRUNUQUdHIGRlcGFy c2luZworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIEpTT05fT0JKRUNU QUdHKGk6ICgnMTExJyB8fCBpKTo6Ynl0ZWEgRk9STUFUIEpTT04gV0lUSCBVTklRVUUgUkVU VVJOSU5HIHRleHQpIEZJTFRFUiAoV0hFUkUgaSA+IDMpCitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDUpIGk7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBKU09O X09CSkVDVEFHRyhpOiAoJzExMScgfHwgaSk6OmJ5dGVhIEZPUk1BVCBKU09OIFdJVEggVU5J UVVFIFJFVFVSTklORyB0ZXh0KSBPVkVSIChQQVJUSVRJT04gQlkgaSAlIDIpCitGUk9NIGdl bmVyYXRlX3NlcmllcygxLDUpIGk7CisKK0NSRUFURSBWSUVXIGpzb25fb2JqZWN0YWdnX3Zp ZXcgQVMKK1NFTEVDVCBKU09OX09CSkVDVEFHRyhpOiAoJzExMScgfHwgaSk6OmJ5dGVhIEZP Uk1BVCBKU09OIFdJVEggVU5JUVVFIFJFVFVSTklORyB0ZXh0KSBGSUxURVIgKFdIRVJFIGkg PiAzKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBpOworCitcc3YganNvbl9vYmplY3Rh Z2dfdmlldworCitEUk9QIFZJRVcganNvbl9vYmplY3RhZ2dfdmlldzsKKworLS0gVGVzdCBK U09OX0FSUkFZQUdHIGRlcGFyc2luZworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIEpTT05fQVJSQVlBR0coKCcxMTEnIHx8IGkpOjpieXRlYSBGT1JNQVQgSlNPTiBO VUxMIE9OIE5VTEwgUkVUVVJOSU5HIHRleHQpIEZJTFRFUiAoV0hFUkUgaSA+IDMpCitGUk9N IGdlbmVyYXRlX3NlcmllcygxLDUpIGk7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCBKU09OX0FSUkFZQUdHKCgnMTExJyB8fCBpKTo6Ynl0ZWEgRk9STUFUIEpT T04gTlVMTCBPTiBOVUxMIFJFVFVSTklORyB0ZXh0KSBPVkVSIChQQVJUSVRJT04gQlkgaSAl IDIpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGk7CisKK0NSRUFURSBWSUVXIGpzb25f YXJyYXlhZ2dfdmlldyBBUworU0VMRUNUIEpTT05fQVJSQVlBR0coKCcxMTEnIHx8IGkpOjpi eXRlYSBGT1JNQVQgSlNPTiBOVUxMIE9OIE5VTEwgUkVUVVJOSU5HIHRleHQpIEZJTFRFUiAo V0hFUkUgaSA+IDMpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGk7CisKK1xzdiBqc29u X2FycmF5YWdnX3ZpZXcKKworRFJPUCBWSUVXIGpzb25fYXJyYXlhZ2dfdmlldzsKKworLS0g VGVzdCBKU09OX0FSUkFZKHN1YnF1ZXJ5KSBkZXBhcnNpbmcKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpIEZST00gKFZBTFVFUyAo MSksICgyKSwgKE5VTEwpLCAoNCkpIGZvbyhpKSBSRVRVUk5JTkcganNvbmIpOworCitDUkVB VEUgVklFVyBqc29uX2FycmF5X3N1YnF1ZXJ5X3ZpZXcgQVMKK1NFTEVDVCBKU09OX0FSUkFZ KFNFTEVDVCBpIEZST00gKFZBTFVFUyAoMSksICgyKSwgKE5VTEwpLCAoNCkpIGZvbyhpKSBS RVRVUk5JTkcganNvbmIpOworCitcc3YganNvbl9hcnJheV9zdWJxdWVyeV92aWV3CisKK0RS T1AgVklFVyBqc29uX2FycmF5X3N1YnF1ZXJ5X3ZpZXc7CisKKy0tIElTIEpTT04gcHJlZGlj YXRlCitTRUxFQ1QgTlVMTCBJUyBKU09OOworU0VMRUNUIE5VTEwgSVMgTk9UIEpTT047CitT RUxFQ1QgTlVMTDo6anNvbiBJUyBKU09OOworU0VMRUNUIE5VTEw6Ompzb25iIElTIEpTT047 CitTRUxFQ1QgTlVMTDo6dGV4dCBJUyBKU09OOworU0VMRUNUIE5VTEw6OmJ5dGVhIElTIEpT T047CitTRUxFQ1QgTlVMTDo6aW50IElTIEpTT047CisKK1NFTEVDVCAnJyBJUyBKU09OOwor CitTRUxFQ1QgYnl0ZWEgJ1x4MDAnIElTIEpTT047CisKK0NSRUFURSBUQUJMRSB0ZXN0X2lz X2pzb24gKGpzIHRleHQpOworCitJTlNFUlQgSU5UTyB0ZXN0X2lzX2pzb24gVkFMVUVTCisg KE5VTEwpLAorICgnJyksCisgKCcxMjMnKSwKKyAoJyJhYWEgIicpLAorICgndHJ1ZScpLAor ICgnbnVsbCcpLAorICgnW10nKSwKKyAoJ1sxLCAiMiIsIHt9XScpLAorICgne30nKSwKKyAo J3sgImEiOiAxLCAiYiI6IG51bGwgfScpLAorICgneyAiYSI6IDEsICJhIjogbnVsbCB9Jyks CisgKCd7ICJhIjogMSwgImIiOiBbeyAiYSI6IDEgfSwgeyAiYSI6IDIgfV0gfScpLAorICgn eyAiYSI6IDEsICJiIjogW3sgImEiOiAxLCAiYiI6IDAsICJhIjogMiB9XSB9JyksCisgKCdh YWEnKSwKKyAoJ3thOjF9JyksCisgKCdbImEiLF0nKTsKKworU0VMRUNUCisJanMsCisJanMg SVMgSlNPTiAiSVMgSlNPTiIsCisJanMgSVMgTk9UIEpTT04gIklTIE5PVCBKU09OIiwKKwlq cyBJUyBKU09OIFZBTFVFICJJUyBWQUxVRSIsCisJanMgSVMgSlNPTiBPQkpFQ1QgIklTIE9C SkVDVCIsCisJanMgSVMgSlNPTiBBUlJBWSAiSVMgQVJSQVkiLAorCWpzIElTIEpTT04gU0NB TEFSICJJUyBTQ0FMQVIiLAorCWpzIElTIEpTT04gV0lUSE9VVCBVTklRVUUgS0VZUyAiV0lU SE9VVCBVTklRVUUiLAorCWpzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZUyAiV0lUSCBVTklR VUUiCitGUk9NCisJdGVzdF9pc19qc29uOworCitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09O ICJJUyBKU09OIiwKKwlqcyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpT T04gVkFMVUUgIklTIFZBTFVFIiwKKwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwK KwlqcyBJUyBKU09OIEFSUkFZICJJUyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklT IFNDQUxBUiIsCisJanMgSVMgSlNPTiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVO SVFVRSIsCisJanMgSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZS T00KKwkoU0VMRUNUIGpzOjpqc29uIEZST00gdGVzdF9pc19qc29uIFdIRVJFIGpzIElTIEpT T04pIGZvbyhqcyk7CisKK1NFTEVDVAorCWpzMCwKKwlqcyBJUyBKU09OICJJUyBKU09OIiwK KwlqcyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklT IFZBTFVFIiwKKwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09O IEFSUkFZICJJUyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJ anMgSVMgSlNPTiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMg SVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNU IGpzLCBqczo6Ynl0ZWEgRlJPTSB0ZXN0X2lzX2pzb24gV0hFUkUganMgSVMgSlNPTikgZm9v KGpzMCwganMpOworCitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09OICJJUyBKU09OIiwKKwlq cyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklTIFZB TFVFIiwKKwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09OIEFS UkFZICJJUyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJanMg SVMgSlNPTiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMgSVMg SlNPTiBXSVRIIFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNUIGpz Ojpqc29uYiBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28oanMpOwor CistLSBUZXN0IElTIEpTT04gZGVwYXJzaW5nCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgJzEnIElTIEpTT04gQVMgImFueSIsICgnMScgfHwgaSkgSVMgSlNPTiBT Q0FMQVIgQVMgInNjYWxhciIsICdbXScgSVMgTk9UIEpTT04gQVJSQVkgQVMgImFycmF5Iiwg J3t9JyBJUyBKU09OIE9CSkVDVCBXSVRIIFVOSVFVRSBBUyAib2JqZWN0IiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzKSBpOworCitDUkVBVEUgVklFVyBpc19qc29uX3ZpZXcgQVMKK1NF TEVDVCAnMScgSVMgSlNPTiBBUyAiYW55IiwgKCcxJyB8fCBpKSBJUyBKU09OIFNDQUxBUiBB UyAic2NhbGFyIiwgJ1tdJyBJUyBOT1QgSlNPTiBBUlJBWSBBUyAiYXJyYXkiLCAne30nIElT IEpTT04gT0JKRUNUIFdJVEggVU5JUVVFIEFTICJvYmplY3QiIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDMpIGk7CisKK1xzdiBpc19qc29uX3ZpZXcKKworRFJPUCBWSUVXIGlzX2pzb25f dmlldzsKLS0gCjIuMjUuMQoK --------------wGx6OcQsLj50vkDF0YvlnG34 Content-Type: text/x-patch; charset=UTF-8; name="0002-JSON_TABLE-v55.patch" Content-Disposition: attachment; filename="0002-JSON_TABLE-v55.patch" Content-Transfer-Encoding: base64 RnJvbSBiMDQ4YzA4OGNkZDU3ZjQ5ZDZkZDBhZTIzZTBmZGQ4ZDdkYzY5YTIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVHVlLCAxIEZlYiAyMDIyIDEyOjEzOjM1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCAyLzRdIEpTT05fVEFCTEUKCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAg ICAgICAgICAgICAgICAgICB8IDMzMCArKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgICB8ICAxOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyAgICB8ICAyMyArLQogc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMgICAgICAgICAgICAgICB8ICA4NSArKysKIHNyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYyAgICAgICAgICAgICAgfCAgMjkgKwogc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMgICAgICAgICAgICAgICB8ICAyNyArCiBzcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jICAgICAgICAgICAgICAgIHwgIDI5ICsKIHNyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jICAgICAgICAgICAgICAgfCAgMzEgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9N YWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICB8IDE5OSArKysrKystCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY2xhdXNlLmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfanNvbnRhYmxlLmMgICAgICAgIHwgNDY3ICsrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAgICAgICB8IDQzNiArKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAg fCAyMjggKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUuYyAg ICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAgICAg ICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICAg ICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgfCAgNDggKysKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAg ICAgfCAgMzcgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oICAgICAgICAgICAgICAg IHwgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dCAg fCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCB8 IDU2MiArKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9z cWxqc29uLnNxbCAgICAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9z cWxqc29uLnNxbCAgICAgIHwgMjg0ICsrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgIDkgKwogMzIgZmlsZXMgY2hhbmdlZCwgMjg4 NiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCA1Yjhi OTM0YzUxLi4zZGY0MTg0NThjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTE4NjMyLDYgKzE4NjMyLDExIEBA IEZST00gZmlsbXMgQVMgZjsKICAgICAgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtanNv bnF1ZXJ5Ij48bGl0ZXJhbD5KU09OX1FVRVJZPC9saXRlcmFsPjwvbGluaz4KICAgICAgIDwv cGFyYT4KICAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgor ICAgICAgIDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29udGFibGUiPjxsaXRlcmFsPkpT T05fVEFCTEU8L2xpdGVyYWw+PC9saW5rPgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CiAgIDwvaXRlbWl6ZWRsaXN0PgogCiAgIDxwYXJhPgpAQCAtMTkzMDIsNiArMTkzMDcs MzMxIEBAIEZST00KICAgICA8L3NlY3Q1PgogICAgPC9zZWN0ND4KIAorICAgPHNlY3Q0IGlk PSJmdW5jdGlvbnMtanNvbnRhYmxlIj4KKyAgICA8dGl0bGU+PGxpdGVyYWw+SlNPTl9UQUJM RTwvbGl0ZXJhbD48L3RpdGxlPgorICAgIDxpbmRleHRlcm0+PHByaW1hcnk+anNvbl90YWJs ZTwvcHJpbWFyeT48L2luZGV4dGVybT4KKworPHN5bm9wc2lzPgorSlNPTl9UQUJMRSAoCisg IDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxl PnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFTU0lORyB7IDxy ZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT52YXJuYW1l PC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiA8L29wdGlvbmFs PgorICBDT0xVTU5TICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFi bGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gKQor KQorPHBocmFzZT4KK3doZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29u X3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFi bGU+IDxvcHRpb25hbD4gUEFUSCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRp b248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgV0lU SE9VVCB8IFdJVEggeyBDT05ESVRJT05BTCB8IDxvcHRpb25hbD5VTkNPTkRJVElPTkFMPC9v cHRpb25hbD4gfSB9IDxvcHRpb25hbD4gQVJSQVkgPC9vcHRpb25hbD4gV1JBUFBFUiA8L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgS0VFUCB8IE9NSVQgfSBRVU9URVMgPG9w dGlvbmFsPiBPTiBTQ0FMQVIgU1RSSU5HIDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgICAg ICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwgfCBERUZBVUxUIDxyZXBsYWNlYWJsZT5l eHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWSA8L29wdGlvbmFsPgorICAgICAg ICA8b3B0aW9uYWw+IHsgRVJST1IgfCBOVUxMIHwgREVGQVVMVCA8cmVwbGFjZWFibGU+ZXhw cmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRVJST1IgPC9vcHRpb25hbD4KKyAgfCA8cmVw bGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNl YWJsZT4gRk9STUFUIDxyZXBsYWNlYWJsZT5qc29uX3JlcHJlc2VudGF0aW9uPC9yZXBsYWNl YWJsZT4KKyAgICAgICAgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhf c3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRp b25hbD4geyBXSVRIT1VUIHwgV0lUSCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFsPlVOQ09O RElUSU9OQUw8L29wdGlvbmFsPiB9IH0gPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFsPiBX UkFQUEVSIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9 IFFVT1RFUyA8b3B0aW9uYWw+IE9OIFNDQUxBUiBTVFJJTkcgPC9vcHRpb25hbD4gPC9vcHRp b25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8IEVNUFRZIHsgQVJS QVkgfCBPQkpFQ1QgfSB8IERFRkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiB9IE9OIEVNUFRZIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBF UlJPUiB8IE5VTEwgfCBFTVBUWSB7IEFSUkFZIHwgT0JKRUNUIH0gfCBERUZBVUxUIDxyZXBs YWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFs PgorICB8IDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5 cGU8L3JlcGxhY2VhYmxlPiBFWElTVFMgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5q c29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAg ICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IFRSVUUgfCBGQUxTRSB8IFVOS05PV04gfSBPTiBF UlJPUiA8L29wdGlvbmFsPgorICB8IE5FU1RFRCBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3Bh dGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gQVMgPHJlcGxhY2Vh YmxlPnBhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIENPTFVN TlMgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0 aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgIHwgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxh Y2VhYmxlPiBGT1IgT1JESU5BTElUWQorCis8L3N5bm9wc2lzPgorCisgICAgPHNlY3Q1Pgor ICAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAg PGZ1bmN0aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9uPiBmdW5jdGlvbiBxdWVyaWVzIDxhY3Jv bnltPkpTT048L2Fjcm9ueW0+IGRhdGEKKyAgICAgIGFuZCBwcmVzZW50cyB0aGUgcmVzdWx0 cyBhcyBhIHJlbGF0aW9uYWwgdmlldywgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkIGFzIGEKKyAg ICAgIHJlZ3VsYXIgU1FMIHRhYmxlLiBZb3UgY2FuIG9ubHkgdXNlIDxmdW5jdGlvbj5KU09O X1RBQkxFPC9mdW5jdGlvbj4gaW5zaWRlIHRoZQorICAgICAgPGxpdGVyYWw+RlJPTTwvbGl0 ZXJhbD4gY2xhdXNlIG9mIHRoZSA8bGl0ZXJhbD5TRUxFQ1Q8L2xpdGVyYWw+IHN0YXRlbWVu dAorICAgICAgZm9yIGFuIFNRTCB0YWJsZS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJh PgorICAgICAgVGFraW5nIEpTT04gZGF0YSBhcyBpbnB1dCwgPGZ1bmN0aW9uPkpTT05fVEFC TEU8L2Z1bmN0aW9uPiB1c2VzCisgICAgICBhIHBhdGggZXhwcmVzc2lvbiB0byBleHRyYWN0 IGEgcGFydCBvZiB0aGUgcHJvdmlkZWQgZGF0YSB0aGF0CisgICAgICB3aWxsIGJlIHVzZWQg YXMgYSA8Zmlyc3R0ZXJtPnJvdyBwYXR0ZXJuPC9maXJzdHRlcm0+IGZvciB0aGUKKyAgICAg IGNvbnN0cnVjdGVkIHZpZXcuIEVhY2ggU1FML0pTT04gaXRlbSBhdCB0aGUgdG9wIGxldmVs IG9mIHRoZSByb3cgcGF0dGVybiBzZXJ2ZXMKKyAgICAgIGFzIHRoZSBzb3VyY2UgZm9yIGEg c2VwYXJhdGUgcm93IGluIHRoZSBjb25zdHJ1Y3RlZCByZWxhdGlvbmFsIHZpZXcuCisgICAg IDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgVG8gc3BsaXQgdGhlIHJvdyBwYXR0ZXJu IGludG8gY29sdW1ucywgPGZ1bmN0aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9uPgorICAgICAg cHJvdmlkZXMgdGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IGNsYXVzZSB0aGF0IGRl ZmluZXMgdGhlCisgICAgICBzY2hlbWEgb2YgdGhlIGNyZWF0ZWQgdmlldy4gRm9yIGVhY2gg Y29sdW1uIHRvIGJlIGNvbnN0cnVjdGVkLAorICAgICAgdGhpcyBjbGF1c2UgcHJvdmlkZXMg YSBzZXBhcmF0ZSBwYXRoIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMKKyAgICAgIHRoZSBy b3cgcGF0dGVybiwgZXh0cmFjdHMgYSBKU09OIGl0ZW0sIGFuZCByZXR1cm5zIGl0IGFzIGEK KyAgICAgIHNlcGFyYXRlIFNRTCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBjb2x1bW4uIElm IHRoZSByZXF1aXJlZCB2YWx1ZQorICAgICAgaXMgc3RvcmVkIGluIGEgbmVzdGVkIGxldmVs IG9mIHRoZSByb3cgcGF0dGVybiwgaXQgY2FuIGJlIGV4dHJhY3RlZAorICAgICAgdXNpbmcg dGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBzdWJjbGF1c2UuIEpvaW5pbmcg dGhlCisgICAgICBjb2x1bW5zIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9s aXRlcmFsPiBjYW4gYWRkIG11bHRpcGxlCisgICAgICBuZXcgcm93cyB0byB0aGUgY29uc3Ry dWN0ZWQgdmlldy4gU3VjaCByb3dzIGFyZSBjYWxsZWQKKyAgICAgIDxmaXJzdHRlcm0+Y2hp bGQgcm93czwvZmlyc3R0ZXJtPiwgYXMgb3Bwb3NlZCB0byB0aGUgPGZpcnN0dGVybT5wYXJl bnQgcm93PC9maXJzdHRlcm0+CisgICAgICB0aGF0IGdlbmVyYXRlcyB0aGVtLgorICAgICA8 L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgcm93cyBwcm9kdWNlZCBieSA8ZnVu Y3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGFyZSBsYXRlcmFsbHkKKyAgICAgIGpvaW5l ZCB0byB0aGUgcm93IHRoYXQgZ2VuZXJhdGVkIHRoZW0sIHNvIHlvdSBkbyBub3QgaGF2ZSB0 byBleHBsaWNpdGx5IGpvaW4KKyAgICAgIHRoZSBjb25zdHJ1Y3RlZCB2aWV3IHdpdGggdGhl IG9yaWdpbmFsIHRhYmxlIGhvbGRpbmcgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4KKyAgICAg IGRhdGEuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEVhY2ggPGxpdGVy YWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IGNsYXVzZSBjYW4gZ2VuZXJhdGUgb25lIG9yIG1v cmUKKyAgICAgIGNvbHVtbnMsIHdoaWNoIGFyZSBjb25zaWRlcmVkIHRvIGJlIDxmaXJzdHRl cm0+c2libGluZ3M8L2ZpcnN0dGVybT4KKyAgICAgIHRvIGVhY2ggb3RoZXIuIEluIHJlbGF0 aW9uIHRvIHRoZSBjb2x1bW5zIHJldHVybmVkIGRpcmVjdGx5IGZyb20gdGhlIHJvdworICAg ICAgZXhwcmVzc2lvbiBvciBieSB0aGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+ IGNsYXVzZSBvZiBhCisgICAgICBoaWdoZXIgbGV2ZWwsIHRoZXNlIGNvbHVtbnMgYXJlIDxm aXJzdHRlcm0+Y2hpbGQ8L2ZpcnN0dGVybT4gY29sdW1ucy4KKyAgICAgIFNpYmxpbmcgY29s dW1ucyBhcmUgYWx3YXlzIGpvaW5lZCBmaXJzdC4gT25jZSB0aGV5IGFyZSBwcm9jZXNzZWQs CisgICAgICB0aGUgcmVzdWx0aW5nIHJvd3MgYXJlIGpvaW5lZCB0byB0aGUgcGFyZW50IHJv dy4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgQ29sdW1ucyB3aXRoIHBh cmVudC9jaGlsZCByZWxhdGlvbnNoaXAgYXJlIGpvaW5lZCB1c2luZworICAgICAgPGxpdGVy YWw+TEVGVCBPVVRFUiBKT0lOPC9saXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50IHJvdwor ICAgICAgaXMgYWx3YXlzIGluY2x1ZGVkIGludG8gdGhlIG91dHB1dCBldmVuIGlmIGl0IGRv ZXMgbm90IGhhdmUgYW55IGNoaWxkIHJvd3MKKyAgICAgIGFmdGVyIGpvaW5pbmcgdGhlIGRh dGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+LAorICAgICAg d2l0aCBOVUxMIHZhbHVlcyBpbnNlcnRlZCBpbnRvIHRoZSBjaGlsZCBjb2x1bW5zIGlmIHRo ZSBjb3JyZXNwb25kaW5nCisgICAgICB2YWx1ZXMgYXJlIG1pc3NpbmcuCisgICAgIDwvcGFy YT4KKworICAgICA8cGFyYT4KKyAgICAgIFNpYmxpbmcgY29sdW1ucyBhcmUgam9pbmVkIHVz aW5nCisgICAgICA8bGl0ZXJhbD5GVUxMIE9VVEVSIEpPSU4gT04gRkFMU0U8L2xpdGVyYWw+ LCBzbyB0aGF0IGJvdGggcGFyZW50IGFuZCBjaGlsZAorICAgICAgcm93cyBhcmUgaW5jbHVk ZWQgaW50byB0aGUgb3V0cHV0LCB3aXRoIE5VTEwgdmFsdWVzIGluc2VydGVkCisgICAgICBp bnRvIGJvdGggY2hpbGQgYW5kIHBhcnJlbnQgY29sdW1ucyBmb3IgYWxsIG1pc3NpbmcgdmFs dWVzLgorICAgICA8L3BhcmE+CisKKyAgICA8L3NlY3Q1PgorICAgIDxzZWN0NT4KKyAgICAg PHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD48cmVwbGFjZWFibGU+Y29u dGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEFTIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFt ZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+IDxvcHRpb25hbD4gUEFTU0lORyB7IDxyZXBs YWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT52YXJuYW1lPC9y ZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+PC9s aXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAg ICAgVGhlIGlucHV0IGRhdGEgdG8gcXVlcnksIHRoZSBKU09OIHBhdGggZXhwcmVzc2lvbiBk ZWZpbmluZyB0aGUgcXVlcnksCisgICAgIGFuZCBhbiBvcHRpb25hbCA8bGl0ZXJhbD5QQVNT SU5HPC9saXRlcmFsPiBjbGF1c2UsIGFzIGRlc2NyaWJlZCBpbgorICAgICA8eHJlZiBsaW5r ZW5kPSJzcWxqc29uLWlucHV0LWNsYXVzZSIvPi4gVGhlIHJlc3VsdCBvZiB0aGUgaW5wdXQg ZGF0YQorICAgICBldmFsdWF0aW9uIGlzIGNhbGxlZCB0aGUgPGZpcnN0dGVybT5yb3cgcGF0 dGVybjwvZmlyc3R0ZXJtPi4gVGhlIHJvdworICAgICBwYXR0ZXJuIGlzIHVzZWQgYXMgdGhl IHNvdXJjZSBmb3Igcm93IHZhbHVlcyBpbiB0aGUgY29uc3RydWN0ZWQgdmlldy4KKyAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5DT0xVTU5TKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxl PiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApPC9saXRlcmFsPgorICAgIDwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIDxsaXRlcmFsPkNPTFVN TlM8L2xpdGVyYWw+IGNsYXVzZSBkZWZpbmluZyB0aGUgc2NoZW1hIG9mIHRoZQorICAgICBj b25zdHJ1Y3RlZCB2aWV3LiBJbiB0aGlzIGNsYXVzZSwgeW91IG11c3Qgc3BlY2lmeSBhbGwg dGhlIGNvbHVtbnMKKyAgICAgdG8gYmUgZmlsbGVkIHdpdGggU1FML0pTT04gaXRlbXMuCisg ICAgIFRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJsZV9jb2x1 bW48L3JlcGxhY2VhYmxlPgorICAgICBleHByZXNzaW9uIGhhcyB0aGUgZm9sbG93aW5nIHN5 bnRheCB2YXJpYW50czoKKyAgICA8L3BhcmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5u YW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgorICAg ICAgICAgIDxvcHRpb25hbD4gUEFUSCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmlj YXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEluc2VydHMgYSBzaW5nbGUg U1FML0pTT04gaXRlbSBpbnRvIGVhY2ggcm93IG9mCisgICAgIHRoZSBzcGVjaWZpZWQgY29s dW1uLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIHByb3ZpZGVkIDxsaXRl cmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Npb24gcGFyc2VzIHRoZQorICAgICByb3cgcGF0 dGVybiBkZWZpbmVkIGJ5IDxyZXBsYWNlYWJsZT5qc29uX2FwaV9jb21tb25fc3ludGF4PC9y ZXBsYWNlYWJsZT4KKyAgICAgYW5kIGZpbGxzIHRoZSBjb2x1bW4gd2l0aCBwcm9kdWNlZCBT UUwvSlNPTiBpdGVtcywgb25lIGZvciBlYWNoIHJvdy4KKyAgICAgSWYgdGhlIDxsaXRlcmFs PlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Npb24gaXMgb21pdHRlZCwKKyAgICAgPGZ1bmN0aW9u PkpTT05fVEFCTEU8L2Z1bmN0aW9uPiB1c2VzIHRoZQorICAgICA8bGl0ZXJhbD4kLjxyZXBs YWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+IHBhdGggZXhwcmVzc2lvbiwK KyAgICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcHJv dmlkZWQgY29sdW1uIG5hbWUuCisgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvbHVtbiBuYW1l IG11c3QgY29ycmVzcG9uZCB0byBvbmUgb2YgdGhlCisgICAgIGtleXMgd2l0aGluIHRoZSBT UUwvSlNPTiBpdGVtIHByb2R1Y2VkIGJ5IHRoZSByb3cgcGF0dGVybi4KKyAgICA8L3BhcmE+ CisgICAgPHBhcmE+CisgICAgICBJbnRlcm5hbGx5LCA8eHJlZiBsaW5rZW5kPSJmdW5jdGlv bnMtanNvbnZhbHVlIi8+IGFuZAorICAgICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWpz b25xdWVyeSIvPiBhcmUgdXNlZCB0byBwcm9kdWNlIHJlc3VsdGluZyB2YWx1ZXMuCisgICAg ICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbnF1ZXJ5Ii8+IGlzIHVzZWQgZm9yIEpT T04sIGFycmF5LCBhbmQKKyAgICAgIGNvbXBvc2l0ZSBjb2x1bW4gdHlwZXMsIDx4cmVmIGxp bmtlbmQ9ImZ1bmN0aW9ucy1qc29udmFsdWUiLz4gaXMgdXNlZCBmb3IKKyAgICAgIG90aGVy IHR5cGVzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgT3B0aW9uYWxseSwgeW91 IGNhbiBhZGQgPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IGFuZAorICAgICA8bGl0ZXJh bD5PTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlcyB0byBkZWZpbmUgaG93IHRvIGhhbmRsZSBt aXNzaW5nIHZhbHVlcworICAgICBvciBzdHJ1Y3R1cmFsIGVycm9ycy4KKyAgICAgPGxpdGVy YWw+V1JBUFBFUjwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPlFVT1RFUzwvbGl0ZXJhbD4gY2xh dXNlcyBjYW4gb25seQorICAgICBiZSB1c2VkIHdpdGggSlNPTiwgYXJyYXksIGFuZCBjb21w b3NpdGUgdHlwZXMuCisgICAgIFRoZXNlIGNsYXVzZXMgaGF2ZSB0aGUgc2FtZSBzeW50YXgg YW5kIHNlbWFudGljcyBhcyBpbgorICAgICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtanNv bnZhbHVlIi8+IGFuZAorICAgICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbnF1ZXJ5 Ii8+LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBs YWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2Vh YmxlPiBGT1JNQVQgPHJlcGxhY2VhYmxlPmpzb25fcmVwcmVzZW50YXRpb248L3JlcGxhY2Vh YmxlPgorICAgICAgICAgIDxvcHRpb25hbD4gUEFUSCA8cmVwbGFjZWFibGU+anNvbl9wYXRo X3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAg ICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEdlcmVuYXRl cyBhIGNvbHVtbiBhbmQgaW5zZXJ0cyBhIGNvbXBvc2l0ZSBTUUwvSlNPTgorICAgICBpdGVt IGludG8gZWFjaCByb3cgb2YgdGhpcyBjb2x1bW4uCisgICAgPC9wYXJhPgorICAgIDxwYXJh PgorICAgICBUaGUgcHJvdmlkZWQgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lv biBwYXJzZXMgdGhlCisgICAgIHJvdyBwYXR0ZXJuIGRlZmluZWQgYnkgPHJlcGxhY2VhYmxl Pmpzb25fYXBpX2NvbW1vbl9zeW50YXg8L3JlcGxhY2VhYmxlPgorICAgICBhbmQgZmlsbHMg dGhlIGNvbHVtbiB3aXRoIHByb2R1Y2VkIFNRTC9KU09OIGl0ZW1zLCBvbmUgZm9yIGVhY2gg cm93LgorICAgICBJZiB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBp cyBvbWl0dGVkLAorICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IHVzZXMg dGhlCisgICAgIDxsaXRlcmFsPiQuPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwv bGl0ZXJhbD4gcGF0aCBleHByZXNzaW9uLAorICAgICB3aGVyZSA8cmVwbGFjZWFibGU+bmFt ZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFtZS4KKyAgICAgSW4g dGhpcyBjYXNlLCB0aGUgY29sdW1uIG5hbWUgbXVzdCBjb3JyZXNwb25kIHRvIG9uZSBvZiB0 aGUKKyAgICAga2V5cyB3aXRoaW4gdGhlIFNRTC9KU09OIGl0ZW0gcHJvZHVjZWQgYnkgdGhl IHJvdyBwYXR0ZXJuLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEludGVybmFs bHksIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29ucXVlcnkiLz4gaXMgdXNlZCB0byBw cm9kdWNlCisgICAgICByZXN1bHRpbmcgdmFsdWVzLgorICAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBhZGQgPGxpdGVyYWw+V1JBUFBFUjwvbGl0 ZXJhbD4sIDxsaXRlcmFsPlFVT1RFUzwvbGl0ZXJhbD4sCisgICAgIDxsaXRlcmFsPk9OIEVN UFRZPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IGNsYXVzZXMK KyAgICAgdG8gZGVmaW5lIGFkZGl0aW9uYWwgc2V0dGluZ3MgZm9yIHRoZSByZXR1cm5lZCBT UUwvSlNPTiBpdGVtcy4KKyAgICAgVGhlc2UgY2xhdXNlcyBoYXZlIHRoZSBzYW1lIHN5bnRh eCBhbmQgc2VtYW50aWNzIGFzCisgICAgIGluIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1q c29ucXVlcnkiLz4uCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVy YWw+CisgICAgICAgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFi bGU+dHlwZTwvcmVwbGFjZWFibGU+CisgICAgICAgRVhJU1RTIDxvcHRpb25hbD4gUEFUSCA8 cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29w dGlvbmFsPgorICAgICA8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KworICAgIDxwYXJhPgorICAgICBHZXJlbmF0ZXMgYSBjb2x1bW4gYW5kIGluc2VydHMgYSBi b29sZWFuIGl0ZW0gaW50byBlYWNoIHJvdyBvZiB0aGlzIGNvbHVtbi4KKyAgICA8L3BhcmE+ CisgICAgPHBhcmE+CisgICAgIFRoZSBwcm92aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFs PiBleHByZXNzaW9uIHBhcnNlcyB0aGUKKyAgICAgcm93IHBhdHRlcm4gZGVmaW5lZCBieSA8 cmVwbGFjZWFibGU+anNvbl9hcGlfY29tbW9uX3N5bnRheDwvcmVwbGFjZWFibGU+LAorICAg ICBjaGVja3Mgd2hldGhlciBhbnkgU1FML0pTT04gaXRlbXMgd2VyZSByZXR1cm5lZCwgYW5k IGZpbGxzIHRoZSBjb2x1bW4gd2l0aAorICAgICByZXN1bHRpbmcgYm9vbGVhbiB2YWx1ZSwg b25lIGZvciBlYWNoIHJvdy4KKyAgICAgVGhlIHNwZWNpZmllZCA8cmVwbGFjZWFibGU+dHlw ZTwvcmVwbGFjZWFibGU+IHNob3VsZCBoYXZlIGNhc3QgZnJvbQorICAgICA8dHlwZT5ib29s ZWFuPC90eXBlPi4KKyAgICAgSWYgdGhlIDxsaXRlcmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJl c3Npb24gaXMgb21pdHRlZCwKKyAgICAgPGZ1bmN0aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9u PiB1c2VzIHRoZQorICAgICA8bGl0ZXJhbD4kLjxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNl YWJsZT48L2xpdGVyYWw+IHBhdGggZXhwcmVzc2lvbiwKKyAgICAgd2hlcmUgPHJlcGxhY2Vh YmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcHJvdmlkZWQgY29sdW1uIG5hbWUuCisg ICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCA8 bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIHRvIGRlZmluZQorICAgICBlcnJv ciBiZWhhdmlvci4gIFRoaXMgY2xhdXNlIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFuZCBzZW1h bnRpY3MgYXMgaW4KKyAgICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWpzb25leGlzdHMi Lz4uCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+TkVTVEVE IFBBVEggPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJs ZT4gPG9wdGlvbmFsPiBBUyA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2Vh YmxlPiA8L29wdGlvbmFsPgorICAgICAgICAgIENPTFVNTlMgKCA8cmVwbGFjZWFibGU+anNv bl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFs PiApPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFy YT4KKyAgICAgRXh0cmFjdHMgU1FML0pTT04gaXRlbXMgZnJvbSBuZXN0ZWQgbGV2ZWxzIG9m IHRoZSByb3cgcGF0dGVybiwKKyAgICAgZ2VyZW5hdGVzIG9uZSBvciBtb3JlIGNvbHVtbnMg YXMgZGVmaW5lZCBieSB0aGUgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4KKyAgICAgc3Vi Y2xhdXNlLCBhbmQgaW5zZXJ0cyB0aGUgZXh0cmFjdGVkIFNRTC9KU09OIGl0ZW1zIGludG8g ZWFjaCByb3cgb2YgdGhlc2UgY29sdW1ucy4KKyAgICAgVGhlIDxyZXBsYWNlYWJsZT5qc29u X3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IGV4cHJlc3Npb24gaW4gdGhlCisgICAgIDxs aXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IHN1YmNsYXVzZSB1c2VzIHRoZSBzYW1lIHN5bnRh eCBhcyBpbiB0aGUKKyAgICAgcGFyZW50IDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IGNs YXVzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIDxsaXRlcmFsPk5F U1RFRCBQQVRIPC9saXRlcmFsPiBzeW50YXggaXMgcmVjdXJzaXZlLAorICAgICBzbyB5b3Ug Y2FuIGdvIGRvd24gbXVsdGlwbGUgbmVzdGVkIGxldmVscyBieSBzcGVjaWZ5aW5nIHNldmVy YWwKKyAgICAgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHN1YmNsYXVzZXMgd2l0 aGluIGVhY2ggb3RoZXIuCisgICAgIEl0IGFsbG93cyB0byB1bm5lc3QgdGhlIGhpZXJhcmNo eSBvZiBKU09OIG9iamVjdHMgYW5kIGFycmF5cworICAgICBpbiBhIHNpbmdsZSBmdW5jdGlv biBpbnZvY2F0aW9uIHJhdGhlciB0aGFuIGNoYWluaW5nIHNldmVyYWwKKyAgICAgPGZ1bmN0 aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9uPiBleHByZXNzaW9ucyBpbiBhbiBTUUwgc3RhdGVt ZW50LgorICAgIDwvcGFyYT4KKworICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+PHJl cGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBGT1IgT1JESU5BTElUWTwvbGl0ZXJhbD4K KyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEFkZHMg YW4gb3JkaW5hbGl0eSBjb2x1bW4gdGhhdCBwcm92aWRlcyBzZXF1ZW50aWFsIHJvdyBudW1i ZXJpbmcuCisgICAgIFlvdSBjYW4gaGF2ZSBvbmx5IG9uZSBvcmRpbmFsaXR5IGNvbHVtbiBw ZXIgdGFibGUuIFJvdyBudW1iZXJpbmcKKyAgICAgaXMgMS1iYXNlZC4gRm9yIGNoaWxkIHJv d3MgdGhhdCByZXN1bHQgZnJvbSB0aGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+ CisgICAgIGNsYXVzZXMsIHRoZSBwYXJlbnQgcm93IG51bWJlciBpcyByZXBlYXRlZC4KKyAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zh cmlhYmxlbGlzdD4KKworICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICA8L3ZhcmlhYmxlbGlzdD4KKworICAgIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+CisgICAg IDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICBRdWVyeSB0 aGUgPHN0cnVjdG5hbWU+bXlfZmlsbXM8L3N0cnVjdG5hbWU+IHRhYmxlIGhvbGRpbmcKKyAg ICAgIHNvbWUgSlNPTiBkYXRhIGFib3V0IHRoZSBmaWxtcyBhbmQgY3JlYXRlIGEgdmlldyB0 aGF0CisgICAgICBkaXN0cmlidXRlcyB0aGUgZmlsbSBnZW5yZSwgdGl0bGUsIGFuZCBkaXJl Y3RvciBiZXR3ZWVuIHNlcGFyYXRlIGNvbHVtbnM6Cis8c2NyZWVuPgorU0VMRUNUIGp0Liog RlJPTSAKKyBteV9maWxtcywKKyBKU09OX1RBQkxFICgganMsICckLmZhdm9yaXRlc1sqXScg Q09MVU1OUyAoCisgICBpZCBGT1IgT1JESU5BTElUWSwKKyAgIGtpbmQgdGV4dCBQQVRIICck LmtpbmQnLAorICAgTkVTVEVEIFBBVEggJyQuZmlsbXNbKl0nIENPTFVNTlMgKAorICAgICB0 aXRsZSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICBkaXJlY3RvciB0ZXh0IFBBVEggJyQu ZGlyZWN0b3InKSkpIEFTIGp0OworLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tCisgaWQgfCAgIGtpbmQgICB8ICAgICAgIHRpdGxlICAg ICAgfCAgICBkaXJlY3RvcgorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tCisgMSAgfCBjb21lZHkgICB8IEJhbmFuYXMgICAgICAgICAg fCBXb29keSBBbGxlbgorIDEgIHwgY29tZWR5ICAgfCBUaGUgRGlubmVyIEdhbWUgIHwgRnJh bmNpcyBWZWJlcgorIDIgIHwgaG9ycm9yICAgfCBQc3ljaG8gICAgICAgICAgIHwgQWxmcmVk IEhpdGNoY29jaworIDMgIHwgdGhyaWxsZXIgfCBWZXJ0aWdvICAgICAgICAgIHwgSGl0Y2hj b2NrCisgNCAgfCBkcmFtYSAgICB8IFlvamltYm8gICAgICAgICAgfCBBa2lyYSBLdXJvc2F3 YQorICg1IHJvd3MpCis8L3NjcmVlbj4KKyAgICAgPC9wYXJhPgorCisgICA8L3NlY3Q1Pgor ICA8L3NlY3Q0PgogCiAgIDwvc2VjdDM+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRl eCBiOTcwOTk3YzM0Li5lYWNiYzQ0YTA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBA IC0zNzg3LDcgKzM3ODcsOSBAQCBFeHBsYWluVGFyZ2V0UmVsKFBsYW4gKnBsYW4sIEluZGV4 IHJ0aSwgRXhwbGFpblN0YXRlICplcykKIAkJCWJyZWFrOwogCQljYXNlIFRfVGFibGVGdW5j U2NhbjoKIAkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1RBQkxFRlVOQyk7Ci0JCQlv YmplY3RuYW1lID0gInhtbHRhYmxlIjsKKwkJCW9iamVjdG5hbWUgPSBydGUtPnRhYmxlZnVu YyA/CisJCQkJcnRlLT50YWJsZWZ1bmMtPmZ1bmN0eXBlID09IFRGVF9YTUxUQUJMRSA/CisJ CQkJInhtbHRhYmxlIiA6ICJqc29uX3RhYmxlIiA6IE5VTEw7CiAJCQlvYmplY3R0YWcgPSAi VGFibGUgRnVuY3Rpb24gTmFtZSI7CiAJCQlicmVhazsKIAkJY2FzZSBUX1ZhbHVlc1NjYW46 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCAyNTI1M2Y1Mzc3Li5jOTI5Y2MyZDkw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTI2MzUsNiArMjYzNSw3IEBAIEV4 ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQl2YXIt PnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5vZGUgKikgYXJnZXhwcik7CiAJCQkJCXZhci0+ZXN0 YXRlID0gRXhlY0luaXRFeHByKGFyZ2V4cHIsIHN0YXRlLT5wYXJlbnQpOwogCQkJCQl2YXIt PmVjb250ZXh0ID0gTlVMTDsKKwkJCQkJdmFyLT5tY3h0ID0gTlVMTDsKIAkJCQkJdmFyLT5l dmFsdWF0ZWQgPSBmYWxzZTsKIAkJCQkJdmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKIAkJCQkJ dmFyLT5pc251bGwgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMKaW5kZXggMDQ4MzI3OWY5MS4uMzhlMDg1NGZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwckludGVycC5jCkBAIC00NjA4LDYgKzQ2MDgsNyBAQCBFeGVjRXZhbEpzb25C ZWhhdmlvcihFeHByQ29udGV4dCAqZWNvbnRleHQsIEpzb25CZWhhdmlvciAqYmVoYXZpb3Is CiAKIAkJY2FzZSBKU09OX0JFSEFWSU9SX05VTEw6CiAJCWNhc2UgSlNPTl9CRUhBVklPUl9V TktOT1dOOgorCQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFk6CiAJCQkqaXNfbnVsbCA9IHRy dWU7CiAJCQlyZXR1cm4gKERhdHVtKSAwOwogCkBAIC00NzAwLDggKzQ3MDEsMTQgQEAgRXZh bEpzb25QYXRoVmFyKHZvaWQgKmN4dCwgY2hhciAqdmFyTmFtZSwgaW50IHZhck5hbWVMZW4s CiAKIAlpZiAoIXZhci0+ZXZhbHVhdGVkKQogCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjeHQg PSB2YXItPm1jeHQgPworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHZhci0+bWN4dCkgOiBO VUxMOworCiAJCXZhci0+dmFsdWUgPSBFeGVjRXZhbEV4cHIodmFyLT5lc3RhdGUsIHZhci0+ ZWNvbnRleHQsICZ2YXItPmlzbnVsbCk7CiAJCXZhci0+ZXZhbHVhdGVkID0gdHJ1ZTsKKwor CQlpZiAob2xkY3h0KQorCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAJfQog CiAJaWYgKHZhci0+aXNudWxsKQpAQCAtNDgzNyw2ICs0ODQ0LDcgQEAgRXhlY0V2YWxKc29u RXhwclN1YnRyYW5zKEpzb25GdW5jIGZ1bmMsIEV4cHJFdmFsU3RlcCAqb3AsCiAJLyogV2Fu dCB0byBleGVjdXRlIGV4cHJlc3Npb25zIGluc2lkZSBmdW5jdGlvbidzIG1lbW9yeSBjb250 ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCisKIAlQR19U UlkoKTsKIAl7CiAJCXJlcyA9IGZ1bmMob3AsIGVjb250ZXh0LCByZXMsIHJlc251bGwsIHAs IGVycm9yKTsKQEAgLTQ4NDksNiArNDg1Nyw3IEBAIEV4ZWNFdmFsSnNvbkV4cHJTdWJ0cmFu cyhKc29uRnVuYyBmdW5jLCBFeHByRXZhbFN0ZXAgKm9wLAogCVBHX0NBVENIKCk7CiAJewog CQlFcnJvckRhdGEgICplZGF0YTsKKwkJaW50CQkJZWNhdGVnb3J5OwogCiAJCS8qIFNhdmUg ZXJyb3IgaW5mbyBpbiBvbGRjb250ZXh0ICovCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKQEAgLTQ4NjAsOCArNDg2OSwxMCBAQCBFeGVjRXZhbEpzb25FeHByU3Vi dHJhbnMoSnNvbkZ1bmMgZnVuYywgRXhwckV2YWxTdGVwICpvcCwKIAkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IG9sZG93 bmVyOwogCi0JCWlmIChFUlJDT0RFX1RPX0NBVEVHT1JZKGVkYXRhLT5zcWxlcnJjb2RlKSAh PQotCQkJRVJSQ09ERV9EQVRBX0VYQ0VQVElPTikKKwkJZWNhdGVnb3J5ID0gRVJSQ09ERV9U T19DQVRFR09SWShlZGF0YS0+c3FsZXJyY29kZSk7CisKKwkJaWYgKGVjYXRlZ29yeSAhPSBF UlJDT0RFX0RBVEFfRVhDRVBUSU9OICYmCS8qIGpzb25wYXRoIGFuZCBvdGhlciBkYXRhIGVy cm9ycyAqLworCQkJZWNhdGVnb3J5ICE9IEVSUkNPREVfSU5URUdSSVRZX0NPTlNUUkFJTlRf VklPTEFUSU9OKQkvKiBkb21haW4gZXJyb3JzICovCiAJCQlSZVRocm93RXJyb3IoZWRhdGEp OwogCiAJCXJlcyA9IChEYXR1bSkgMDsKQEAgLTQ5ODcsNiArNDk5OCwxMCBAQCBFeGVjRXZh bEpzb25FeHByKEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJ CQlicmVhazsKIAkJCX0KIAorCQljYXNlIElTX0pTT05fVEFCTEU6CisJCQkqcmVzbnVsbCA9 IGZhbHNlOworCQkJcmV0dXJuIGl0ZW07CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBvcCAlZCIsIGpleHByLT5vcCk7 CiAJCQlyZXR1cm4gKERhdHVtKSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJs ZUZ1bmNzY2FuLmMKaW5kZXggMGRiNGVkMGMyZi4uNjkxYzNlMjhjZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCkBAIC0yOCw2ICsyOCw3IEBACiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCkBAIC0xNjEsOCArMTYyLDkgQEAgRXhl Y0luaXRUYWJsZUZ1bmNTY2FuKFRhYmxlRnVuY1NjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCXNjYW5zdGF0ZS0+c3MucHMucXVhbCA9CiAJCUV4ZWNJbml0UXVh bChub2RlLT5zY2FuLnBsYW4ucXVhbCwgJnNjYW5zdGF0ZS0+c3MucHMpOwogCi0JLyogT25s eSBYTUxUQUJMRSBpcyBzdXBwb3J0ZWQgY3VycmVudGx5ICovCi0Jc2NhbnN0YXRlLT5yb3V0 aW5lID0gJlhtbFRhYmxlUm91dGluZTsKKwkvKiBPbmx5IFhNTFRBQkxFIGFuZCBKU09OX1RB QkxFIGFyZSBzdXBwb3J0ZWQgY3VycmVudGx5ICovCisJc2NhbnN0YXRlLT5yb3V0aW5lID0K KwkJdGYtPmZ1bmN0eXBlID09IFRGVF9YTUxUQUJMRSA/ICZYbWxUYWJsZVJvdXRpbmUgOiAm SnNvbmJUYWJsZVJvdXRpbmU7CiAKIAlzY2Fuc3RhdGUtPnBlclRhYmxlQ3h0ID0KIAkJQWxs b2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LApAQCAtMzgxLDE0ICsz ODMsMTcgQEAgdGZ1bmNJbml0aWFsaXplKFRhYmxlRnVuY1NjYW5TdGF0ZSAqdHN0YXRlLCBF eHByQ29udGV4dCAqZWNvbnRleHQsIERhdHVtIGRvYykKIAkJcm91dGluZS0+U2V0TmFtZXNw YWNlKHRzdGF0ZSwgbnNfbmFtZSwgbnNfdXJpKTsKIAl9CiAKLQkvKiBJbnN0YWxsIHRoZSBy b3cgZmlsdGVyIGV4cHJlc3Npb24gaW50byB0aGUgdGFibGUgYnVpbGRlciBjb250ZXh0ICov Ci0JdmFsdWUgPSBFeGVjRXZhbEV4cHIodHN0YXRlLT5yb3dleHByLCBlY29udGV4dCwgJmlz bnVsbCk7Ci0JaWYgKGlzbnVsbCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShF UlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAotCQkJCSBlcnJtc2coInJvdyBmaWx0 ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBudWxsIikpKTsKKwlpZiAocm91dGluZS0+U2V0 Um93RmlsdGVyKQorCXsKKwkJLyogSW5zdGFsbCB0aGUgcm93IGZpbHRlciBleHByZXNzaW9u IGludG8gdGhlIHRhYmxlIGJ1aWxkZXIgY29udGV4dCAqLworCQl2YWx1ZSA9IEV4ZWNFdmFs RXhwcih0c3RhdGUtPnJvd2V4cHIsIGVjb250ZXh0LCAmaXNudWxsKTsKKwkJaWYgKGlzbnVs bCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxV RV9OT1RfQUxMT1dFRCksCisJCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBt dXN0IG5vdCBiZSBudWxsIikpKTsKIAotCXJvdXRpbmUtPlNldFJvd0ZpbHRlcih0c3RhdGUs IFRleHREYXR1bUdldENTdHJpbmcodmFsdWUpKTsKKwkJcm91dGluZS0+U2V0Um93RmlsdGVy KHRzdGF0ZSwgVGV4dERhdHVtR2V0Q1N0cmluZyh2YWx1ZSkpOworCX0KIAogCS8qCiAJICog SW5zdGFsbCB0aGUgY29sdW1uIGZpbHRlciBleHByZXNzaW9ucyBpbnRvIHRoZSB0YWJsZSBi dWlsZGVyIGNvbnRleHQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDhjZGNmNWQxM2Iu LmQ2ZjA1YmQ1OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0xMzkzLDYgKzEzOTMs NyBAQCBfY29weVRhYmxlRnVuYyhjb25zdCBUYWJsZUZ1bmMgKmZyb20pCiB7CiAJVGFibGVG dW5jICAqbmV3bm9kZSA9IG1ha2VOb2RlKFRhYmxlRnVuYyk7CiAKKwlDT1BZX1NDQUxBUl9G SUVMRChmdW5jdHlwZSk7CiAJQ09QWV9OT0RFX0ZJRUxEKG5zX3VyaXMpOwogCUNPUFlfTk9E RV9GSUVMRChuc19uYW1lcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKGRvY2V4cHIpOwpAQCAtMTQw Myw3ICsxNDA0LDkgQEAgX2NvcHlUYWJsZUZ1bmMoY29uc3QgVGFibGVGdW5jICpmcm9tKQog CUNPUFlfTk9ERV9GSUVMRChjb2xjb2xsYXRpb25zKTsKIAlDT1BZX05PREVfRklFTEQoY29s ZXhwcnMpOwogCUNPUFlfTk9ERV9GSUVMRChjb2xkZWZleHBycyk7CisJQ09QWV9OT0RFX0ZJ RUxEKGNvbHZhbGV4cHJzKTsKIAlDT1BZX0JJVE1BUFNFVF9GSUVMRChub3RudWxscyk7CisJ Q09QWV9OT0RFX0ZJRUxEKHBsYW4pOwogCUNPUFlfU0NBTEFSX0ZJRUxEKG9yZGluYWxpdHlj b2wpOwogCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwogCkBAIC0yNjY1LDYgKzI2 NjgsNzYgQEAgX2NvcHlKc29uQXJndW1lbnQoY29uc3QgSnNvbkFyZ3VtZW50ICpmcm9tKQog CXJldHVybiBuZXdub2RlOwogfQogCisvKgorICogX2NvcHlKc29uVGFibGUKKyAqLworc3Rh dGljIEpzb25UYWJsZSAqCitfY29weUpzb25UYWJsZShjb25zdCBKc29uVGFibGUgKmZyb20p Cit7CisJSnNvblRhYmxlICpuZXdub2RlID0gbWFrZU5vZGUoSnNvblRhYmxlKTsKKworCUNP UFlfTk9ERV9GSUVMRChjb21tb24pOworCUNPUFlfTk9ERV9GSUVMRChjb2x1bW5zKTsKKwlD T1BZX05PREVfRklFTEQob25fZXJyb3IpOworCUNPUFlfTk9ERV9GSUVMRChhbGlhcyk7CisJ Q09QWV9TQ0FMQVJfRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisK Ky8qCisgKiBfY29weUpzb25UYWJsZUNvbHVtbgorICovCitzdGF0aWMgSnNvblRhYmxlQ29s dW1uICoKK19jb3B5SnNvblRhYmxlQ29sdW1uKGNvbnN0IEpzb25UYWJsZUNvbHVtbiAqZnJv bSkKK3sKKwlKc29uVGFibGVDb2x1bW4gKm5ld25vZGUgPSBtYWtlTm9kZShKc29uVGFibGVD b2x1bW4pOworCisJQ09QWV9TQ0FMQVJfRklFTEQoY29sdHlwZSk7CisJQ09QWV9TVFJJTkdf RklFTEQobmFtZSk7CisJQ09QWV9OT0RFX0ZJRUxEKHR5cGVOYW1lKTsKKwlDT1BZX1NUUklO R19GSUVMRChwYXRoc3BlYyk7CisJQ09QWV9TQ0FMQVJfRklFTEQoZm9ybWF0KTsKKwlDT1BZ X1NDQUxBUl9GSUVMRCh3cmFwcGVyKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChvbWl0X3F1b3Rl cyk7CisJQ09QWV9OT0RFX0ZJRUxEKGNvbHVtbnMpOworCUNPUFlfTk9ERV9GSUVMRChvbl9l bXB0eSk7CisJQ09QWV9OT0RFX0ZJRUxEKG9uX2Vycm9yKTsKKwlDT1BZX1NDQUxBUl9GSUVM RChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNv blRhYmxlUGFyZW50Tm9kZQorICovCitzdGF0aWMgSnNvblRhYmxlUGFyZW50Tm9kZSAqCitf Y29weUpzb25UYWJsZVBhcmVudE5vZGUoY29uc3QgSnNvblRhYmxlUGFyZW50Tm9kZSAqZnJv bSkKK3sKKwlKc29uVGFibGVQYXJlbnROb2RlICpuZXdub2RlID0gbWFrZU5vZGUoSnNvblRh YmxlUGFyZW50Tm9kZSk7CisKKwlDT1BZX05PREVfRklFTEQocGF0aCk7CisJQ09QWV9OT0RF X0ZJRUxEKGNoaWxkKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChjb2xNaW4pOworCUNPUFlfU0NB TEFSX0ZJRUxEKGNvbE1heCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAqIF9j b3B5SnNvblRhYmxlU2libGluZ05vZGUKKyAqLworc3RhdGljIEpzb25UYWJsZVNpYmxpbmdO b2RlICoKK19jb3B5SnNvblRhYmxlU2libGluZ05vZGUoY29uc3QgSnNvblRhYmxlU2libGlu Z05vZGUgKmZyb20pCit7CisJSnNvblRhYmxlU2libGluZ05vZGUgKm5ld25vZGUgPSBtYWtl Tm9kZShKc29uVGFibGVTaWJsaW5nTm9kZSk7CisKKwlDT1BZX05PREVfRklFTEQobGFyZyk7 CisJQ09QWV9OT0RFX0ZJRUxEKHJhcmcpOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIC8q ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKICAqCQkJCQkJcGF0aG5vZGVzLmggY29weSBmdW5jdGlvbnMKICAqCkBA IC01NzcwLDYgKzU4NDMsMTggQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkK IAkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb25zOgogCQkJcmV0dmFsID0gX2NvcHlKc29uSXRl bUNvZXJjaW9ucyhmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfSnNvblRhYmxlOgorCQkJ cmV0dmFsID0gX2NvcHlKc29uVGFibGUoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pz b25UYWJsZUNvbHVtbjoKKwkJCXJldHZhbCA9IF9jb3B5SnNvblRhYmxlQ29sdW1uKGZyb20p OworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVGFibGVQYXJlbnROb2RlOgorCQkJcmV0dmFs ID0gX2NvcHlKc29uVGFibGVQYXJlbnROb2RlKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2Ug VF9Kc29uVGFibGVTaWJsaW5nTm9kZToKKwkJCXJldHZhbCA9IF9jb3B5SnNvblRhYmxlU2li bGluZ05vZGUoZnJvbSk7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFJFTEFUSU9OIE5P REVTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggM2Q3N2NhY2VjYi4uNDgxMGVhNzRm MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMTI3LDYgKzEyNyw3IEBAIF9lcXVh bFJhbmdlVmFyKGNvbnN0IFJhbmdlVmFyICphLCBjb25zdCBSYW5nZVZhciAqYikKIHN0YXRp YyBib29sCiBfZXF1YWxUYWJsZUZ1bmMoY29uc3QgVGFibGVGdW5jICphLCBjb25zdCBUYWJs ZUZ1bmMgKmIpCiB7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoZnVuY3R5cGUpOwogCUNPTVBB UkVfTk9ERV9GSUVMRChuc191cmlzKTsKIAlDT01QQVJFX05PREVfRklFTEQobnNfbmFtZXMp OwogCUNPTVBBUkVfTk9ERV9GSUVMRChkb2NleHByKTsKQEAgLTEzNywxMyArMTM4LDM1IEBA IF9lcXVhbFRhYmxlRnVuYyhjb25zdCBUYWJsZUZ1bmMgKmEsIGNvbnN0IFRhYmxlRnVuYyAq YikKIAlDT01QQVJFX05PREVfRklFTEQoY29sY29sbGF0aW9ucyk7CiAJQ09NUEFSRV9OT0RF X0ZJRUxEKGNvbGV4cHJzKTsKIAlDT01QQVJFX05PREVfRklFTEQoY29sZGVmZXhwcnMpOwor CUNPTVBBUkVfTk9ERV9GSUVMRChjb2x2YWxleHBycyk7CiAJQ09NUEFSRV9CSVRNQVBTRVRf RklFTEQobm90bnVsbHMpOworCUNPTVBBUkVfTk9ERV9GSUVMRChwbGFuKTsKIAlDT01QQVJF X1NDQUxBUl9GSUVMRChvcmRpbmFsaXR5Y29sKTsKIAlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxE KGxvY2F0aW9uKTsKIAogCXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbAorX2VxdWFs SnNvblRhYmxlUGFyZW50Tm9kZShjb25zdCBKc29uVGFibGVQYXJlbnROb2RlICphLCBjb25z dCBKc29uVGFibGVQYXJlbnROb2RlICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRChwYXRo KTsKKwlDT01QQVJFX05PREVfRklFTEQoY2hpbGQpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KGNvbE1pbik7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY29sTWF4KTsKKworCXJldHVybiB0 cnVlOworfQorCitzdGF0aWMgYm9vbAorX2VxdWFsSnNvblRhYmxlU2libGluZ05vZGUoY29u c3QgSnNvblRhYmxlU2libGluZ05vZGUgKmEsIGNvbnN0IEpzb25UYWJsZVNpYmxpbmdOb2Rl ICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRChsYXJnKTsKKwlDT01QQVJFX05PREVfRklF TEQocmFyZyk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wKIF9lcXVhbElu dG9DbGF1c2UoY29uc3QgSW50b0NsYXVzZSAqYSwgY29uc3QgSW50b0NsYXVzZSAqYikKIHsK QEAgLTM2MTYsNiArMzYzOSwxMiBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiKQogCQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbnM6CiAJCQlyZXR2YWwgPSBfZXF1YWxK c29uSXRlbUNvZXJjaW9ucyhhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfSnNvblRhYmxl UGFyZW50Tm9kZToKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25UYWJsZVBhcmVudE5vZGUoYSwg Yik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25UYWJsZVNpYmxpbmdOb2RlOgorCQkJcmV0 dmFsID0gX2VxdWFsSnNvblRhYmxlU2libGluZ05vZGUoYSwgYik7CisJCQlicmVhazsKIAog CQkJLyoKIAkJCSAqIFJFTEFUSU9OIE5PREVTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4 IGU4ZGUxZGQzYWEuLmNiYWUxODBkYmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0y NDU0LDYgKzI0NTQsOCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJ CQkJCXJldHVybiB0cnVlOwogCQkJCWlmICh3YWxrZXIodGYtPmNvbGRlZmV4cHJzLCBjb250 ZXh0KSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcih0Zi0+Y29sdmFsZXhw cnMsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwogCQlj YXNlIFRfSnNvblZhbHVlRXhwcjoKQEAgLTM0ODcsNiArMzQ4OSw3IEBAIGV4cHJlc3Npb25f dHJlZV9tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJTVVUQVRFKG5ld25vZGUtPnJvd2V4cHIs IHRmLT5yb3dleHByLCBOb2RlICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xleHBycywg dGYtPmNvbGV4cHJzLCBMaXN0ICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xkZWZleHBy cywgdGYtPmNvbGRlZmV4cHJzLCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5jb2x2 YWxleHBycywgdGYtPmNvbHZhbGV4cHJzLCBMaXN0ICopOwogCQkJCXJldHVybiAoTm9kZSAq KSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CkBAIC00NDQ0LDYgKzQ0NDcsMzAgQEAgcmF3 X2V4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7 CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25UYWJsZToKKwkJCXsKKwkJCQlKc29u VGFibGUgICpqdCA9IChKc29uVGFibGUgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIoanQt PmNvbW1vbiwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIo anQtPmNvbHVtbnMsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJy ZWFrOworCQljYXNlIFRfSnNvblRhYmxlQ29sdW1uOgorCQkJeworCQkJCUpzb25UYWJsZUNv bHVtbiAgKmp0YyA9IChKc29uVGFibGVDb2x1bW4gKikgbm9kZTsKKworCQkJCWlmICh3YWxr ZXIoanRjLT50eXBlTmFtZSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlm ICh3YWxrZXIoanRjLT5vbl9lbXB0eSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOwor CQkJCWlmICh3YWxrZXIoanRjLT5vbl9lcnJvciwgY29udGV4dCkpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX05FU1RFRCAmJiB3YWxrZXIoanRj LT5jb2x1bW5zLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBl OiAlZCIsCiAJCQkJIChpbnQpIG5vZGVUYWcobm9kZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK aW5kZXggMDkxZDhhNDAxNS4uYWNiYjRlYmNlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBA IC0xMDkxLDYgKzEwOTEsNyBAQCBfb3V0VGFibGVGdW5jKFN0cmluZ0luZm8gc3RyLCBjb25z dCBUYWJsZUZ1bmMgKm5vZGUpCiB7CiAJV1JJVEVfTk9ERV9UWVBFKCJUQUJMRUZVTkMiKTsK IAorCVdSSVRFX0VOVU1fRklFTEQoZnVuY3R5cGUsIFRhYmxlRnVuY1R5cGUpOwogCVdSSVRF X05PREVfRklFTEQobnNfdXJpcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChuc19uYW1lcyk7CiAJ V1JJVEVfTk9ERV9GSUVMRChkb2NleHByKTsKQEAgLTExMDEsNyArMTEwMiw5IEBAIF9vdXRU YWJsZUZ1bmMoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFRhYmxlRnVuYyAqbm9kZSkKIAlXUklU RV9OT0RFX0ZJRUxEKGNvbGNvbGxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQoY29sZXhw cnMpOwogCVdSSVRFX05PREVfRklFTEQoY29sZGVmZXhwcnMpOworCVdSSVRFX05PREVfRklF TEQoY29sdmFsZXhwcnMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChub3RudWxscyk7CisJ V1JJVEVfTk9ERV9GSUVMRChwbGFuKTsKIAlXUklURV9JTlRfRklFTEQob3JkaW5hbGl0eWNv bCk7CiAJV1JJVEVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwogfQpAQCAtMTg2NSw2ICsx ODY4LDI2IEBAIF9vdXRKc29uSXRlbUNvZXJjaW9ucyhTdHJpbmdJbmZvIHN0ciwgY29uc3Qg SnNvbkl0ZW1Db2VyY2lvbnMgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChjb21wb3NpdGUp OwogfQogCitzdGF0aWMgdm9pZAorX291dEpzb25UYWJsZVBhcmVudE5vZGUoU3RyaW5nSW5m byBzdHIsIGNvbnN0IEpzb25UYWJsZVBhcmVudE5vZGUgKm5vZGUpCit7CisJV1JJVEVfTk9E RV9UWVBFKCJKU09OVEFCUE5PREUiKTsKKworCVdSSVRFX05PREVfRklFTEQocGF0aCk7CisJ V1JJVEVfTk9ERV9GSUVMRChjaGlsZCk7CisJV1JJVEVfSU5UX0ZJRUxEKGNvbE1pbik7CisJ V1JJVEVfSU5UX0ZJRUxEKGNvbE1heCk7Cit9CisKK3N0YXRpYyB2b2lkCitfb3V0SnNvblRh YmxlU2libGluZ05vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEpzb25UYWJsZVNpYmxpbmdO b2RlICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiSlNPTlRBQlNOT0RFIik7CisKKwlX UklURV9OT0RFX0ZJRUxEKGxhcmcpOworCVdSSVRFX05PREVfRklFTEQocmFyZyk7Cit9CisK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCVN0dWZmIGZyb20gcGF0aG5vZGVz LmguCkBAIC00Njc2LDYgKzQ2OTksMTIgQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29u c3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb25zOgogCQkJCV9vdXRK c29uSXRlbUNvZXJjaW9ucyhzdHIsIG9iaik7CiAJCQkJYnJlYWs7CisJCQljYXNlIFRfSnNv blRhYmxlUGFyZW50Tm9kZToKKwkJCQlfb3V0SnNvblRhYmxlUGFyZW50Tm9kZShzdHIsIG9i aik7CisJCQkJYnJlYWs7CisJCQljYXNlIFRfSnNvblRhYmxlU2libGluZ05vZGU6CisJCQkJ X291dEpzb25UYWJsZVNpYmxpbmdOb2RlKHN0ciwgb2JqKTsKKwkJCQlicmVhazsKIAogCQkJ ZGVmYXVsdDoKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBjMTVlODFhMzYyLi5kODJm YzIyY2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtNTMzLDYgKzUzMyw3IEBAIF9y ZWFkVGFibGVGdW5jKHZvaWQpCiB7CiAJUkVBRF9MT0NBTFMoVGFibGVGdW5jKTsKIAorCVJF QURfRU5VTV9GSUVMRChmdW5jdHlwZSwgVGFibGVGdW5jVHlwZSk7CiAJUkVBRF9OT0RFX0ZJ RUxEKG5zX3VyaXMpOwogCVJFQURfTk9ERV9GSUVMRChuc19uYW1lcyk7CiAJUkVBRF9OT0RF X0ZJRUxEKGRvY2V4cHIpOwpAQCAtNTQzLDcgKzU0NCw5IEBAIF9yZWFkVGFibGVGdW5jKHZv aWQpCiAJUkVBRF9OT0RFX0ZJRUxEKGNvbGNvbGxhdGlvbnMpOwogCVJFQURfTk9ERV9GSUVM RChjb2xleHBycyk7CiAJUkVBRF9OT0RFX0ZJRUxEKGNvbGRlZmV4cHJzKTsKKwlSRUFEX05P REVfRklFTEQoY29sdmFsZXhwcnMpOwogCVJFQURfQklUTUFQU0VUX0ZJRUxEKG5vdG51bGxz KTsKKwlSRUFEX05PREVfRklFTEQocGxhbik7CiAJUkVBRF9JTlRfRklFTEQob3JkaW5hbGl0 eWNvbCk7CiAJUkVBRF9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CiAKQEAgLTE0OTQsNiAr MTQ5NywzMCBAQCBfcmVhZEpzb25FeHByKHZvaWQpCiAJUkVBRF9ET05FKCk7CiB9CiAKK3N0 YXRpYyBKc29uVGFibGVQYXJlbnROb2RlICoKK19yZWFkSnNvblRhYmxlUGFyZW50Tm9kZSh2 b2lkKQoreworCVJFQURfTE9DQUxTKEpzb25UYWJsZVBhcmVudE5vZGUpOworCisJUkVBRF9O T0RFX0ZJRUxEKHBhdGgpOworCVJFQURfTk9ERV9GSUVMRChjaGlsZCk7CisJUkVBRF9JTlRf RklFTEQoY29sTWluKTsKKwlSRUFEX0lOVF9GSUVMRChjb2xNYXgpOworCisJUkVBRF9ET05F KCk7Cit9CisKK3N0YXRpYyBKc29uVGFibGVTaWJsaW5nTm9kZSAqCitfcmVhZEpzb25UYWJs ZVNpYmxpbmdOb2RlKHZvaWQpCit7CisJUkVBRF9MT0NBTFMoSnNvblRhYmxlU2libGluZ05v ZGUpOworCisJUkVBRF9OT0RFX0ZJRUxEKGxhcmcpOworCVJFQURfTk9ERV9GSUVMRChyYXJn KTsKKworCVJFQURfRE9ORSgpOworfQorCiAvKgogICogX3JlYWRKc29uQ29lcmNpb24KICAq LwpAQCAtMzE1MSw2ICszMTc4LDEwIEBAIHBhcnNlTm9kZVN0cmluZyh2b2lkKQogCQlyZXR1 cm5fdmFsdWUgPSBfcmVhZEpzb25Db2VyY2lvbigpOwogCWVsc2UgaWYgKE1BVENIKCJKU09O SVRFTUNPRVJDSU9OUyIsIDE3KSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uSXRlbUNv ZXJjaW9ucygpOworCWVsc2UgaWYgKE1BVENIKCJKU09OVEFCUE5PREUiLCAxMikpCisJCXJl dHVybl92YWx1ZSA9IF9yZWFkSnNvblRhYmxlUGFyZW50Tm9kZSgpOworCWVsc2UgaWYgKE1B VENIKCJKU09OVEFCU05PREUiLCAxMikpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkSnNvblRh YmxlU2libGluZ05vZGUoKTsKIAllbHNlCiAJewogCQllbG9nKEVSUk9SLCAiYmFkbHkgZm9y bWF0dGVkIG5vZGUgc3RyaW5nIFwiJS4zMnNcIi4uLiIsIHRva2VuKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtl ZmlsZQppbmRleCA1ZGRiOWE5MmYwLi41NmRhZmRkOTYxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxl CkBAIC0yMyw2ICsyMyw3IEBAIE9CSlMgPSBcCiAJcGFyc2VfZW5yLm8gXAogCXBhcnNlX2V4 cHIubyBcCiAJcGFyc2VfZnVuYy5vIFwKKwlwYXJzZV9qc29udGFibGUubyBcCiAJcGFyc2Vf bm9kZS5vIFwKIAlwYXJzZV9vcGVyLm8gXAogCXBhcnNlX3BhcmFtLm8gXApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKaW5kZXggMDBmOTBlZWI1Yi4uZjYxY2U2ZTBjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02 NjksMTUgKzY2OSwyNSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCQlqc29u X29iamVjdF9hZ2dyZWdhdGVfY29uc3RydWN0b3IKIAkJCQkJanNvbl9hcnJheV9hZ2dyZWdh dGVfY29uc3RydWN0b3IKIAkJCQkJanNvbl9wYXRoX3NwZWNpZmljYXRpb24KKwkJCQkJanNv bl90YWJsZQorCQkJCQlqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uCisJCQkJCWpzb25f dGFibGVfb3JkaW5hbGl0eV9jb2x1bW5fZGVmaW5pdGlvbgorCQkJCQlqc29uX3RhYmxlX3Jl Z3VsYXJfY29sdW1uX2RlZmluaXRpb24KKwkJCQkJanNvbl90YWJsZV9mb3JtYXR0ZWRfY29s dW1uX2RlZmluaXRpb24KKwkJCQkJanNvbl90YWJsZV9leGlzdHNfY29sdW1uX2RlZmluaXRp b24KKwkJCQkJanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucwogCiAldHlwZSA8bGlzdD4JCWpz b25fbmFtZV9hbmRfdmFsdWVfbGlzdAogCQkJCQlqc29uX3ZhbHVlX2V4cHJfbGlzdAogCQkJ CQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0CiAJCQkJCWpzb25f YXJndW1lbnRzCiAJCQkJCWpzb25fcGFzc2luZ19jbGF1c2Vfb3B0CisJCQkJCWpzb25fdGFi bGVfY29sdW1uc19jbGF1c2UKKwkJCQkJanNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9s aXN0CiAKICV0eXBlIDxzdHI+CQkJanNvbl90YWJsZV9wYXRoX25hbWUKIAkJCQkJanNvbl9h c19wYXRoX25hbWVfY2xhdXNlX29wdAorCQkJCQlqc29uX3RhYmxlX2NvbHVtbl9wYXRoX3Nw ZWNpZmljYXRpb25fY2xhdXNlX29wdAogCiAldHlwZSA8aXZhbD4JCWpzb25fZW5jb2RpbmcK IAkJCQkJanNvbl9lbmNvZGluZ19jbGF1c2Vfb3B0CkBAIC02OTEsNiArNzAxLDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQkJanNvbl9iZWhhdmlvcl90cnVlCiAJCQkJ CWpzb25fYmVoYXZpb3JfZmFsc2UKIAkJCQkJanNvbl9iZWhhdmlvcl91bmtub3duCisJCQkJ CWpzb25fYmVoYXZpb3JfZW1wdHkKIAkJCQkJanNvbl9iZWhhdmlvcl9lbXB0eV9hcnJheQog CQkJCQlqc29uX2JlaGF2aW9yX2VtcHR5X29iamVjdAogCQkJCQlqc29uX2JlaGF2aW9yX2Rl ZmF1bHQKQEAgLTY5OCw2ICs3MDksOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog CQkJCQlqc29uX3F1ZXJ5X2JlaGF2aW9yCiAJCQkJCWpzb25fZXhpc3RzX2Vycm9yX2JlaGF2 aW9yCiAJCQkJCWpzb25fZXhpc3RzX2Vycm9yX2NsYXVzZV9vcHQKKwkJCQkJanNvbl90YWJs ZV9lcnJvcl9iZWhhdmlvcgorCQkJCQlqc29uX3RhYmxlX2Vycm9yX2NsYXVzZV9vcHQKIAog JXR5cGUgPG9uX2JlaGF2aW9yPiBqc29uX3ZhbHVlX29uX2JlaGF2aW9yX2NsYXVzZV9vcHQK IAkJCQkJanNvbl9xdWVyeV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CkBAIC03NzIsNyArNzg1 LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlJTlRFUlNFQ1QgSU5URVJWQUwg SU5UTyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAogCUpPSU4gSlNPTiBKU09OX0FS UkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElTVFMgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RB R0cKLQlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpTT05fVkFMVUUK KwlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpTT05fVEFCTEUgSlNP Tl9WQUxVRQogCiAJS0VZIEtFWVMgS0VFUAogCkBAIC03ODIsOCArNzk1LDggQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCU1BUFBJTkcgTUFUQ0ggTUFURVJJQUxJWkVEIE1B WFZBTFVFIE1FVEhPRCBNSU5VVEVfUCBNSU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9WRQogCi0J TkFNRV9QIE5BTUVTIE5BVElPTkFMIE5BVFVSQUwgTkNIQVIgTkVXIE5FWFQgTkZDIE5GRCBO RktDIE5GS0QgTk8gTk9ORQotCU5PUk1BTElaRSBOT1JNQUxJWkVECisJTkFNRV9QIE5BTUVT IE5BVElPTkFMIE5BVFVSQUwgTkNIQVIgTkVTVEVEIE5FVyBORVhUIE5GQyBORkQgTkZLQyBO RktEIE5PCisJTk9ORSBOT1JNQUxJWkUgTk9STUFMSVpFRAogCU5PVCBOT1RISU5HIE5PVElG WSBOT1ROVUxMIE5PV0FJVCBOVUxMX1AgTlVMTElGCiAJTlVMTFNfUCBOVU1FUklDCiAKQEAg LTc5MSw3ICs4MDQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU9SREVSIE9S RElOQUxJVFkgT1RIRVJTIE9VVF9QIE9VVEVSX1AKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkg T1ZFUlJJRElORyBPV05FRCBPV05FUgogCi0JUEFSQUxMRUwgUEFSU0VSIFBBUlRJQUwgUEFS VElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUExBQ0lORyBQTEFOUyBQT0xJQ1kKKwlQQVJBTExF TCBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRIIFBMQUNJ TkcgUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJW RSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVS QUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCkBAIC04OTMs NyArOTA2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICAqLwogJW5vbmFzc29j CVVOQk9VTkRFRAkJLyogaWRlYWxseSB3b3VsZCBoYXZlIHNhbWUgcHJlY2VkZW5jZSBhcyBJ REVOVCAqLwogJW5vbmFzc29jCUVSUk9SX1AgRU1QVFlfUCBERUZBVUxUIEFCU0VOVCAvKiBK U09OIGVycm9yL2VtcHR5IGJlaGF2aW9yICovCi0lbm9uYXNzb2MJRkFMU0VfUCBLRUVQIE9N SVQgUEFTU0lORyBUUlVFX1AgVU5LTk9XTiBVTklRVUUgSlNPTgorJW5vbmFzc29jCUZBTFNF X1AgS0VFUCBPTUlUIFBBU1NJTkcgVFJVRV9QIFVOS05PV04gVU5JUVVFIEpTT04gQ09MVU1O UwogJW5vbmFzc29jCUlERU5UIFBBUlRJVElPTiBSQU5HRSBST1dTIEdST1VQUyBQUkVDRURJ TkcgRk9MTE9XSU5HIENVQkUgUk9MTFVQCiAlbGVmdAkJT3AgT1BFUkFUT1IJCS8qIG11bHRp LWNoYXJhY3RlciBvcHMgYW5kIHVzZXItZGVmaW5lZCBvcGVyYXRvcnMgKi8KICVsZWZ0CQkn KycgJy0nCkBAIC05MTgsNiArOTMxLDEwIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAgKi8KICVsZWZ0CQlKT0lOIENST1NTIExFRlQgRlVMTCBSSUdIVCBJTk5FUl9QIE5BVFVS QUwKIAorJW5vbmFzc29jCWpzb25fdGFibGVfY29sdW1uCislbm9uYXNzb2MJTkVTVEVECisl bGVmdAkJUEFUSAorCiAlbm9uYXNzb2MJZW1wdHlfanNvbl91bmlxdWUKICVsZWZ0CQlXSVRI T1VUIFdJVEhfTEFfVU5JUVVFCiAKQEAgLTEyNDUwLDYgKzEyNDY3LDE5IEBAIHRhYmxlX3Jl ZjoJcmVsYXRpb25fZXhwciBvcHRfYWxpYXNfY2xhdXNlCiAJCQkJCSQyLT5hbGlhcyA9ICQ0 OwogCQkJCQkkJCA9IChOb2RlICopICQyOwogCQkJCX0KKwkJCXwganNvbl90YWJsZSBvcHRf YWxpYXNfY2xhdXNlCisJCQkJeworCQkJCQlKc29uVGFibGUgKmp0ID0gY2FzdE5vZGUoSnNv blRhYmxlLCAkMSk7CisJCQkJCWp0LT5hbGlhcyA9ICQyOworCQkJCQkkJCA9IChOb2RlICop IGp0OworCQkJCX0KKwkJCXwgTEFURVJBTF9QIGpzb25fdGFibGUgb3B0X2FsaWFzX2NsYXVz ZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlICpqdCA9IGNhc3ROb2RlKEpzb25UYWJsZSwgJDIp OworCQkJCQlqdC0+YWxpYXMgPSAkMzsKKwkJCQkJanQtPmxhdGVyYWwgPSB0cnVlOworCQkJ CQkkJCA9IChOb2RlICopIGp0OworCQkJCX0KIAkJOwogCiAKQEAgLTEzMDAxLDYgKzEzMDMx LDggQEAgeG1sdGFibGVfY29sdW1uX29wdGlvbl9lbDoKIAkJCQl7ICQkID0gbWFrZURlZkVs ZW0oImlzX25vdF9udWxsIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4odHJ1ZSksIEAxKTsgfQog CQkJfCBOVUxMX1AKIAkJCQl7ICQkID0gbWFrZURlZkVsZW0oImlzX25vdF9udWxsIiwgKE5v ZGUgKikgbWFrZUJvb2xlYW4oZmFsc2UpLCBAMSk7IH0KKwkJCXwgUEFUSCBiX2V4cHIKKwkJ CQl7ICQkID0gbWFrZURlZkVsZW0oInBhdGgiLCAkMiwgQDEpOyB9CiAJCTsKIAogeG1sX25h bWVzcGFjZV9saXN0OgpAQCAtMTU1MjgsNiArMTU1NjAsMTAgQEAganNvbl9iZWhhdmlvcl91 bmtub3duOgogCQkJVU5LTk9XTgkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhB VklPUl9VTktOT1dOLCBOVUxMKTsgfQogCQk7CiAKK2pzb25fYmVoYXZpb3JfZW1wdHk6CisJ CQlFTVBUWV9QCQl7ICQkID0gbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9SX0VNUFRZ X09CSkVDVCwgTlVMTCk7IH0KKwkJOworCiBqc29uX2JlaGF2aW9yX2VtcHR5X2FycmF5Ogog CQkJRU1QVFlfUCBBUlJBWQl7ICQkID0gbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9S X0VNUFRZX0FSUkFZLCBOVUxMKTsgfQogCQkJLyogbm9uLXN0YW5kYXJkLCBmb3IgT3JhY2xl IGNvbXBhdGliaWxpdHkgb25seSAqLwpAQCAtMTU2NDIsNiArMTU2NzgsMTUzIEBAIGpzb25f cXVlcnlfb25fYmVoYXZpb3JfY2xhdXNlX29wdDoKIAkJCQkJCQkJCXsgJCQub25fZW1wdHkg PSBOVUxMOyAkJC5vbl9lcnJvciA9IE5VTEw7IH0KIAkJOwogCitqc29uX3RhYmxlOgorCQkJ SlNPTl9UQUJMRSAnKCcKKwkJCQlqc29uX2FwaV9jb21tb25fc3ludGF4CisJCQkJanNvbl90 YWJsZV9jb2x1bW5zX2NsYXVzZQorCQkJCWpzb25fdGFibGVfZXJyb3JfY2xhdXNlX29wdAor CQkJJyknCisJCQkJeworCQkJCQlKc29uVGFibGUgKm4gPSBtYWtlTm9kZShKc29uVGFibGUp OworCQkJCQluLT5jb21tb24gPSAoSnNvbkNvbW1vbiAqKSAkMzsKKwkJCQkJbi0+Y29sdW1u cyA9ICQ0OworCQkJCQluLT5vbl9lcnJvciA9ICQ1OworCQkJCQluLT5sb2NhdGlvbiA9IEAx OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfY29s dW1uc19jbGF1c2U6CisJCQlDT0xVTU5TICcoJwlqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0 aW9uX2xpc3QgJyknIHsgJCQgPSAkMzsgfQorCQk7CisKK2pzb25fdGFibGVfY29sdW1uX2Rl ZmluaXRpb25fbGlzdDoKKwkJCWpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb24KKwkJCQl7 ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwganNvbl90YWJsZV9jb2x1bW5fZGVmaW5p dGlvbl9saXN0ICcsJyBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uCisJCQkJeyAkJCA9 IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK2pzb25fdGFibGVfY29sdW1uX2RlZmluaXRp b246CisJCQlqc29uX3RhYmxlX29yZGluYWxpdHlfY29sdW1uX2RlZmluaXRpb24JCSVwcmVj IGpzb25fdGFibGVfY29sdW1uCisJCQl8IGpzb25fdGFibGVfcmVndWxhcl9jb2x1bW5fZGVm aW5pdGlvbiAJCSVwcmVjIGpzb25fdGFibGVfY29sdW1uCisJCQl8IGpzb25fdGFibGVfZm9y bWF0dGVkX2NvbHVtbl9kZWZpbml0aW9uCSVwcmVjIGpzb25fdGFibGVfY29sdW1uCisJCQl8 IGpzb25fdGFibGVfZXhpc3RzX2NvbHVtbl9kZWZpbml0aW9uCQklcHJlYyBqc29uX3RhYmxl X2NvbHVtbgorCQkJfCBqc29uX3RhYmxlX25lc3RlZF9jb2x1bW5zCisJCTsKKworanNvbl90 YWJsZV9vcmRpbmFsaXR5X2NvbHVtbl9kZWZpbml0aW9uOgorCQkJQ29sSWQgRk9SIE9SRElO QUxJVFkKKwkJCQl7CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25U YWJsZUNvbHVtbik7CisJCQkJCW4tPmNvbHR5cGUgPSBKVENfRk9SX09SRElOQUxJVFk7CisJ CQkJCW4tPm5hbWUgPSAkMTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX3JlZ3VsYXJfY29sdW1uX2Rl ZmluaXRpb246CisJCQlDb2xJZCBUeXBlbmFtZQorCQkJanNvbl90YWJsZV9jb2x1bW5fcGF0 aF9zcGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQKKwkJCWpzb25fd3JhcHBlcl9jbGF1c2Vfb3B0 CisJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQlqc29uX3ZhbHVlX29uX2JlaGF2aW9y X2NsYXVzZV9vcHQKKwkJCQl7CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2Rl KEpzb25UYWJsZUNvbHVtbik7CisJCQkJCW4tPmNvbHR5cGUgPSBKVENfUkVHVUxBUjsKKwkJ CQkJbi0+bmFtZSA9ICQxOworCQkJCQluLT50eXBlTmFtZSA9ICQyOworCQkJCQluLT5mb3Jt YXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFVTFQs IC0xKTsKKwkJCQkJbi0+d3JhcHBlciA9ICQ0OyAvKiBKU1dfTk9ORSAqLworCQkJCQluLT5v bWl0X3F1b3RlcyA9ICQ1OyAvKiBmYWxzZSAqLworCQkJCQluLT5wYXRoc3BlYyA9ICQzOwor CQkJCQluLT5vbl9lbXB0eSA9ICQ2Lm9uX2VtcHR5OworCQkJCQluLT5vbl9lcnJvciA9ICQ2 Lm9uX2Vycm9yOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICop IG47CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfZXhpc3RzX2NvbHVtbl9kZWZpbml0aW9u OgorCQkJQ29sSWQgVHlwZW5hbWUKKwkJCUVYSVNUUyBqc29uX3RhYmxlX2NvbHVtbl9wYXRo X3NwZWNpZmljYXRpb25fY2xhdXNlX29wdAorCQkJanNvbl9leGlzdHNfZXJyb3JfY2xhdXNl X29wdAorCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRh YmxlQ29sdW1uKTsKKwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19FWElTVFM7CisJCQkJCW4tPm5h bWUgPSAkMTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+Zm9ybWF0ID0gbWFr ZUpzb25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VOQ19ERUZBVUxULCAtMSk7CisJ CQkJCW4tPndyYXBwZXIgPSBKU1dfTk9ORTsKKwkJCQkJbi0+b21pdF9xdW90ZXMgPSBmYWxz ZTsKKwkJCQkJbi0+cGF0aHNwZWMgPSAkNDsKKwkJCQkJbi0+b25fZW1wdHkgPSBOVUxMOwor CQkJCQluLT5vbl9lcnJvciA9ICQ1OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkk JCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfZXJyb3JfYmVoYXZp b3I6CisJCQlqc29uX2JlaGF2aW9yX2Vycm9yCisJCQl8IGpzb25fYmVoYXZpb3JfZW1wdHkK KwkJOworCitqc29uX3RhYmxlX2Vycm9yX2NsYXVzZV9vcHQ6CisJCQlqc29uX3RhYmxlX2Vy cm9yX2JlaGF2aW9yIE9OIEVSUk9SX1AJeyAkJCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICov CQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKworanNvbl90YWJsZV9jb2x1bW5fcGF0aF9z cGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQ6CisJCQlQQVRIIFNjb25zdAkJCQkJCQkJeyAkJCA9 ICQyOyB9CisJCQl8IC8qIEVNUFRZICovICVwcmVjIGpzb25fdGFibGVfY29sdW1uCXsgJCQg PSBOVUxMOyB9CisJCTsKKworanNvbl90YWJsZV9mb3JtYXR0ZWRfY29sdW1uX2RlZmluaXRp b246CisJCQlDb2xJZCBUeXBlbmFtZSBGT1JNQVQganNvbl9yZXByZXNlbnRhdGlvbgorCQkJ anNvbl90YWJsZV9jb2x1bW5fcGF0aF9zcGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQKKwkJCWpz b25fd3JhcHBlcl9jbGF1c2Vfb3B0CisJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQlq c29uX3F1ZXJ5X29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQl7CisJCQkJCUpzb25UYWJs ZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CisJCQkJCW4tPmNvbHR5 cGUgPSBKVENfRk9STUFUVEVEOworCQkJCQluLT5uYW1lID0gJDE7CisJCQkJCW4tPnR5cGVO YW1lID0gJDI7CisJCQkJCW4tPmZvcm1hdCA9IGNhc3ROb2RlKEpzb25Gb3JtYXQsICQ0KTsK KwkJCQkJbi0+cGF0aHNwZWMgPSAkNTsKKwkJCQkJbi0+d3JhcHBlciA9ICQ2OworCQkJCQlp ZiAobi0+d3JhcHBlciAhPSBKU1dfTk9ORSAmJiAkNyAhPSBKU19RVU9URVNfVU5TUEVDKQor CQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3Igc2hh bGwgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2VkIiksCisJCQkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDcpKSk7CisJCQkJCW4tPm9taXRfcXVvdGVzID0g JDcgPT0gSlNfUVVPVEVTX09NSVQ7CisJCQkJCW4tPm9uX2VtcHR5ID0gJDgub25fZW1wdHk7 CisJCQkJCW4tPm9uX2Vycm9yID0gJDgub25fZXJyb3I7CisJCQkJCW4tPmxvY2F0aW9uID0g QDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworanNvbl90YWJsZV9u ZXN0ZWRfY29sdW1uczoKKwkJCU5FU1RFRCBwYXRoX29wdCBTY29uc3QganNvbl90YWJsZV9j b2x1bW5zX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5v ZGUoSnNvblRhYmxlQ29sdW1uKTsKKwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19ORVNURUQ7CisJ CQkJCW4tPnBhdGhzcGVjID0gJDM7CisJCQkJCW4tPmNvbHVtbnMgPSAkNDsKKwkJCQkJbi0+ bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitw YXRoX29wdDoKKwkJCVBBVEgJCQkJCQkJCQl7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJ eyB9CisJCTsKKwoganNvbl9yZXR1cm5pbmdfY2xhdXNlX29wdDoKIAkJCVJFVFVSTklORyBU eXBlbmFtZQogCQkJCXsKQEAgLTE2NDg1LDYgKzE2NjY4LDcgQEAgdW5yZXNlcnZlZF9rZXl3 b3JkOgogCQkJfCBNT1ZFCiAJCQl8IE5BTUVfUAogCQkJfCBOQU1FUworCQkJfCBORVNURUQK IAkJCXwgTkVXCiAJCQl8IE5FWFQKIAkJCXwgTkZDCkBAIC0xNjUxOCw2ICsxNjcwMiw3IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJ CXwgUEFTU1dPUkQKKwkJCXwgUEFUSAogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKIAkJCXwg UFJFQ0VESU5HCkBAIC0xNjY4MSw2ICsxNjg2Niw3IEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJ CQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUK KwkJCXwgSlNPTl9UQUJMRQogCQkJfCBKU09OX1ZBTFVFCiAJCQl8IExFQVNUCiAJCQl8IE5B VElPTkFMCkBAIC0xNzA0OCw2ICsxNzIzNCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJ CXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklBTElaRQor CQkJfCBKU09OX1RBQkxFCiAJCQl8IEpTT05fVkFMVUUKIAkJCXwgS0VFUAogCQkJfCBLRVkK QEAgLTE3MDg1LDYgKzE3MjcyLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBOQVRJ T05BTAogCQkJfCBOQVRVUkFMCiAJCQl8IE5DSEFSCisJCQl8IE5FU1RFRAogCQkJfCBORVcK IAkJCXwgTkVYVAogCQkJfCBORkMKQEAgLTE3MTI4LDYgKzE3MzE2LDcgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09S RAorCQkJfCBQQVRICiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKaW5kZXggZDhiMTRiYTdjZC4uOWQyNzUzNWY5 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpAQCAtNjk2LDcgKzY5Niw3IEBA IHRyYW5zZm9ybVJhbmdlVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VUYWJs ZUZ1bmMgKnJ0ZikKIAljaGFyCSAgKipuYW1lczsKIAlpbnQJCQljb2xubzsKIAotCS8qIEN1 cnJlbnRseSBvbmx5IFhNTFRBQkxFIGlzIHN1cHBvcnRlZCAqLworCXRmLT5mdW5jdHlwZSA9 IFRGVF9YTUxUQUJMRTsKIAljb25zdHJ1Y3ROYW1lID0gIlhNTFRBQkxFIjsKIAlkb2NUeXBl ID0gWE1MT0lEOwogCkBAIC0xMTAwLDEzICsxMTAwLDE3IEBAIHRyYW5zZm9ybUZyb21DbGF1 c2VJdGVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwKIAkJcnRyLT5ydGluZGV4ID0g bnNpdGVtLT5wX3J0aW5kZXg7CiAJCXJldHVybiAoTm9kZSAqKSBydHI7CiAJfQotCWVsc2Ug aWYgKElzQShuLCBSYW5nZVRhYmxlRnVuYykpCisJZWxzZSBpZiAoSXNBKG4sIFJhbmdlVGFi bGVGdW5jKSB8fCBJc0EobiwgSnNvblRhYmxlKSkKIAl7CiAJCS8qIHRhYmxlIGZ1bmN0aW9u IGlzIGxpa2UgYSBwbGFpbiByZWxhdGlvbiAqLwogCQlSYW5nZVRibFJlZiAqcnRyOwogCQlQ YXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKIAotCQluc2l0ZW0gPSB0cmFuc2Zvcm1SYW5n ZVRhYmxlRnVuYyhwc3RhdGUsIChSYW5nZVRhYmxlRnVuYyAqKSBuKTsKKwkJaWYgKElzQShu LCBSYW5nZVRhYmxlRnVuYykpCisJCQluc2l0ZW0gPSB0cmFuc2Zvcm1SYW5nZVRhYmxlRnVu Yyhwc3RhdGUsIChSYW5nZVRhYmxlRnVuYyAqKSBuKTsKKwkJZWxzZQorCQkJbnNpdGVtID0g dHJhbnNmb3JtSnNvblRhYmxlKHBzdGF0ZSwgKEpzb25UYWJsZSAqKSBuKTsKKwogCQkqdG9w X25zaXRlbSA9IG5zaXRlbTsKIAkJKm5hbWVzcGFjZSA9IGxpc3RfbWFrZTEobnNpdGVtKTsK IAkJcnRyID0gbWFrZU5vZGUoUmFuZ2VUYmxSZWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKaW5kZXggODY0NGViMmU3NC4uMDQwNmRjMjcwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jCkBAIC00MDk0LDcgKzQwOTQsNyBAQCB0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihQ YXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAlOb2RlCSAgICpwYXRo c3BlYzsKIAlKc29uRm9ybWF0VHlwZSBmb3JtYXQ7CiAKLQlpZiAoZnVuYy0+Y29tbW9uLT5w YXRobmFtZSkKKwlpZiAoZnVuYy0+Y29tbW9uLT5wYXRobmFtZSAmJiBmdW5jLT5vcCAhPSBJ U19KU09OX1RBQkxFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJKU09OX1RBQkxFIHBhdGggbmFtZSBpcyBu b3QgYWxsb3dlZCBoZXJlIiksCkBAIC00MTMyLDE0ICs0MTMyLDEzIEBAIHRyYW5zZm9ybUpz b25FeHByQ29tbW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQog CXRyYW5zZm9ybUpzb25QYXNzaW5nQXJncyhwc3RhdGUsIGZvcm1hdCwgZnVuYy0+Y29tbW9u LT5wYXNzaW5nLAogCQkJCQkJCSAmanNleHByLT5wYXNzaW5nX3ZhbHVlcywgJmpzZXhwci0+ cGFzc2luZ19uYW1lcyk7CiAKLQlpZiAoZnVuYy0+b3AgIT0gSVNfSlNPTl9FWElTVFMpCisJ aWYgKGZ1bmMtPm9wICE9IElTX0pTT05fRVhJU1RTICYmIGZ1bmMtPm9wICE9IElTX0pTT05f VEFCTEUpCiAJCWpzZXhwci0+b25fZW1wdHkgPSB0cmFuc2Zvcm1Kc29uQmVoYXZpb3IocHN0 YXRlLCBmdW5jLT5vbl9lbXB0eSwKIAkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwp OwogCiAJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUs IGZ1bmMtPm9uX2Vycm9yLAotCQkJCQkJCQkJCQkgZnVuYy0+b3AgPT0gSVNfSlNPTl9FWElT VFMgPwotCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9GQUxTRSA6Ci0JCQkJCQkJCQkJCSBK U09OX0JFSEFWSU9SX05VTEwpOworCQlmdW5jLT5vcCA9PSBJU19KU09OX0VYSVNUUyA/IEpT T05fQkVIQVZJT1JfRkFMU0UgOgorCQlmdW5jLT5vcCA9PSBJU19KU09OX1RBQkxFID8gSlNP Tl9CRUhBVklPUl9FTVBUWSA6IEpTT05fQkVIQVZJT1JfTlVMTCk7CiAKIAlyZXR1cm4ganNl eHByOwogfQpAQCAtNDQ0MCw2ICs0NDM5LDIwIEBAIHRyYW5zZm9ybUpzb25GdW5jRXhwcihQ YXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAkJCQkJanNleHByLT5y ZXN1bHRfY29lcmNpb24tPmV4cHIgPSBOVUxMOwogCQkJfQogCQkJYnJlYWs7CisKKwkJY2Fz ZSBJU19KU09OX1RBQkxFOgorCQkJanNleHByLT5yZXR1cm5pbmcgPSBtYWtlTm9kZShKc29u UmV0dXJuaW5nKTsKKwkJCWpzZXhwci0+cmV0dXJuaW5nLT5mb3JtYXQgPSBtYWtlSnNvbkZv cm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFVTFQsIC0xKTsKKwkJCWpzZXhw ci0+cmV0dXJuaW5nLT50eXBpZCA9IGV4cHJUeXBlKGNvbnRleHRJdGVtRXhwcik7CisJCQlq c2V4cHItPnJldHVybmluZy0+dHlwbW9kID0gLTE7CisKKwkJCWlmIChqc2V4cHItPnJldHVy bmluZy0+dHlwaWQgIT0gSlNPTkJPSUQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2co IkpTT05fVEFCTEUoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciBqc29uIHR5cGUiKSwK KwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmdW5jLT5sb2NhdGlvbikpKTsK KworCQkJYnJlYWs7CiAJfQogCiAJaWYgKGV4cHJUeXBlKGNvbnRleHRJdGVtRXhwcikgIT0g SlNPTkJPSUQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRh YmxlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOThkMjI4YjAzMAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwpAQCAtMCwwICsx LDQ2NyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGFyc2VfanNvbnRhYmxl LmMKKyAqCSAgcGFzcmluZyBvZiBKU09OX1RBQkxFCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIK KyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0 aW1pemVyLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIu aCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKKyNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVk ZSAidXRpbHMvanNvbi5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorCisvKiBD b250ZXh0IGZvciBKU09OX1RBQkxFIHRyYW5zZm9ybWF0aW9uICovCit0eXBlZGVmIHN0cnVj dCBKc29uVGFibGVDb250ZXh0Cit7CisJUGFyc2VTdGF0ZSAqcHN0YXRlOwkJCQkvKiBwYXJz aW5nIHN0YXRlICovCisJSnNvblRhYmxlICAqdGFibGU7CQkJCS8qIHVudHJhbnNmb3JtZWQg bm9kZSAqLworCVRhYmxlRnVuYyAgKnRhYmxlZnVuYzsJCQkvKiB0cmFuc2Zvcm1lZCBub2Rl CSovCisJTGlzdAkgICAqcGF0aE5hbWVzOwkJCS8qIGxpc3Qgb2YgYWxsIHBhdGggYW5kIGNv bHVtbnMgbmFtZXMgKi8KKwlPaWQJCQljb250ZXh0SXRlbVR5cGlkOwkvKiB0eXBlIG9pZCBv ZiBjb250ZXh0IGl0ZW0gKGpzb24vanNvbmIpICovCit9IEpzb25UYWJsZUNvbnRleHQ7CisK K3N0YXRpYyBKc29uVGFibGVQYXJlbnROb2RlICogdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1u cyhKc29uVGFibGVDb250ZXh0ICpjeHQsCisJCQkJCQkJCQkJCQkJICAgTGlzdCAqY29sdW1u cywKKwkJCQkJCQkJCQkJCQkgICBjaGFyICpwYXRoU3BlYywKKwkJCQkJCQkJCQkJCQkgICBp bnQgbG9jYXRpb24pOworCitzdGF0aWMgTm9kZSAqCittYWtlU3RyaW5nQ29uc3QoY2hhciAq c3RyLCBpbnQgbG9jYXRpb24pCit7CisJQV9Db25zdCAqbiA9IG1ha2VOb2RlKEFfQ29uc3Qp OworCisJbi0+dmFsLm5vZGUudHlwZSA9IFRfU3RyaW5nOworCW4tPnZhbC5zdmFsLnN2YWwg PSBzdHI7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKW47 Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTl9UQUJMRSBjb2x1bW4KKyAqICAgLSByZWd1 bGFyIGNvbHVtbiBpbnRvIEpTT05fVkFMVUUoKQorICogICAtIEZPUk1BVCBKU09OIGNvbHVt biBpbnRvIEpTT05fUVVFUlkoKQorICogICAtIEVYSVNUUyBjb2x1bW4gaW50byBKU09OX0VY SVNUUygpCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihK c29uVGFibGVDb2x1bW4gKmp0YywgTm9kZSAqY29udGV4dEl0ZW1FeHByLAorCQkJCQkJIExp c3QgKnBhc3NpbmdBcmdzLCBib29sIGVycm9yT25FcnJvcikKK3sKKwlKc29uRnVuY0V4cHIg KmpmZXhwciA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJSnNvbkNvbW1vbiAqY29tbW9u ID0gbWFrZU5vZGUoSnNvbkNvbW1vbik7CisJSnNvbk91dHB1dCAqb3V0cHV0ID0gbWFrZU5v ZGUoSnNvbk91dHB1dCk7CisJSnNvblBhdGhTcGVjIHBhdGhzcGVjOworCUpzb25Gb3JtYXQg KmRlZmF1bHRfZm9ybWF0OworCisJamZleHByLT5vcCA9CisJCWp0Yy0+Y29sdHlwZSA9PSBK VENfUkVHVUxBUiA/IElTX0pTT05fVkFMVUUgOgorCQlqdGMtPmNvbHR5cGUgPT0gSlRDX0VY SVNUUyA/IElTX0pTT05fRVhJU1RTIDogSVNfSlNPTl9RVUVSWTsKKwlqZmV4cHItPmNvbW1v biA9IGNvbW1vbjsKKwlqZmV4cHItPm91dHB1dCA9IG91dHB1dDsKKwlqZmV4cHItPm9uX2Vt cHR5ID0ganRjLT5vbl9lbXB0eTsKKwlqZmV4cHItPm9uX2Vycm9yID0ganRjLT5vbl9lcnJv cjsKKwlpZiAoIWpmZXhwci0+b25fZXJyb3IgJiYgZXJyb3JPbkVycm9yKQorCQlqZmV4cHIt Pm9uX2Vycm9yID0gbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9SX0VSUk9SLCBOVUxM KTsKKwlqZmV4cHItPm9taXRfcXVvdGVzID0ganRjLT5vbWl0X3F1b3RlczsKKwlqZmV4cHIt PndyYXBwZXIgPSBqdGMtPndyYXBwZXI7CisJamZleHByLT5sb2NhdGlvbiA9IGp0Yy0+bG9j YXRpb247CisKKwlvdXRwdXQtPnR5cGVOYW1lID0ganRjLT50eXBlTmFtZTsKKwlvdXRwdXQt PnJldHVybmluZyA9IG1ha2VOb2RlKEpzb25SZXR1cm5pbmcpOworCW91dHB1dC0+cmV0dXJu aW5nLT5mb3JtYXQgPSBqdGMtPmZvcm1hdDsKKworCWRlZmF1bHRfZm9ybWF0ID0gbWFrZUpz b25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VOQ19ERUZBVUxULCAtMSk7CisKKwlj b21tb24tPnBhdGhuYW1lID0gTlVMTDsKKwljb21tb24tPmV4cHIgPSBtYWtlSnNvblZhbHVl RXhwcigoRXhwciAqKSBjb250ZXh0SXRlbUV4cHIsIGRlZmF1bHRfZm9ybWF0KTsKKwljb21t b24tPnBhc3NpbmcgPSBwYXNzaW5nQXJnczsKKworCWlmIChqdGMtPnBhdGhzcGVjKQorCQlw YXRoc3BlYyA9IGp0Yy0+cGF0aHNwZWM7CisJZWxzZQorCXsKKwkJLyogQ29uc3RydWN0IGRl ZmF1bHQgcGF0aCBhcyAnJC4iY29sdW1uX25hbWUiJyAqLworCQlTdHJpbmdJbmZvRGF0YSBw YXRoOworCisJCWluaXRTdHJpbmdJbmZvKCZwYXRoKTsKKworCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZwYXRoLCAiJC4iKTsKKwkJZXNjYXBlX2pzb24oJnBhdGgsIGp0Yy0+bmFtZSk7 CisKKwkJcGF0aHNwZWMgPSBwYXRoLmRhdGE7CisJfQorCisJY29tbW9uLT5wYXRoc3BlYyA9 IG1ha2VTdHJpbmdDb25zdChwYXRoc3BlYywgLTEpOworCisJcmV0dXJuIChOb2RlICopIGpm ZXhwcjsKK30KKworc3RhdGljIGJvb2wKK2lzSnNvblRhYmxlUGF0aE5hbWVEdXBsaWNhdGUo SnNvblRhYmxlQ29udGV4dCAqY3h0LCBjb25zdCBjaGFyICpwYXRobmFtZSkKK3sKKwlMaXN0 Q2VsbCAqbGM7CisKKwlmb3JlYWNoKGxjLCBjeHQtPnBhdGhOYW1lcykKKwl7CisJCWlmICgh c3RyY21wKHBhdGhuYW1lLCAoY29uc3QgY2hhciAqKSBsZmlyc3QobGMpKSkKKwkJCXJldHVy biB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyogUmVjdXJzaXZlbHkgcmVn aXN0ZXIgY29sdW1uIG5hbWUgaW4gdGhlIHBhdGggbmFtZSBsaXN0LiAqLworc3RhdGljIHZv aWQKK3JlZ2lzdGVySnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgY2hh ciAqY29sbmFtZSkKK3sKKwlpZiAoaXNKc29uVGFibGVQYXRoTmFtZUR1cGxpY2F0ZShjeHQs IGNvbG5hbWUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQ TElDQVRFX0FMSUFTKSwKKwkJCQkgZXJybXNnKCJkdXBsaWNhdGUgSlNPTl9UQUJMRSBjb2x1 bW4gbmFtZTogJXMiLCBjb2xuYW1lKSwKKwkJCQkgZXJyaGludCgiSlNPTl9UQUJMRSBwYXRo IG5hbWVzIGFuZCBjb2x1bW4gbmFtZXMgc2hhbGwgYmUgIgorCQkJCQkJICJkaXN0aW5jdCBm cm9tIG9uZSBhbm90aGVyIikpKTsKKworCWN4dC0+cGF0aE5hbWVzID0gbGFwcGVuZChjeHQt PnBhdGhOYW1lcywgY29sbmFtZSk7Cit9CisKKy8qIFJlY3Vyc2l2ZWx5IHJlZ2lzdGVyIGFs bCBuZXN0ZWQgY29sdW1uIG5hbWVzIGluIHRoZSBwYXRoIG5hbWUgbGlzdC4gKi8KK3N0YXRp YyB2b2lkCityZWdpc3RlckFsbEpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxlQ29udGV4dCAq Y3h0LCBMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChs YywgY29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNv blRhYmxlQ29sdW1uLCBsZmlyc3QobGMpKTsKKworCQlpZiAoanRjLT5jb2x0eXBlID09IEpU Q19ORVNURUQpCisJCQlyZWdpc3RlckFsbEpzb25UYWJsZUNvbHVtbnMoY3h0LCBqdGMtPmNv bHVtbnMpOworCQllbHNlCisJCQlyZWdpc3Rlckpzb25UYWJsZUNvbHVtbihjeHQsIGp0Yy0+ bmFtZSk7CisJfQorfQorCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1OZXN0ZWRKc29uVGFi bGVDb2x1bW4oSnNvblRhYmxlQ29udGV4dCAqY3h0LCBKc29uVGFibGVDb2x1bW4gKmp0YykK K3sKKwlKc29uVGFibGVQYXJlbnROb2RlICpub2RlOworCisJbm9kZSA9IHRyYW5zZm9ybUpz b25UYWJsZUNvbHVtbnMoY3h0LCBqdGMtPmNvbHVtbnMsIGp0Yy0+cGF0aHNwZWMsCisJCQkJ CQkJCQkganRjLT5sb2NhdGlvbik7CisKKwlyZXR1cm4gKE5vZGUgKikgbm9kZTsKK30KKwor c3RhdGljIE5vZGUgKgorbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKE5vZGUgKmxub2RlLCBO b2RlICpybm9kZSkKK3sKKwlKc29uVGFibGVTaWJsaW5nTm9kZSAqam9pbiA9IG1ha2VOb2Rl KEpzb25UYWJsZVNpYmxpbmdOb2RlKTsKKworCWpvaW4tPmxhcmcgPSBsbm9kZTsKKwlqb2lu LT5yYXJnID0gcm5vZGU7CisKKwlyZXR1cm4gKE5vZGUgKikgam9pbjsKK30KKworLyoKKyAq IFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybSBjaGlsZCAobmVzdGVkKSBKU09OX1RBQkxFIGNvbHVt bnMuCisgKgorICogQ2hpbGQgY29sdW1ucyBhcmUgdHJhbnNmb3JtZWQgaW50byBhIGJpbmFy eSB0cmVlIG9mIHVuaW9uLWpvaW5lZAorICogSnNvblRhYmxlU2libGluZ05vZGVzLgorICov CitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uVGFibGVDaGlsZENvbHVtbnMoSnNvblRh YmxlQ29udGV4dCAqY3h0LCBMaXN0ICpjb2x1bW5zKQoreworCU5vZGUJICAgKnJlcyA9IE5V TEw7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiB0cmFuc2Zvcm0gYWxsIG5lc3RlZCBjb2x1 bW5zIGludG8gdW5pb24gam9pbiAqLworCWZvcmVhY2gobGMsIGNvbHVtbnMpCisJeworCQlK c29uVGFibGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0 KGxjKSk7CisJCU5vZGUJICAgKm5vZGU7CisKKwkJaWYgKGp0Yy0+Y29sdHlwZSAhPSBKVENf TkVTVEVEKQorCQkJY29udGludWU7CisKKwkJbm9kZSA9IHRyYW5zZm9ybU5lc3RlZEpzb25U YWJsZUNvbHVtbihjeHQsIGp0Yyk7CisKKwkJLyogam9pbiB0cmFuc2Zvcm1lZCBub2RlIHdp dGggcHJldmlvdXMgc2libGluZyBub2RlcyAqLworCQlyZXMgPSByZXMgPyBtYWtlSnNvblRh YmxlU2libGluZ0pvaW4ocmVzLCBub2RlKSA6IG5vZGU7CisJfQorCisJcmV0dXJuIHJlczsK K30KKworLyogQ2hlY2sgd2hldGhlciB0eXBlIGlzIGpzb24vanNvbmIsIGFycmF5LCBvciBy ZWNvcmQuICovCitzdGF0aWMgYm9vbAordHlwZUlzQ29tcG9zaXRlKE9pZCB0eXBpZCkKK3sK KwlpZiAodHlwaWQgPT0gSlNPTk9JRCB8fAorCQl0eXBpZCA9PSBKU09OQk9JRCB8fAorCQl0 eXBpZCA9PSBSRUNPUkRPSUQgfHwKKwkJdHlwZV9pc19hcnJheSh0eXBpZCkpCisJCXJldHVy biB0cnVlOworCisJc3dpdGNoIChnZXRfdHlwdHlwZSh0eXBpZCkpCisJeworCQljYXNlIFRZ UFRZUEVfQ09NUE9TSVRFOgorCQkJcmV0dXJuIHRydWU7CisKKwkJY2FzZSBUWVBUWVBFX0RP TUFJTjoKKwkJCXJldHVybiB0eXBlSXNDb21wb3NpdGUoZ2V0QmFzZVR5cGUodHlwaWQpKTsK Kwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIEFwcGVuZCB0cmFuc2Zvcm1lZCBub24t bmVzdGVkIEpTT05fVEFCTEUgY29sdW1ucyB0byB0aGUgVGFibGVGdW5jIG5vZGUgKi8KK3N0 YXRpYyB2b2lkCithcHBlbmRKc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZUNvbnRleHQgKmN4 dCwgTGlzdCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpjb2w7CisJUGFyc2VTdGF0ZSAq cHN0YXRlID0gY3h0LT5wc3RhdGU7CisJSnNvblRhYmxlICAqanQgPSBjeHQtPnRhYmxlOwor CVRhYmxlRnVuYyAgKnRmID0gY3h0LT50YWJsZWZ1bmM7CisJYm9vbAkJZXJyb3JPbkVycm9y ID0ganQtPm9uX2Vycm9yICYmCisJCQkJCQkJICAganQtPm9uX2Vycm9yLT5idHlwZSA9PSBK U09OX0JFSEFWSU9SX0VSUk9SOworCisJZm9yZWFjaChjb2wsIGNvbHVtbnMpCisJeworCQlK c29uVGFibGVDb2x1bW4gKnJhd2MgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJz dChjb2wpKTsKKwkJT2lkCQkJdHlwaWQ7CisJCWludDMyCQl0eXBtb2Q7CisJCU5vZGUJICAg KmNvbGV4cHI7CisKKwkJaWYgKHJhd2MtPm5hbWUpCisJCXsKKwkJCS8qIG1ha2Ugc3VyZSBj b2x1bW4gbmFtZXMgYXJlIHVuaXF1ZSAqLworCQkJTGlzdENlbGwgKmNvbG5hbWU7CisKKwkJ CWZvcmVhY2goY29sbmFtZSwgdGYtPmNvbG5hbWVzKQorCQkJCWlmICghc3RyY21wKChjb25z dCBjaGFyICopIGNvbG5hbWUsIHJhd2MtPm5hbWUpKQorCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNn KCJjb2x1bW4gbmFtZSBcIiVzXCIgaXMgbm90IHVuaXF1ZSIsCisJCQkJCQkJCQlyYXdjLT5u YW1lKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcmF3Yy0+bG9jYXRp b24pKSk7CisKKwkJCXRmLT5jb2xuYW1lcyA9IGxhcHBlbmQodGYtPmNvbG5hbWVzLAorCQkJ CQkJCQkgICBtYWtlU3RyaW5nKHBzdHJkdXAocmF3Yy0+bmFtZSkpKTsKKwkJfQorCisJCS8q CisJCSAqIERldGVybWluZSB0aGUgdHlwZSBhbmQgdHlwbW9kIGZvciB0aGUgbmV3IGNvbHVt bi4gRk9SCisJCSAqIE9SRElOQUxJVFkgY29sdW1ucyBhcmUgSU5URUdFUiBieSBzdGFuZGFy ZDsgdGhlIG90aGVycyBhcmUKKwkJICogdXNlci1zcGVjaWZpZWQuCisJCSAqLworCQlzd2l0 Y2ggKHJhd2MtPmNvbHR5cGUpCisJCXsKKwkJCWNhc2UgSlRDX0ZPUl9PUkRJTkFMSVRZOgor CQkJCWNvbGV4cHIgPSBOVUxMOworCQkJCXR5cGlkID0gSU5UNE9JRDsKKwkJCQl0eXBtb2Qg PSAtMTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBKVENfUkVHVUxBUjoKKwkJCQl0eXBlbmFt ZVR5cGVJZEFuZE1vZChwc3RhdGUsIHJhd2MtPnR5cGVOYW1lLCAmdHlwaWQsICZ0eXBtb2Qp OworCisJCQkJLyoKKwkJCQkgKiBVc2UgaW1wbGljaXQgRk9STUFUIEpTT04gZm9yIGNvbXBv c2l0ZSB0eXBlcyAoYXJyYXlzIGFuZAorCQkJCSAqIHJlY29yZHMpCisJCQkJICovCisJCQkJ aWYgKHR5cGVJc0NvbXBvc2l0ZSh0eXBpZCkpCisJCQkJCXJhd2MtPmNvbHR5cGUgPSBKVENf Rk9STUFUVEVEOworCQkJCWVsc2UgaWYgKHJhd2MtPndyYXBwZXIgIT0gSlNXX05PTkUpCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgV0lUSCBXUkFQUEVSIGNsYXVzZSB3 aXRoIHNjYWxhciBjb2x1bW5zIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCQkJCWVsc2UgaWYgKHJhd2MtPm9taXRfcXVvdGVz KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIE9NSVQgUVVPVEVTIGNsYXVz ZSB3aXRoIHNjYWxhciBjb2x1bW5zIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCisJCQkJLyogRkFMTFRIUk9VR0ggKi8KKwkJ CWNhc2UgSlRDX0VYSVNUUzoKKwkJCWNhc2UgSlRDX0ZPUk1BVFRFRDoKKwkJCQl7CisJCQkJ CU5vZGUJICAgKmplOworCQkJCQlDYXNlVGVzdEV4cHIgKnBhcmFtID0gbWFrZU5vZGUoQ2Fz ZVRlc3RFeHByKTsKKworCQkJCQlwYXJhbS0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJ CQkJcGFyYW0tPnR5cGVJZCA9IGN4dC0+Y29udGV4dEl0ZW1UeXBpZDsKKwkJCQkJcGFyYW0t PnR5cGVNb2QgPSAtMTsKKworCQkJCQlqZSA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihy YXdjLCAoTm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJCSAgTklMLCBlcnJvck9uRXJyb3Ip OworCisJCQkJCWNvbGV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgamUsIEVYUFJfS0lO RF9GUk9NX0ZVTkNUSU9OKTsKKwkJCQkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUs IGNvbGV4cHIpOworCisJCQkJCXR5cGlkID0gZXhwclR5cGUoY29sZXhwcik7CisJCQkJCXR5 cG1vZCA9IGV4cHJUeXBtb2QoY29sZXhwcik7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJ Y2FzZSBKVENfTkVTVEVEOgorCQkJCWNvbnRpbnVlOworCisJCQlkZWZhdWx0OgorCQkJCWVs b2coRVJST1IsICJ1bmtub3duIEpTT05fVEFCTEUgY29sdW1uIHR5cGU6ICVkIiwgcmF3Yy0+ Y29sdHlwZSk7CisJCQkJYnJlYWs7CisJCX0KKworCQl0Zi0+Y29sdHlwZXMgPSBsYXBwZW5k X29pZCh0Zi0+Y29sdHlwZXMsIHR5cGlkKTsKKwkJdGYtPmNvbHR5cG1vZHMgPSBsYXBwZW5k X2ludCh0Zi0+Y29sdHlwbW9kcywgdHlwbW9kKTsKKwkJdGYtPmNvbGNvbGxhdGlvbnMgPSBs YXBwZW5kX29pZCh0Zi0+Y29sY29sbGF0aW9ucywKKwkJCQkJCQkJCQl0eXBlX2lzX2NvbGxh dGFibGUodHlwaWQpCisJCQkJCQkJCQkJCT8gREVGQVVMVF9DT0xMQVRJT05fT0lECisJCQkJ CQkJCQkJCTogSW52YWxpZE9pZCk7CisJCXRmLT5jb2x2YWxleHBycyA9IGxhcHBlbmQodGYt PmNvbHZhbGV4cHJzLCBjb2xleHByKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgdHJhbnNm b3JtZWQgSlNPTl9UQUJMRSBwYXJlbnQgcGxhbiBub2RlIGJ5IGFwcGVuZGluZyBhbGwgbm9u LW5lc3RlZAorICogY29sdW1ucyB0byB0aGUgVGFibGVGdW5jIG5vZGUgYW5kIHJlbWVtYmVy aW5nIHRoZWlyIGluZGljZXMgaW4gdGhlCisgKiBjb2x2YWxleHBycyBsaXN0LgorICovCitz dGF0aWMgSnNvblRhYmxlUGFyZW50Tm9kZSAqCittYWtlUGFyZW50SnNvblRhYmxlTm9kZShK c29uVGFibGVDb250ZXh0ICpjeHQsIGNoYXIgKnBhdGhTcGVjLCBMaXN0ICpjb2x1bW5zKQor eworCUpzb25UYWJsZVBhcmVudE5vZGUgKm5vZGUgPSBtYWtlTm9kZShKc29uVGFibGVQYXJl bnROb2RlKTsKKworCW5vZGUtPnBhdGggPSBtYWtlQ29uc3QoSlNPTlBBVEhPSUQsIC0xLCBJ bnZhbGlkT2lkLCAtMSwKKwkJCQkJCSAgIERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbnBhdGhf aW4sCisJCQkJCQkJCQkJCSAgIENTdHJpbmdHZXREYXR1bShwYXRoU3BlYykpLAorCQkJCQkJ ICAgZmFsc2UsIGZhbHNlKTsKKworCS8qIHNhdmUgc3RhcnQgb2YgY29sdW1uIHJhbmdlICov CisJbm9kZS0+Y29sTWluID0gbGlzdF9sZW5ndGgoY3h0LT50YWJsZWZ1bmMtPmNvbHZhbGV4 cHJzKTsKKworCWFwcGVuZEpzb25UYWJsZUNvbHVtbnMoY3h0LCBjb2x1bW5zKTsKKworCS8q IHNhdmUgZW5kIG9mIGNvbHVtbiByYW5nZSAqLworCW5vZGUtPmNvbE1heCA9IGxpc3RfbGVu Z3RoKGN4dC0+dGFibGVmdW5jLT5jb2x2YWxleHBycykgLSAxOworCisJbm9kZS0+ZXJyb3JP bkVycm9yID0KKwkJY3h0LT50YWJsZS0+b25fZXJyb3IgJiYKKwkJY3h0LT50YWJsZS0+b25f ZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CisKKwlyZXR1cm4gbm9kZTsK K30KKworc3RhdGljIEpzb25UYWJsZVBhcmVudE5vZGUgKgordHJhbnNmb3JtSnNvblRhYmxl Q29sdW1ucyhKc29uVGFibGVDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMsIGNoYXIgKnBh dGhTcGVjLAorCQkJCQkJICBpbnQgbG9jYXRpb24pCit7CisJSnNvblRhYmxlUGFyZW50Tm9k ZSAqbm9kZTsKKworCS8qIHRyYW5zZm9ybSBvbmx5IG5vbi1uZXN0ZWQgY29sdW1ucyAqLwor CW5vZGUgPSBtYWtlUGFyZW50SnNvblRhYmxlTm9kZShjeHQsIHBhdGhTcGVjLCBjb2x1bW5z KTsKKworCS8qIHRyYW5zZm9ybSByZWN1cnNpdmVseSBuZXN0ZWQgY29sdW1ucyAqLworCW5v ZGUtPmNoaWxkID0gdHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRDb2x1bW5zKGN4dCwgY29sdW1u cyk7CisKKwlyZXR1cm4gbm9kZTsKK30KKworLyoKKyAqIHRyYW5zZm9ybUpzb25UYWJsZSAt CisgKgkJCVRyYW5zZm9ybSBhIHJhdyBKc29uVGFibGUgaW50byBUYWJsZUZ1bmMuCisgKgor ICogVHJhbnNmb3JtIHRoZSBkb2N1bWVudC1nZW5lcmF0aW5nIGV4cHJlc3Npb24sIHRoZSBy b3ctZ2VuZXJhdGluZyBleHByZXNzaW9uLAorICogdGhlIGNvbHVtbi1nZW5lcmF0aW5nIGV4 cHJlc3Npb25zLCBhbmQgdGhlIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMuCisgKi8KK1Bh cnNlTmFtZXNwYWNlSXRlbSAqCit0cmFuc2Zvcm1Kc29uVGFibGUoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBKc29uVGFibGUgKmp0KQoreworCUpzb25UYWJsZUNvbnRleHQgY3h0OworCVRhYmxl RnVuYyAgKnRmID0gbWFrZU5vZGUoVGFibGVGdW5jKTsKKwlKc29uRnVuY0V4cHIgKmpmZSA9 IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJSnNvbkNvbW1vbiAqanNjb21tb247CisJY2hh cgkgICAqcm9vdFBhdGg7CisJYm9vbAkJaXNfbGF0ZXJhbDsKKworCWN4dC5wc3RhdGUgPSBw c3RhdGU7CisJY3h0LnRhYmxlID0ganQ7CisJY3h0LnRhYmxlZnVuYyA9IHRmOworCWN4dC5w YXRoTmFtZXMgPSBOSUw7CisKKwlyZWdpc3RlckFsbEpzb25UYWJsZUNvbHVtbnMoJmN4dCwg anQtPmNvbHVtbnMpOworCisJanNjb21tb24gPSBjb3B5T2JqZWN0KGp0LT5jb21tb24pOwor CWpzY29tbW9uLT5wYXRoc3BlYyA9IG1ha2VTdHJpbmdDb25zdChwc3RyZHVwKCIkIiksIC0x KTsKKworCWpmZS0+b3AgPSBJU19KU09OX1RBQkxFOworCWpmZS0+Y29tbW9uID0ganNjb21t b247CisJamZlLT5vbl9lcnJvciA9IGp0LT5vbl9lcnJvcjsKKwlqZmUtPmxvY2F0aW9uID0g anQtPmNvbW1vbi0+bG9jYXRpb247CisKKwkvKgorCSAqIFdlIG1ha2UgbGF0ZXJhbF9vbmx5 IG5hbWVzIG9mIHRoaXMgbGV2ZWwgdmlzaWJsZSwgd2hldGhlciBvciBub3QgdGhlCisJICog UmFuZ2VUYWJsZUZ1bmMgaXMgZXhwbGljaXRseSBtYXJrZWQgTEFURVJBTC4gIFRoaXMgaXMg bmVlZGVkIGZvciBTUUwKKwkgKiBzcGVjIGNvbXBsaWFuY2UgYW5kIHNlZW1zIHVzZWZ1bCBv biBjb252ZW5pZW5jZSBncm91bmRzIGZvciBhbGwKKwkgKiBmdW5jdGlvbnMgaW4gRlJPTS4K KwkgKgorCSAqIChMQVRFUkFMIGNhbid0IG5lc3Qgd2l0aGluIGEgc2luZ2xlIHBzdGF0ZSBs ZXZlbCwgc28gd2UgZG9uJ3QgbmVlZAorCSAqIHNhdmUvcmVzdG9yZSBsb2dpYyBoZXJlLikK KwkgKi8KKwlBc3NlcnQoIXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2ZSk7CisJcHN0YXRlLT5w X2xhdGVyYWxfYWN0aXZlID0gdHJ1ZTsKKworCXRmLT5mdW5jdHlwZSA9IFRGVF9KU09OX1RB QkxFOworCXRmLT5kb2NleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIGpm ZSwgRVhQUl9LSU5EX0ZST01fRlVOQ1RJT04pOworCisJY3h0LmNvbnRleHRJdGVtVHlwaWQg PSBleHByVHlwZSh0Zi0+ZG9jZXhwcik7CisKKwlpZiAoIUlzQShqdC0+Y29tbW9uLT5wYXRo c3BlYywgQV9Db25zdCkgfHwKKwkJY2FzdE5vZGUoQV9Db25zdCwganQtPmNvbW1vbi0+cGF0 aHNwZWMpLT52YWwubm9kZS50eXBlICE9IFRfU3RyaW5nKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJvbmx5IHN0cmluZyBjb25zdGFudHMgc3VwcG9ydGVkIGluIEpTT05fVEFCTEUgcGF0 aCBzcGVjaWZpY2F0aW9uIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJ CQkJCQkJCQlleHByTG9jYXRpb24oanQtPmNvbW1vbi0+cGF0aHNwZWMpKSkpOworCisJcm9v dFBhdGggPSBjYXN0Tm9kZShBX0NvbnN0LCBqdC0+Y29tbW9uLT5wYXRoc3BlYyktPnZhbC5z dmFsLnN2YWw7CisKKwl0Zi0+cGxhbiA9IChOb2RlICopIHRyYW5zZm9ybUpzb25UYWJsZUNv bHVtbnMoJmN4dCwganQtPmNvbHVtbnMsIHJvb3RQYXRoLAorCQkJCQkJCQkJCQkJICBqdC0+ Y29tbW9uLT5sb2NhdGlvbik7CisKKwl0Zi0+b3JkaW5hbGl0eWNvbCA9IC0xOwkJLyogdW5k ZWZpbmUgb3JkaW5hbGl0eSBjb2x1bW4gbnVtYmVyICovCisJdGYtPmxvY2F0aW9uID0ganQt PmxvY2F0aW9uOworCisJcHN0YXRlLT5wX2xhdGVyYWxfYWN0aXZlID0gZmFsc2U7CisKKwkv KgorCSAqIE1hcmsgdGhlIFJURSBhcyBMQVRFUkFMIGlmIHRoZSB1c2VyIHNhaWQgTEFURVJB TCBleHBsaWNpdGx5LCBvciBpZgorCSAqIHRoZXJlIGFyZSBhbnkgbGF0ZXJhbCBjcm9zcy1y ZWZlcmVuY2VzIGluIGl0LgorCSAqLworCWlzX2xhdGVyYWwgPSBqdC0+bGF0ZXJhbCB8fCBj b250YWluX3ZhcnNfb2ZfbGV2ZWwoKE5vZGUgKikgdGYsIDApOworCisJcmV0dXJuIGFkZFJh bmdlVGFibGVFbnRyeUZvclRhYmxlRnVuYyhwc3RhdGUsCisJCQkJCQkJCQkJICB0ZiwganQt PmFsaWFzLCBpc19sYXRlcmFsLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmMKaW5kZXggY2I5ZTE3N2I1ZS4uZTA2YzIzZDBkZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAgLTE5NzgsNyArMTk3OCw4IEBAIGFkZFJhbmdlVGFi bGVFbnRyeUZvclRhYmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICAgYm9v bCBpbkZyb21DbCkKIHsKIAlSYW5nZVRibEVudHJ5ICpydGUgPSBtYWtlTm9kZShSYW5nZVRi bEVudHJ5KTsKLQljaGFyCSAgICpyZWZuYW1lID0gYWxpYXMgPyBhbGlhcy0+YWxpYXNuYW1l IDogcHN0cmR1cCgieG1sdGFibGUiKTsKKwljaGFyCSAgICpyZWZuYW1lID0gYWxpYXMgPyBh bGlhcy0+YWxpYXNuYW1lIDoKKwkJcHN0cmR1cCh0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRB QkxFID8gInhtbHRhYmxlIiA6ICJqc29uX3RhYmxlIik7CiAJQWxpYXMJICAgKmVyZWY7CiAJ aW50CQkJbnVtYWxpYXNlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4 IDgyOWMwZjk0OTcuLjdjYzUwMjA4NjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMKQEAgLTE5OTIsNiArMTk5Miw5IEBAIEZpZ3VyZUNvbG5hbWVJbnRlcm5hbChOb2RlICpu b2RlLCBjaGFyICoqbmFtZSkKIAkJCQljYXNlIElTX0pTT05fRVhJU1RTOgogCQkJCQkqbmFt ZSA9ICJqc29uX2V4aXN0cyI7CiAJCQkJCXJldHVybiAyOworCQkJCWNhc2UgSVNfSlNPTl9U QUJMRToKKwkJCQkJKm5hbWUgPSAianNvbl90YWJsZSI7CisJCQkJCXJldHVybiAyOwogCQkJ fQogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRo X2V4ZWMuYwppbmRleCA3ODExZmEzMWUwLi5mMDA3OGI3ODc0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKQEAgLTYxLDkgKzYxLDExIEBACiAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5o IgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAicmVnZXgvcmVnZXgu aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGUu aCIKQEAgLTc0LDYgKzc2LDggQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRl ICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbnBhdGguaCIKKyNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2lu Y2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIK IApAQCAtMTU1LDYgKzE1OSw1NyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVmFsdWVMaXN0SXRl cmF0b3IKIAlMaXN0Q2VsbCAgICpuZXh0OwogfSBKc29uVmFsdWVMaXN0SXRlcmF0b3I7CiAK Ky8qIFN0cnVjdHVyZXMgZm9yIEpTT05fVEFCTEUgZXhlY3V0aW9uICAqLwordHlwZWRlZiBz dHJ1Y3QgSnNvblRhYmxlU2NhblN0YXRlIEpzb25UYWJsZVNjYW5TdGF0ZTsKK3R5cGVkZWYg c3RydWN0IEpzb25UYWJsZUpvaW5TdGF0ZSBKc29uVGFibGVKb2luU3RhdGU7CisKK3N0cnVj dCBKc29uVGFibGVTY2FuU3RhdGUKK3sKKwlKc29uVGFibGVTY2FuU3RhdGUgKnBhcmVudDsK KwlKc29uVGFibGVKb2luU3RhdGUgKm5lc3RlZDsKKwlNZW1vcnlDb250ZXh0IG1jeHQ7CisJ SnNvblBhdGggICAqcGF0aDsKKwlMaXN0CSAgICphcmdzOworCUpzb25WYWx1ZUxpc3QgZm91 bmQ7CisJSnNvblZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXI7CisJRGF0dW0JCWN1cnJlbnQ7CisJ aW50CQkJb3JkaW5hbDsKKwlib29sCQljdXJyZW50SXNOdWxsOworCWJvb2wJCWVycm9yT25F cnJvcjsKKwlib29sCQlhZHZhbmNlTmVzdGVkOworCWJvb2wJCXJlc2V0OworfTsKKworc3Ry dWN0IEpzb25UYWJsZUpvaW5TdGF0ZQoreworCXVuaW9uCisJeworCQlzdHJ1Y3QKKwkJewor CQkJSnNvblRhYmxlSm9pblN0YXRlICpsZWZ0OworCQkJSnNvblRhYmxlSm9pblN0YXRlICpy aWdodDsKKwkJCWJvb2wJCWFkdmFuY2VSaWdodDsKKwkJfQkJCWpvaW47CisJCUpzb25UYWJs ZVNjYW5TdGF0ZSBzY2FuOworCX0JCQl1OworCWJvb2wJCWlzX2pvaW47Cit9OworCisvKiBy YW5kb20gbnVtYmVyIHRvIGlkZW50aWZ5IEpzb25UYWJsZUNvbnRleHQgKi8KKyNkZWZpbmUg SlNPTl9UQUJMRV9DT05URVhUX01BR0lDCTQxODM1Mjg2NworCit0eXBlZGVmIHN0cnVjdCBK c29uVGFibGVDb250ZXh0Cit7CisJaW50CQkJbWFnaWM7CisJc3RydWN0CisJeworCQlFeHBy U3RhdGUgICpleHByOworCQlKc29uVGFibGVTY2FuU3RhdGUgKnNjYW47CisJfQkJICAgKmNv bGV4cHJzOworCUpzb25UYWJsZVNjYW5TdGF0ZSByb290OworCWJvb2wJCWVtcHR5OworfSBK c29uVGFibGVDb250ZXh0OworCiAvKiBzdHJpY3QvbGF4IGZsYWdzIGlzIGRlY29tcG9zZWQg aW50byBmb3VyIFt1bl13cmFwL2Vycm9yIGZsYWdzICovCiAjZGVmaW5lIGpzcFN0cmljdEFi c2Vuc2VPZkVycm9ycyhjeHQpCSghKGN4dCktPmxheE1vZGUpCiAjZGVmaW5lIGpzcEF1dG9V bndyYXAoY3h0KQkJCQkoKGN4dCktPmxheE1vZGUpCkBAIC0yNDUsNiArMzAwLDcgQEAgc3Rh dGljIEpzb25QYXRoRXhlY1Jlc3VsdCBnZXRBcnJheUluZGV4KEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwKIAkJCQkJCQkJCQlKc29uUGF0aEl0ZW0gKmpzcCwgSnNvbmJWYWx1ZSAqamIs IGludDMyICppbmRleCk7CiBzdGF0aWMgSnNvbkJhc2VPYmplY3RJbmZvIHNldEJhc2VPYmpl Y3QoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LAogCQkJCQkJCQkJCUpzb25iVmFsdWUgKmpi diwgaW50MzIgaWQpOworc3RhdGljIHZvaWQgSnNvblZhbHVlTGlzdENsZWFyKEpzb25WYWx1 ZUxpc3QgKmp2bCk7CiBzdGF0aWMgdm9pZCBKc29uVmFsdWVMaXN0QXBwZW5kKEpzb25WYWx1 ZUxpc3QgKmp2bCwgSnNvbmJWYWx1ZSAqamJ2KTsKIHN0YXRpYyBpbnQJSnNvblZhbHVlTGlz dExlbmd0aChjb25zdCBKc29uVmFsdWVMaXN0ICpqdmwpOwogc3RhdGljIGJvb2wgSnNvblZh bHVlTGlzdElzRW1wdHkoSnNvblZhbHVlTGlzdCAqanZsKTsKQEAgLTI2Miw2ICszMTgsMTIg QEAgc3RhdGljIEpzb25iVmFsdWUgKndyYXBJdGVtc0luQXJyYXkoY29uc3QgSnNvblZhbHVl TGlzdCAqaXRlbXMpOwogc3RhdGljIGludAljb21wYXJlRGF0ZXRpbWUoRGF0dW0gdmFsMSwg T2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwgT2lkIHR5cGlkMiwKIAkJCQkJCQlib29sIHVzZVR6 LCBib29sICpoYXZlX2Vycm9yKTsKIAorCitzdGF0aWMgSnNvblRhYmxlSm9pblN0YXRlICpK c29uVGFibGVJbml0UGxhblN0YXRlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwKKwkJCQkJCQkJ CU5vZGUgKnBsYW4sIEpzb25UYWJsZVNjYW5TdGF0ZSAqcGFyZW50KTsKK3N0YXRpYyBib29s IEpzb25UYWJsZU5leHRSb3coSnNvblRhYmxlU2NhblN0YXRlICpzY2FuKTsKKworCiAvKioq KioqKioqKioqKioqKioqIFVzZXIgaW50ZXJmYWNlIHRvIEpzb25QYXRoIGV4ZWN1dG9yICoq KioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtMjQ1OCw2ICsyNTIwLDEzIEBAIHNldEJh c2VPYmplY3QoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uYlZhbHVlICpqYnYsIGlu dDMyIGlkKQogCXJldHVybiBiYXNlT2JqZWN0OwogfQogCitzdGF0aWMgdm9pZAorSnNvblZh bHVlTGlzdENsZWFyKEpzb25WYWx1ZUxpc3QgKmp2bCkKK3sKKwlqdmwtPnNpbmdsZXRvbiA9 IE5VTEw7CisJanZsLT5saXN0ID0gTlVMTDsKK30KKwogc3RhdGljIHZvaWQKIEpzb25WYWx1 ZUxpc3RBcHBlbmQoSnNvblZhbHVlTGlzdCAqanZsLCBKc29uYlZhbHVlICpqYnYpCiB7CkBA IC0zMDY3LDMgKzMxMzYsMzcwIEBAIEpzb25JdGVtRnJvbURhdHVtKERhdHVtIHZhbCwgT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzb25iVmFsdWUgKnJlcykKIAkJCQkJCQkiY2FzdGVk IHRvIHN1cHBvcnRlZCBqc29ucGF0aCB0eXBlcy4iKSkpOwogCX0KIH0KKworLyoqKioqKioq KioqKioqKioqKioqKioqKiBKU09OX1RBQkxFIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisKKy8qCisgKiBSZXR1cm5zIHByaXZhdGUgZGF0YSBmcm9tIGV4ZWN1 dG9yIHN0YXRlLiBFbnN1cmUgdmFsaWRpdHkgYnkgY2hlY2sgd2l0aAorICogTUFHSUMgbnVt YmVyLgorICovCitzdGF0aWMgaW5saW5lIEpzb25UYWJsZUNvbnRleHQgKgorR2V0SnNvblRh YmxlQ29udGV4dChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICpmbmFt ZSkKK3sKKwlKc29uVGFibGVDb250ZXh0ICpyZXN1bHQ7CisKKwlpZiAoIUlzQShzdGF0ZSwg VGFibGVGdW5jU2NhblN0YXRlKSkKKwkJZWxvZyhFUlJPUiwgIiVzIGNhbGxlZCB3aXRoIGlu dmFsaWQgVGFibGVGdW5jU2NhblN0YXRlIiwgZm5hbWUpOworCXJlc3VsdCA9IChKc29uVGFi bGVDb250ZXh0ICopIHN0YXRlLT5vcGFxdWU7CisJaWYgKHJlc3VsdC0+bWFnaWMgIT0gSlNP Tl9UQUJMRV9DT05URVhUX01BR0lDKQorCQllbG9nKEVSUk9SLCAiJXMgY2FsbGVkIHdpdGgg aW52YWxpZCBUYWJsZUZ1bmNTY2FuU3RhdGUiLCBmbmFtZSk7CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCisvKiBSZWN1cnNpdmVseSBpbml0aWFsaXplIEpTT05fVEFCTEUgc2NhbiBzdGF0 ZSAqLworc3RhdGljIHZvaWQKK0pzb25UYWJsZUluaXRTY2FuU3RhdGUoSnNvblRhYmxlQ29u dGV4dCAqY3h0LCBKc29uVGFibGVTY2FuU3RhdGUgKnNjYW4sCisJCQkJCSAgIEpzb25UYWJs ZVBhcmVudE5vZGUgKm5vZGUsIEpzb25UYWJsZVNjYW5TdGF0ZSAqcGFyZW50LAorCQkJCQkg ICBMaXN0ICphcmdzLCBNZW1vcnlDb250ZXh0IG1jeHQpCit7CisJaW50CQkJaTsKKworCXNj YW4tPnBhcmVudCA9IHBhcmVudDsKKwlzY2FuLT5lcnJvck9uRXJyb3IgPSBub2RlLT5lcnJv ck9uRXJyb3I7CisJc2Nhbi0+cGF0aCA9IERhdHVtR2V0SnNvblBhdGhQKG5vZGUtPnBhdGgt PmNvbnN0dmFsdWUpOworCXNjYW4tPmFyZ3MgPSBhcmdzOworCXNjYW4tPm1jeHQgPSBBbGxv Y1NldENvbnRleHRDcmVhdGUobWN4dCwgIkpzb25UYWJsZUNvbnRleHQiLAorCQkJCQkJCQkJ ICAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJc2Nhbi0+bmVzdGVkID0gbm9kZS0+Y2hp bGQgPworCQlKc29uVGFibGVJbml0UGxhblN0YXRlKGN4dCwgbm9kZS0+Y2hpbGQsIHNjYW4p IDogTlVMTDsKKwlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCXNj YW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOworCisJZm9yIChpID0gbm9kZS0+Y29sTWluOyBp IDw9IG5vZGUtPmNvbE1heDsgaSsrKQorCQljeHQtPmNvbGV4cHJzW2ldLnNjYW4gPSBzY2Fu OworfQorCisvKiBSZWN1cnNpdmVseSBpbml0aWFsaXplIEpTT05fVEFCTEUgc2NhbiBzdGF0 ZSAqLworc3RhdGljIEpzb25UYWJsZUpvaW5TdGF0ZSAqCitKc29uVGFibGVJbml0UGxhblN0 YXRlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgTm9kZSAqcGxhbiwKKwkJCQkJICAgSnNvblRh YmxlU2NhblN0YXRlICpwYXJlbnQpCit7CisJSnNvblRhYmxlSm9pblN0YXRlICpzdGF0ZSA9 IHBhbGxvYzAoc2l6ZW9mKCpzdGF0ZSkpOworCisJaWYgKElzQShwbGFuLCBKc29uVGFibGVT aWJsaW5nTm9kZSkpCisJeworCQlKc29uVGFibGVTaWJsaW5nTm9kZSAqam9pbiA9IGNhc3RO b2RlKEpzb25UYWJsZVNpYmxpbmdOb2RlLCBwbGFuKTsKKworCQlzdGF0ZS0+aXNfam9pbiA9 IHRydWU7CisJCXN0YXRlLT51LmpvaW4ubGVmdCA9IEpzb25UYWJsZUluaXRQbGFuU3RhdGUo Y3h0LCBqb2luLT5sYXJnLCBwYXJlbnQpOworCQlzdGF0ZS0+dS5qb2luLnJpZ2h0ID0gSnNv blRhYmxlSW5pdFBsYW5TdGF0ZShjeHQsIGpvaW4tPnJhcmcsIHBhcmVudCk7CisJfQorCWVs c2UKKwl7CisJCUpzb25UYWJsZVBhcmVudE5vZGUgKm5vZGUgPSBjYXN0Tm9kZShKc29uVGFi bGVQYXJlbnROb2RlLCBwbGFuKTsKKworCQlzdGF0ZS0+aXNfam9pbiA9IGZhbHNlOworCisJ CUpzb25UYWJsZUluaXRTY2FuU3RhdGUoY3h0LCAmc3RhdGUtPnUuc2Nhbiwgbm9kZSwgcGFy ZW50LAorCQkJCQkJCSAgIHBhcmVudC0+YXJncywgcGFyZW50LT5tY3h0KTsKKwl9CisKKwly ZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBKc29uVGFibGVJbml0T3BhcXVlCisgKgkJRmls bCBpbiBUYWJsZUZ1bmNTY2FuU3RhdGUtPm9wYXF1ZSBmb3IgSnNvblRhYmxlIHByb2Nlc3Nv cgorICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlSW5pdE9wYXF1ZShUYWJsZUZ1bmNTY2Fu U3RhdGUgKnN0YXRlLCBpbnQgbmF0dHMpCit7CisJSnNvblRhYmxlQ29udGV4dCAqY3h0Owor CVBsYW5TdGF0ZSAgKnBzID0gJnN0YXRlLT5zcy5wczsKKwlUYWJsZUZ1bmNTY2FuICAqdGZz ID0gY2FzdE5vZGUoVGFibGVGdW5jU2NhbiwgcHMtPnBsYW4pOworCVRhYmxlRnVuYyAgKnRm ID0gdGZzLT50YWJsZWZ1bmM7CisJSnNvbkV4cHIgICAqY2kgPSBjYXN0Tm9kZShKc29uRXhw ciwgdGYtPmRvY2V4cHIpOworCUpzb25UYWJsZVBhcmVudE5vZGUgKnJvb3QgPSBjYXN0Tm9k ZShKc29uVGFibGVQYXJlbnROb2RlLCB0Zi0+cGxhbik7CisJTGlzdAkgICAqYXJncyA9IE5J TDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQlpOworCisJY3h0ID0gcGFsbG9jMChzaXpl b2YoSnNvblRhYmxlQ29udGV4dCkpOworCWN4dC0+bWFnaWMgPSBKU09OX1RBQkxFX0NPTlRF WFRfTUFHSUM7CisKKwlpZiAoY2ktPnBhc3NpbmdfdmFsdWVzKQorCXsKKwkJTGlzdENlbGwg ICAqZXhwcmxjOworCQlMaXN0Q2VsbCAgICpuYW1lbGM7CisKKwkJZm9yYm90aChleHBybGMs IGNpLT5wYXNzaW5nX3ZhbHVlcywKKwkJCQluYW1lbGMsIGNpLT5wYXNzaW5nX25hbWVzKQor CQl7CisJCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGV4cHJsYyk7CisJCQlT dHJpbmcJICAgKm5hbWUgPSBsZmlyc3Rfbm9kZShTdHJpbmcsIG5hbWVsYyk7CisJCQlKc29u UGF0aFZhcmlhYmxlRXZhbENvbnRleHQgKnZhciA9IHBhbGxvYyhzaXplb2YoKnZhcikpOwor CisJCQl2YXItPm5hbWUgPSBwc3RyZHVwKG5hbWUtPnN2YWwpOworCQkJdmFyLT50eXBpZCA9 IGV4cHJUeXBlKChOb2RlICopIGV4cHIpOworCQkJdmFyLT50eXBtb2QgPSBleHByVHlwbW9k KChOb2RlICopIGV4cHIpOworCQkJdmFyLT5lc3RhdGUgPSBFeGVjSW5pdEV4cHIoZXhwciwg cHMpOworCQkJdmFyLT5lY29udGV4dCA9IHBzLT5wc19FeHByQ29udGV4dDsKKwkJCXZhci0+ bWN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCQkJdmFyLT5ldmFsdWF0ZWQgPSBmYWxz ZTsKKwkJCXZhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJCQl2YXItPmlzbnVsbCA9IHRydWU7 CisKKwkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIHZhcik7CisJCX0KKwl9CisKKwljeHQtPmNv bGV4cHJzID0gcGFsbG9jKHNpemVvZigqY3h0LT5jb2xleHBycykgKgorCQkJCQkJICAgbGlz dF9sZW5ndGgodGYtPmNvbHZhbGV4cHJzKSk7CisKKwlKc29uVGFibGVJbml0U2NhblN0YXRl KGN4dCwgJmN4dC0+cm9vdCwgcm9vdCwgTlVMTCwgYXJncywKKwkJCQkJCSAgIEN1cnJlbnRN ZW1vcnlDb250ZXh0KTsKKworCWkgPSAwOworCisJZm9yZWFjaChsYywgdGYtPmNvbHZhbGV4 cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJY3h0LT5jb2xl eHByc1tpXS5leHByID0KKwkJCUV4ZWNJbml0RXhwcldpdGhDYXNlVmFsdWUoZXhwciwgcHMs CisJCQkJCQkJCQkgICZjeHQtPmNvbGV4cHJzW2ldLnNjYW4tPmN1cnJlbnQsCisJCQkJCQkJ CQkgICZjeHQtPmNvbGV4cHJzW2ldLnNjYW4tPmN1cnJlbnRJc051bGwpOworCisJCWkrKzsK Kwl9CisKKwlzdGF0ZS0+b3BhcXVlID0gY3h0OworfQorCisvKiBSZXNldCBzY2FuIGl0ZXJh dG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGl0ZW0gbGlzdCAqLworc3RhdGljIHZvaWQK K0pzb25UYWJsZVJlc2NhbihKc29uVGFibGVTY2FuU3RhdGUgKnNjYW4pCit7CisJSnNvblZh bHVlTGlzdEluaXRJdGVyYXRvcigmc2Nhbi0+Zm91bmQsICZzY2FuLT5pdGVyKTsKKwlzY2Fu LT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCXNjYW4tPmN1cnJlbnRJc051 bGwgPSB0cnVlOworCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBmYWxzZTsKKwlzY2FuLT5vcmRp bmFsID0gMDsKK30KKworLyogUmVzZXQgY29udGV4dCBpdGVtIG9mIGEgc2NhbiwgZXhlY3V0 ZSBKU09OIHBhdGggYW5kIHJlc2V0IGEgc2NhbiAqLworc3RhdGljIHZvaWQKK0pzb25UYWJs ZVJlc2V0Q29udGV4dEl0ZW0oSnNvblRhYmxlU2NhblN0YXRlICpzY2FuLCBEYXR1bSBpdGVt KQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUpzb25QYXRoRXhlY1Jlc3VsdCByZXM7 CisJSnNvbmIJCSpqcyA9IChKc29uYiAqKSBEYXR1bUdldEpzb25iUChpdGVtKTsKKworCUpz b25WYWx1ZUxpc3RDbGVhcigmc2Nhbi0+Zm91bmQpOworCisJTWVtb3J5Q29udGV4dFJlc2V0 T25seShzY2FuLT5tY3h0KTsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhz Y2FuLT5tY3h0KTsKKworCXJlcyA9IGV4ZWN1dGVKc29uUGF0aChzY2FuLT5wYXRoLCBzY2Fu LT5hcmdzLCBFdmFsSnNvblBhdGhWYXIsIGpzLAorCQkJCQkJICBzY2FuLT5lcnJvck9uRXJy b3IsICZzY2FuLT5mb3VuZCwgZmFsc2UgLyogRklYTUUgKi8pOworCisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7CisKKwlpZiAoanBlcklzRXJyb3IocmVzKSkKKwl7CisJCUFz c2VydCghc2Nhbi0+ZXJyb3JPbkVycm9yKTsKKwkJSnNvblZhbHVlTGlzdENsZWFyKCZzY2Fu LT5mb3VuZCk7CS8qIEVNUFRZIE9OIEVSUk9SIGNhc2UgKi8KKwl9CisKKwlKc29uVGFibGVS ZXNjYW4oc2Nhbik7Cit9CisKKy8qCisgKiBKc29uVGFibGVTZXREb2N1bWVudAorICoJCUlu c3RhbGwgdGhlIGlucHV0IGRvY3VtZW50CisgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVT ZXREb2N1bWVudChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBEYXR1bSB2YWx1ZSkKK3sK KwlKc29uVGFibGVDb250ZXh0ICpjeHQgPSBHZXRKc29uVGFibGVDb250ZXh0KHN0YXRlLCAi SnNvblRhYmxlU2V0RG9jdW1lbnQiKTsKKworCUpzb25UYWJsZVJlc2V0Q29udGV4dEl0ZW0o JmN4dC0+cm9vdCwgdmFsdWUpOworfQorCisvKgorICogRmV0Y2ggbmV4dCByb3cgZnJvbSBh IHVuaW9uIGpvaW5lZCBzY2FuLgorICoKKyAqIFJldHVybmVkIGZhbHNlIGF0IHRoZSBlbmQg b2YgYSBzY2FuLCB0cnVlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK0pzb25UYWJs ZU5leHRKb2luUm93KEpzb25UYWJsZUpvaW5TdGF0ZSAqc3RhdGUpCit7CisJaWYgKCFzdGF0 ZS0+aXNfam9pbikKKwkJcmV0dXJuIEpzb25UYWJsZU5leHRSb3coJnN0YXRlLT51LnNjYW4p OworCisJaWYgKCFzdGF0ZS0+dS5qb2luLmFkdmFuY2VSaWdodCkKKwl7CisJCS8qIGZldGNo IG5leHQgb3V0ZXIgcm93ICovCisJCWlmIChKc29uVGFibGVOZXh0Sm9pblJvdyhzdGF0ZS0+ dS5qb2luLmxlZnQpKQorCQkJcmV0dXJuIHRydWU7CisKKwkJc3RhdGUtPnUuam9pbi5hZHZh bmNlUmlnaHQgPSB0cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAqLworCX0KKworCS8qIGZldGNo IG5leHQgaW5uZXIgcm93ICovCisJcmV0dXJuIEpzb25UYWJsZU5leHRKb2luUm93KHN0YXRl LT51LmpvaW4ucmlnaHQpOworfQorCisvKiBSZWN1cnNpdmVseSBzZXQgJ3Jlc2V0JyBmbGFn IG9mIHNjYW4gYW5kIGl0cyBjaGlsZCBub2RlcyAqLworc3RhdGljIHZvaWQKK0pzb25UYWJs ZUpvaW5SZXNldChKc29uVGFibGVKb2luU3RhdGUgKnN0YXRlKQoreworCWlmIChzdGF0ZS0+ aXNfam9pbikKKwl7CisJCUpzb25UYWJsZUpvaW5SZXNldChzdGF0ZS0+dS5qb2luLmxlZnQp OworCQlKc29uVGFibGVKb2luUmVzZXQoc3RhdGUtPnUuam9pbi5yaWdodCk7CisJCXN0YXRl LT51LmpvaW4uYWR2YW5jZVJpZ2h0ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCXN0YXRl LT51LnNjYW4ucmVzZXQgPSB0cnVlOworCQlzdGF0ZS0+dS5zY2FuLmFkdmFuY2VOZXN0ZWQg PSBmYWxzZTsKKworCQlpZiAoc3RhdGUtPnUuc2Nhbi5uZXN0ZWQpCisJCQlKc29uVGFibGVK b2luUmVzZXQoc3RhdGUtPnUuc2Nhbi5uZXN0ZWQpOworCX0KK30KKworLyoKKyAqIEZldGNo IG5leHQgcm93IGZyb20gYSBzaW1wbGUgc2NhbiB3aXRoIG91dGVyIGpvaW5lZCBuZXN0ZWQg c3Vic2NhbnMuCisgKgorICogUmV0dXJuZWQgZmFsc2UgYXQgdGhlIGVuZCBvZiBhIHNjYW4s IHRydWUgb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorSnNvblRhYmxlTmV4dFJvdyhK c29uVGFibGVTY2FuU3RhdGUgKnNjYW4pCit7CisJSnNvbmJWYWx1ZSAqamJ2OworCU1lbW9y eUNvbnRleHQgb2xkY3h0OworCisJLyogcmVzZXQgY29udGV4dCBpdGVtIGlmIHJlcXVlc3Rl ZCAqLworCWlmIChzY2FuLT5yZXNldCkKKwl7CisJCUFzc2VydCghc2Nhbi0+cGFyZW50LT5j dXJyZW50SXNOdWxsKTsKKwkJSnNvblRhYmxlUmVzZXRDb250ZXh0SXRlbShzY2FuLCBzY2Fu LT5wYXJlbnQtPmN1cnJlbnQpOworCQlzY2FuLT5yZXNldCA9IGZhbHNlOworCX0KKworCWlm IChzY2FuLT5hZHZhbmNlTmVzdGVkKQorCXsKKwkJLyogZmV0Y2ggbmV4dCBuZXN0ZWQgcm93 ICovCisJCWlmIChKc29uVGFibGVOZXh0Sm9pblJvdyhzY2FuLT5uZXN0ZWQpKQorCQkJcmV0 dXJuIHRydWU7CisKKwkJc2Nhbi0+YWR2YW5jZU5lc3RlZCA9IGZhbHNlOworCX0KKworCS8q IGZldGNoIG5leHQgcm93ICovCisJamJ2ID0gSnNvblZhbHVlTGlzdE5leHQoJnNjYW4tPmZv dW5kLCAmc2Nhbi0+aXRlcik7CisKKwlpZiAoIWpidikKKwl7CisJCXNjYW4tPmN1cnJlbnQg PSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCXNjYW4tPmN1cnJlbnRJc051bGwgPSB0cnVl OworCQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCisJfQorCisJLyogc2V0IGN1 cnJlbnQgcm93IGl0ZW0gKi8KKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc2Nh bi0+bWN4dCk7CisJc2Nhbi0+Y3VycmVudCA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVU b0pzb25iKGpidikpOworCXNjYW4tPmN1cnJlbnRJc051bGwgPSBmYWxzZTsKKwlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCXNjYW4tPm9yZGluYWwrKzsKKworCWlmIChz Y2FuLT5uZXN0ZWQpCisJeworCQlKc29uVGFibGVKb2luUmVzZXQoc2Nhbi0+bmVzdGVkKTsK KwkJc2Nhbi0+YWR2YW5jZU5lc3RlZCA9IEpzb25UYWJsZU5leHRKb2luUm93KHNjYW4tPm5l c3RlZCk7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBKc29uVGFibGVGZXRj aFJvdworICoJCVByZXBhcmUgdGhlIG5leHQgImN1cnJlbnQiIHR1cGxlIGZvciB1cGNvbWlu ZyBHZXRWYWx1ZSBjYWxscy4KKyAqCQlSZXR1cm5zIEZBTFNFIGlmIHRoZSByb3ctZmlsdGVy IGV4cHJlc3Npb24gcmV0dXJuZWQgbm8gbW9yZSByb3dzLgorICovCitzdGF0aWMgYm9vbAor SnNvblRhYmxlRmV0Y2hSb3coVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSkKK3sKKwlKc29u VGFibGVDb250ZXh0ICpjeHQgPSBHZXRKc29uVGFibGVDb250ZXh0KHN0YXRlLCAiSnNvblRh YmxlRmV0Y2hSb3ciKTsKKworCWlmIChjeHQtPmVtcHR5KQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gSnNvblRhYmxlTmV4dFJvdygmY3h0LT5yb290KTsKK30KKworLyoKKyAqIEpz b25UYWJsZUdldFZhbHVlCisgKgkJUmV0dXJuIHRoZSB2YWx1ZSBmb3IgY29sdW1uIG51bWJl ciAnY29sbnVtJyBmb3IgdGhlIGN1cnJlbnQgcm93LgorICoKKyAqIFRoaXMgbGVha3MgbWVt b3J5LCBzbyBiZSBzdXJlIHRvIHJlc2V0IG9mdGVuIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0 J3MKKyAqIGNhbGxlZC4KKyAqLworc3RhdGljIERhdHVtCitKc29uVGFibGVHZXRWYWx1ZShU YWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29sbnVtLAorCQkJCSAgT2lkIHR5cGlk LCBpbnQzMiB0eXBtb2QsIGJvb2wgKmlzbnVsbCkKK3sKKwlKc29uVGFibGVDb250ZXh0ICpj eHQgPSBHZXRKc29uVGFibGVDb250ZXh0KHN0YXRlLCAiSnNvblRhYmxlR2V0VmFsdWUiKTsK KwlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7 CisJRXhwclN0YXRlICAqZXN0YXRlID0gY3h0LT5jb2xleHByc1tjb2xudW1dLmV4cHI7CisJ SnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gY3h0LT5jb2xleHByc1tjb2xudW1dLnNjYW47 CisJRGF0dW0JCXJlc3VsdDsKKworCWlmIChzY2FuLT5jdXJyZW50SXNOdWxsKSAvKiBOVUxM IGZyb20gb3V0ZXIvdW5pb24gam9pbiAqLworCXsKKwkJcmVzdWx0ID0gKERhdHVtKSAwOwor CQkqaXNudWxsID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoZXN0YXRlKQkvKiByZWd1bGFyIGNv bHVtbiAqLworCXsKKwkJcmVzdWx0ID0gRXhlY0V2YWxFeHByKGVzdGF0ZSwgZWNvbnRleHQs IGlzbnVsbCk7CisJfQorCWVsc2UKKwl7CisJCXJlc3VsdCA9IEludDMyR2V0RGF0dW0oc2Nh bi0+b3JkaW5hbCk7CS8qIG9yZGluYWxpdHkgY29sdW1uICovCisJCSppc251bGwgPSBmYWxz ZTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogSnNvblRhYmxlRGVzdHJv eU9wYXF1ZQorICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlRGVzdHJveU9wYXF1ZShUYWJs ZUZ1bmNTY2FuU3RhdGUgKnN0YXRlKQoreworCUpzb25UYWJsZUNvbnRleHQgKmN4dCA9IEdl dEpzb25UYWJsZUNvbnRleHQoc3RhdGUsICJKc29uVGFibGVEZXN0cm95T3BhcXVlIik7CisK KwkvKiBub3QgdmFsaWQgYW55bW9yZSAqLworCWN4dC0+bWFnaWMgPSAwOworCisJc3RhdGUt Pm9wYXF1ZSA9IE5VTEw7Cit9CisKK2NvbnN0IFRhYmxlRnVuY1JvdXRpbmUgSnNvbmJUYWJs ZVJvdXRpbmUgPQoreworCUpzb25UYWJsZUluaXRPcGFxdWUsCisJSnNvblRhYmxlU2V0RG9j dW1lbnQsCisJTlVMTCwKKwlOVUxMLAorCU5VTEwsCisJSnNvblRhYmxlRmV0Y2hSb3csCisJ SnNvblRhYmxlR2V0VmFsdWUsCisJSnNvblRhYmxlRGVzdHJveU9wYXF1ZQorfTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBmYzM2MTdmNTUwLi5mNGM4MTBjODY3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC00OTksNiArNDk5LDggQEAgc3Rh dGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwogc3RhdGljIHZvaWQg Z2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpOwogc3Rh dGljIHZvaWQgZ2V0X2pzb25fcGF0aF9zcGVjKE5vZGUgKnBhdGhfc3BlYywgZGVwYXJzZV9j b250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgIGJvb2wgc2hvd2ltcGxpY2l0KTsKK3N0YXRp YyB2b2lkIGdldF9qc29uX3RhYmxlX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgSnNvblRhYmxl UGFyZW50Tm9kZSAqbm9kZSwKKwkJCQkJCQkJICAgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 LCBib29sIHNob3dpbXBsaWNpdCk7CiAKICNkZWZpbmUgb25seV9tYXJrZXIocnRlKSAgKChy dGUpLT5pbmggPyAiIiA6ICJPTkxZICIpCiAKQEAgLTg0NjgsNyArODQ3MCw4IEBAIGdldF9q c29uX2JlaGF2aW9yKEpzb25CZWhhdmlvciAqYmVoYXZpb3IsIGRlcGFyc2VfY29udGV4dCAq Y29udGV4dCwKIC8qCiAgKiBnZXRfanNvbl9leHByX29wdGlvbnMKICAqCi0gKiBQYXJzZSBi YWNrIGNvbW1vbiBvcHRpb25zIGZvciBKU09OX1FVRVJZLCBKU09OX1ZBTFVFLCBKU09OX0VY SVNUUy4KKyAqIFBhcnNlIGJhY2sgY29tbW9uIG9wdGlvbnMgZm9yIEpTT05fUVVFUlksIEpT T05fVkFMVUUsIEpTT05fRVhJU1RTIGFuZAorICogSlNPTl9UQUJMRSBjb2x1bW5zLgogICov CiBzdGF0aWMgdm9pZAogZ2V0X2pzb25fZXhwcl9vcHRpb25zKEpzb25FeHByICpqc2V4cHIs IGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKQEAgLTk3MTUsNiArOTcxOCw5IEBAIGdldF9y dWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQlj YXNlIElTX0pTT05fRVhJU1RTOgogCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICJKU09OX0VYSVNUUygiKTsKIAkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJ ZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgSnNvbkV4cHIgdHlwZTogJWQiLCBqZXhwci0+b3Ap OworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQkJZ2V0X3J1bGVfZXhwcihqZXhwci0+Zm9y bWF0dGVkX2V4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CkBAIC0xMDk4OSwxNiArMTA5 OTUsMTQgQEAgZ2V0X3N1YmxpbmtfZXhwcihTdWJMaW5rICpzdWJsaW5rLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQpCiAKIAogLyogLS0tLS0tLS0tLQotICogZ2V0X3RhYmxlZnVuYwkJ CS0gUGFyc2UgYmFjayBhIHRhYmxlIGZ1bmN0aW9uCisgKiBnZXRfeG1sdGFibGUJCQktIFBh cnNlIGJhY2sgYSBYTUxUQUJMRSBmdW5jdGlvbgogICogLS0tLS0tLS0tLQogICovCiBzdGF0 aWMgdm9pZAotZ2V0X3RhYmxlZnVuYyhUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQorZ2V0X3htbHRhYmxlKFRhYmxlRnVuYyAq dGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCiB7CiAJ U3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CiAKLQkvKiBYTUxUQUJMRSBpcyB0aGUg b25seSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbi4gICovCi0KIAlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGJ1ZiwgIlhNTFRBQkxFKCIpOwogCiAJaWYgKHRmLT5uc191cmlzICE9IE5JTCkK QEAgLTExMDg5LDYgKzExMDkzLDIyMCBAQCBnZXRfdGFibGVmdW5jKFRhYmxlRnVuYyAqdGYs IGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCiAJYXBwZW5k U3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOwogfQogCisvKgorICogZ2V0X2pzb25fbmVzdGVk X2NvbHVtbnMgLSBQYXJzZSBiYWNrIG5lc3RlZCBKU09OX1RBQkxFIGNvbHVtbnMKKyAqLwor c3RhdGljIHZvaWQKK2dldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5zKFRhYmxlRnVuYyAq dGYsIE5vZGUgKm5vZGUsCisJCQkJCQkJICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJv b2wgc2hvd2ltcGxpY2l0LAorCQkJCQkJCSAgYm9vbCBuZWVkY29tbWEpCit7CisJaWYgKElz QShub2RlLCBKc29uVGFibGVTaWJsaW5nTm9kZSkpCisJeworCQlKc29uVGFibGVTaWJsaW5n Tm9kZSAqbiA9IChKc29uVGFibGVTaWJsaW5nTm9kZSAqKSBub2RlOworCisJCWdldF9qc29u X3RhYmxlX25lc3RlZF9jb2x1bW5zKHRmLCBuLT5sYXJnLCBjb250ZXh0LCBzaG93aW1wbGlj aXQsCisJCQkJCQkJCQkgIG5lZWRjb21tYSk7CisJCWdldF9qc29uX3RhYmxlX25lc3RlZF9j b2x1bW5zKHRmLCBuLT5yYXJnLCBjb250ZXh0LCBzaG93aW1wbGljaXQsIHRydWUpOworCX0K KwllbHNlCisJeworCQkgSnNvblRhYmxlUGFyZW50Tm9kZSAqbiA9IGNhc3ROb2RlKEpzb25U YWJsZVBhcmVudE5vZGUsIG5vZGUpOworCisJCSBpZiAobmVlZGNvbW1hKQorCQkJIGFwcGVu ZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJywnKTsKKworCQkgYXBwZW5kU3RyaW5n SW5mb0NoYXIoY29udGV4dC0+YnVmLCAnICcpOworCQkgYXBwZW5kQ29udGV4dEtleXdvcmQo Y29udGV4dCwgICJORVNURUQgUEFUSCAiLCAwLCAwLCAwKTsKKwkJIGdldF9jb25zdF9leHBy KG4tPnBhdGgsIGNvbnRleHQsIC0xKTsKKwkJIGdldF9qc29uX3RhYmxlX2NvbHVtbnModGYs IG4sIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisJfQorfQorCisvKgorICogZ2V0X2pzb25f dGFibGVfY29sdW1ucyAtIFBhcnNlIGJhY2sgSlNPTl9UQUJMRSBjb2x1bW5zCisgKi8KK3N0 YXRpYyB2b2lkCitnZXRfanNvbl90YWJsZV9jb2x1bW5zKFRhYmxlRnVuYyAqdGYsIEpzb25U YWJsZVBhcmVudE5vZGUgKm5vZGUsCisJCQkJCSAgIGRlcGFyc2VfY29udGV4dCAqY29udGV4 dCwgYm9vbCBzaG93aW1wbGljaXQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5i dWY7CisJSnNvbkV4cHIgICAqamV4cHIgPSBjYXN0Tm9kZShKc29uRXhwciwgdGYtPmRvY2V4 cHIpOworCUxpc3RDZWxsICAgKmxjX2NvbG5hbWU7CisJTGlzdENlbGwgICAqbGNfY29sdHlw ZTsKKwlMaXN0Q2VsbCAgICpsY19jb2x0eXBtb2Q7CisJTGlzdENlbGwgICAqbGNfY29sdmFy ZXhwcjsKKwlpbnQJCQljb2xudW0gPSAwOworCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnICcpOworCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJDT0xVTU5TICgiLCAw LCAwLCAwKTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5p bmRlbnRMZXZlbCArPSBQUkVUVFlJTkRFTlRfVkFSOworCisJZm9yZm91cihsY19jb2xuYW1l LCB0Zi0+Y29sbmFtZXMsCisJCQlsY19jb2x0eXBlLCB0Zi0+Y29sdHlwZXMsCisJCQlsY19j b2x0eXBtb2QsIHRmLT5jb2x0eXBtb2RzLAorCQkJbGNfY29sdmFyZXhwciwgdGYtPmNvbHZh bGV4cHJzKQorCXsKKwkJY2hhcgkgICAqY29sbmFtZSA9IHN0clZhbChsZmlyc3QobGNfY29s bmFtZSkpOworCQlKc29uRXhwciAgICpjb2xleHByOworCQlPaWQJCQl0eXBpZDsKKwkJaW50 MzIJCXR5cG1vZDsKKwkJYm9vbAkJb3JkaW5hbGl0eTsKKwkJSnNvbkJlaGF2aW9yVHlwZSBk ZWZhdWx0X2JlaGF2aW9yOworCisJCXR5cGlkID0gbGZpcnN0X29pZChsY19jb2x0eXBlKTsK KwkJdHlwbW9kID0gbGZpcnN0X2ludChsY19jb2x0eXBtb2QpOworCQljb2xleHByID0gY2Fz dE5vZGUoSnNvbkV4cHIsIGxmaXJzdChsY19jb2x2YXJleHByKSk7CisKKwkJaWYgKGNvbG51 bSA8IG5vZGUtPmNvbE1pbikKKwkJeworCQkJY29sbnVtKys7CisJCQljb250aW51ZTsKKwkJ fQorCisJCWlmIChjb2xudW0gPiBub2RlLT5jb2xNYXgpCisJCQlicmVhazsKKworCQlpZiAo Y29sbnVtID4gbm9kZS0+Y29sTWluKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICIsICIpOworCisJCWNvbG51bSsrOworCisJCW9yZGluYWxpdHkgPSAhY29sZXhwcjsKKwor CQlhcHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisKKwkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICIlcyAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sbmFtZSks CisJCQkJCQkgb3JkaW5hbGl0eSA/ICJGT1IgT1JESU5BTElUWSIgOgorCQkJCQkJIGZvcm1h dF90eXBlX3dpdGhfdHlwZW1vZCh0eXBpZCwgdHlwbW9kKSk7CisJCWlmIChvcmRpbmFsaXR5 KQorCQkJY29udGludWU7CisKKwkJaWYgKGNvbGV4cHItPm9wID09IElTX0pTT05fRVhJU1RT KQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBFWElTVFMiKTsKKwkJ CWRlZmF1bHRfYmVoYXZpb3IgPSBKU09OX0JFSEFWSU9SX0ZBTFNFOworCQl9CisJCWVsc2UK KwkJeworCQkJaWYgKGNvbGV4cHItPm9wID09IElTX0pTT05fUVVFUlkpCisJCQl7CisJCQkJ Y2hhcgkJdHlwY2F0ZWdvcnk7CisJCQkJYm9vbAkJdHlwaXNwcmVmZXJyZWQ7CisKKwkJCQln ZXRfdHlwZV9jYXRlZ29yeV9wcmVmZXJyZWQodHlwaWQsICZ0eXBjYXRlZ29yeSwgJnR5cGlz cHJlZmVycmVkKTsKKworCQkJCWlmICh0eXBjYXRlZ29yeSA9PSBUWVBDQVRFR09SWV9TVFJJ TkcpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAorCQkJCQkJCQkJCSAgIGNv bGV4cHItPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0pTT05CID8KKwkJCQkJ CQkJCQkgICAiIEZPUk1BVCBKU09OQiIgOiAiIEZPUk1BVCBKU09OIik7CisJCQl9CisKKwkJ CWRlZmF1bHRfYmVoYXZpb3IgPSBKU09OX0JFSEFWSU9SX05VTEw7CisJCX0KKworCQlpZiAo amV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQorCQkJZGVm YXVsdF9iZWhhdmlvciA9IEpTT05fQkVIQVZJT1JfRVJST1I7CisKKwkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICIgUEFUSCAiKTsKKworCQlnZXRfanNvbl9wYXRoX3NwZWMoY29s ZXhwci0+cGF0aF9zcGVjLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJCWdldF9qc29u X2V4cHJfb3B0aW9ucyhjb2xleHByLCBjb250ZXh0LCBkZWZhdWx0X2JlaGF2aW9yKTsKKwl9 CisKKwlpZiAobm9kZS0+Y2hpbGQpCisJCWdldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5z KHRmLCBub2RlLT5jaGlsZCwgY29udGV4dCwgc2hvd2ltcGxpY2l0LAorCQkJCQkJCQkJICBu b2RlLT5jb2xNYXggPj0gbm9kZS0+Y29sTWluKTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNv bnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZlbCAtPSBQUkVUVFlJTkRFTlRfVkFSOwor CisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIikiLCAwLCAwLCAwKTsKK30KKwor LyogLS0tLS0tLS0tLQorICogZ2V0X2pzb25fdGFibGUJCQktIFBhcnNlIGJhY2sgYSBKU09O X1RBQkxFIGZ1bmN0aW9uCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitnZXRf anNvbl90YWJsZShUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJv b2wgc2hvd2ltcGxpY2l0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOwor CUpzb25FeHByICAgKmpleHByID0gY2FzdE5vZGUoSnNvbkV4cHIsIHRmLT5kb2NleHByKTsK KwlKc29uVGFibGVQYXJlbnROb2RlICpyb290ID0gY2FzdE5vZGUoSnNvblRhYmxlUGFyZW50 Tm9kZSwgdGYtPnBsYW4pOworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09O X1RBQkxFKCIpOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCisJCWNvbnRleHQt PmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9WQVI7CisKKwlhcHBlbmRDb250ZXh0S2V5 d29yZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisKKwlnZXRfcnVsZV9leHByKGpleHByLT5m b3JtYXR0ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKworCWdldF9jb25zdF9leHByKHJvb3QtPnBhdGgs IGNvbnRleHQsIC0xKTsKKworCWlmIChqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJeworCQlM aXN0Q2VsbCAgICpsYzEsICpsYzI7CisJCWJvb2wJCW5lZWRjb21tYSA9IGZhbHNlOworCisJ CWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwkJYXBwZW5kQ29udGV4dEtleXdv cmQoY29udGV4dCwgIlBBU1NJTkcgIiwgMCwgMCwgMCk7CisKKwkJaWYgKFBSRVRUWV9JTkRF TlQoY29udGV4dCkpCisJCQljb250ZXh0LT5pbmRlbnRMZXZlbCArPSBQUkVUVFlJTkRFTlRf VkFSOworCisJCWZvcmJvdGgobGMxLCBqZXhwci0+cGFzc2luZ19uYW1lcywKKwkJCQlsYzIs IGpleHByLT5wYXNzaW5nX3ZhbHVlcykKKwkJeworCQkJaWYgKG5lZWRjb21tYSkKKwkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJCQluZWVkY29tbWEgPSB0cnVl OworCisJCQlhcHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisK KwkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxjMiksIGNvbnRleHQsIGZhbHNl KTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzIiwKKwkJCQkJCQkgcXVvdGVf aWRlbnRpZmllcigobGZpcnN0X25vZGUoU3RyaW5nLCBsYzEpKS0+c3ZhbCkKKwkJCQkpOwor CQl9CisKKwkJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCisJCQljb250ZXh0LT5pbmRl bnRMZXZlbCAtPSBQUkVUVFlJTkRFTlRfVkFSOworCX0KKworCWdldF9qc29uX3RhYmxlX2Nv bHVtbnModGYsIHJvb3QsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwlpZiAoamV4cHIt Pm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFWSU9SX0VNUFRZKQorCQlnZXRfanNvbl9i ZWhhdmlvcihqZXhwci0+b25fZXJyb3IsIGNvbnRleHQsICJFUlJPUiIpOworCisJaWYgKFBS RVRUWV9JTkRFTlQoY29udGV4dCkpCisJCWNvbnRleHQtPmluZGVudExldmVsIC09IFBSRVRU WUlOREVOVF9WQVI7CisKKwlhcHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiKSIsIDAs IDAsIDApOworfQorCisvKiAtLS0tLS0tLS0tCisgKiBnZXRfdGFibGVmdW5jCQkJLSBQYXJz ZSBiYWNrIGEgdGFibGUgZnVuY3Rpb24KKyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZv aWQKK2dldF90YWJsZWZ1bmMoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKK3sKKwkvKiBYTUxUQUJMRSBhbmQgSlNPTl9UQUJM RSBhcmUgdGhlIG9ubHkgZXhpc3RpbmcgaW1wbGVtZW50YXRpb25zLiAgKi8KKworCWlmICh0 Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFKQorCQlnZXRfeG1sdGFibGUodGYsIGNvbnRl eHQsIHNob3dpbXBsaWNpdCk7CisJZWxzZSBpZiAodGYtPmZ1bmN0eXBlID09IFRGVF9KU09O X1RBQkxFKQorCQlnZXRfanNvbl90YWJsZSh0ZiwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsK K30KKwogLyogLS0tLS0tLS0tLQogICogZ2V0X2Zyb21fY2xhdXNlCQkJLSBQYXJzZSBiYWNr IGEgRlJPTSBjbGF1c2UKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3F1ZXJ5anVtYmxlLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMK aW5kZXggNzEyMDgzNmM3MC4uMmZmYTAxNDYxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cXVlcnlqdW1ibGUuYwpAQCAtODc4LDkgKzg3OCwxMSBAQCBKdW1ibGVFeHByKEp1bWJsZVN0 YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJCQl7CiAJCQkJVGFibGVGdW5jICAqdGFibGVm dW5jID0gKFRhYmxlRnVuYyAqKSBub2RlOwogCisJCQkJQVBQX0pVTUIodGFibGVmdW5jLT5m dW5jdHlwZSk7CiAJCQkJSnVtYmxlRXhwcihqc3RhdGUsIHRhYmxlZnVuYy0+ZG9jZXhwcik7 CiAJCQkJSnVtYmxlRXhwcihqc3RhdGUsIHRhYmxlZnVuYy0+cm93ZXhwcik7CiAJCQkJSnVt YmxlRXhwcihqc3RhdGUsIChOb2RlICopIHRhYmxlZnVuYy0+Y29sZXhwcnMpOworCQkJCUp1 bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAqKSB0YWJsZWZ1bmMtPmNvbHZhbGV4cHJzKTsKIAkJ CX0KIAkJCWJyZWFrOwogCQljYXNlIFRfVGFibGVTYW1wbGVDbGF1c2U6CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY0V4cHIuaAppbmRleCA5Y2U4ZGYxN2U1Li45ZGY3MGU2ZjA2IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTg1MCw2ICs4NTAsMTAgQEAgZXh0ZXJuIERhdHVtIEV4 ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbihzdHJ1Y3QgSnNvbmJWYWx1ZSAqaXRlbSwKIAkJ CQkJCQkJCQkgc3RydWN0IEpzb25Db2VyY2lvblN0YXRlICoqcGpjc3RhdGUpOwogZXh0ZXJu IGJvb2wgRXhlY0V2YWxKc29uTmVlZHNTdWJUcmFuc2FjdGlvbihKc29uRXhwciAqanNleHBy LAogCQkJCQkJCQkJCQlzdHJ1Y3QgSnNvbkNvZXJjaW9uc1N0YXRlICopOworZXh0ZXJuIERh dHVtIEV4ZWNFdmFsRXhwclBhc3NpbmdDYXNlVmFsdWUoRXhwclN0YXRlICplc3RhdGUsCisJ CQkJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCwKKwkJCQkJ CQkJCQkgIERhdHVtIGNhc2V2YWxfZGF0dW0sCisJCQkJCQkJCQkJICBib29sIGNhc2V2YWxf aXNudWxsKTsKIAogZXh0ZXJuIHZvaWQgRXhlY0FnZ0luaXRHcm91cChBZ2dTdGF0ZSAqYWdn c3RhdGUsIEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMsIEFnZ1N0YXRlUGVyR3JvdXAgcGVy Z3JvdXAsCiAJCQkJCQkJIEV4cHJDb250ZXh0ICphZ2djb250ZXh0KTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5o CmluZGV4IDRlODFhM2U4NTkuLjQxZDA1ZGYxMGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMjEx LDYgKzIxMSw4IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9Kc29uRXhwciwKIAlUX0pz b25Db2VyY2lvbiwKIAlUX0pzb25JdGVtQ29lcmNpb25zLAorCVRfSnNvblRhYmxlUGFyZW50 Tm9kZSwKKwlUX0pzb25UYWJsZVNpYmxpbmdOb2RlLAogCiAJLyoKIAkgKiBUQUdTIEZPUiBF WFBSRVNTSU9OIFNUQVRFIE5PREVTIChleGVjbm9kZXMuaCkKQEAgLTUwOSw2ICs1MTEsOSBA QCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfSnNvbkZ1bmNFeHByLAogCVRfSnNvbklzUHJl ZGljYXRlLAogCVRfSnNvbkV4aXN0c1ByZWRpY2F0ZSwKKwlUX0pzb25UYWJsZSwKKwlUX0pz b25UYWJsZUNvbHVtbiwKKwlUX0pzb25UYWJsZVBsYW4sCiAJVF9Kc29uQ29tbW9uLAogCVRf SnNvbkFyZ3VtZW50LAogCVRfSnNvbktleVZhbHVlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CmluZGV4IDI3ZWM0MGRkN2YuLmIzM2E5YzEzYmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKQEAgLTE1NjQsNiArMTU2NCwxOSBAQCB0eXBlZGVmIGVudW0gSnNvblF1b3RlcwogCUpT X1FVT1RFU19PTUlUCQkJCS8qIE9NSVQgUVVPVEVTICovCiB9IEpzb25RdW90ZXM7CiAKKy8q CisgKiBKc29uVGFibGVDb2x1bW5UeXBlIC0KKyAqCQllbnVtZXJhdGlvbiBvZiBKU09OX1RB QkxFIGNvbHVtbiB0eXBlcworICovCit0eXBlZGVmIGVudW0KK3sKKwlKVENfRk9SX09SRElO QUxJVFksCisJSlRDX1JFR1VMQVIsCisJSlRDX0VYSVNUUywKKwlKVENfRk9STUFUVEVELAor CUpUQ19ORVNURUQsCit9IEpzb25UYWJsZUNvbHVtblR5cGU7CisKIC8qCiAgKiBKc29uUGF0 aFNwZWMgLQogICoJCXJlcHJlc2VudGF0aW9uIG9mIEpTT04gcGF0aCBjb25zdGFudApAQCAt MTYyMyw2ICsxNjM2LDQxIEBAIHR5cGVkZWYgc3RydWN0IEpzb25GdW5jRXhwcgogCWludAkJ CWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0g SnNvbkZ1bmNFeHByOwogCisvKgorICogSnNvblRhYmxlQ29sdW1uIC0KKyAqCQl1bnRyYW5z Zm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVEFCTEUgY29sdW1uCisgKi8KK3R5cGVk ZWYgc3RydWN0IEpzb25UYWJsZUNvbHVtbgoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvblRh YmxlQ29sdW1uVHlwZSBjb2x0eXBlOwkvKiBjb2x1bW4gdHlwZSAqLworCWNoYXIJICAgKm5h bWU7CQkJCS8qIGNvbHVtbiBuYW1lICovCisJVHlwZU5hbWUgICAqdHlwZU5hbWU7CQkJLyog Y29sdW1uIHR5cGUgbmFtZSAqLworCUpzb25QYXRoU3BlYyBwYXRoc3BlYzsJCQkvKiBwYXRo IHNwZWNpZmljYXRpb24sIGlmIGFueSAqLworCUpzb25Gb3JtYXQgKmZvcm1hdDsJCQkJLyog SlNPTiBmb3JtYXQgY2xhdXNlLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29uV3JhcHBlcgl3cmFw cGVyOwkJCS8qIFdSQVBQRVIgYmVoYXZpb3IgZm9yIGZvcm1hdHRlZCBjb2x1bW5zICovCisJ Ym9vbAkJb21pdF9xdW90ZXM7CQkvKiBvbWl0IG9yIGtlZXAgcXVvdGVzIG9uIHNjYWxhciBz dHJpbmdzPyAqLworCUxpc3QJICAgKmNvbHVtbnM7CQkJLyogbmVzdGVkIGNvbHVtbnMgKi8K KwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OwkJCS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCisJ SnNvbkJlaGF2aW9yICpvbl9lcnJvcjsJCQkvKiBPTiBFUlJPUiBiZWhhdmlvciAqLworCWlu dAkJCWxvY2F0aW9uOwkJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICov Cit9IEpzb25UYWJsZUNvbHVtbjsKKworLyoKKyAqIEpzb25UYWJsZSAtCisgKgkJdW50cmFu c2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25UYWJsZQoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvbkNvbW1vbiAqY29tbW9u OwkJCQkJLyogY29tbW9uIEpTT04gcGF0aCBzeW50YXggZmllbGRzICovCisJTGlzdAkgICAq Y29sdW1uczsJCQkJLyogbGlzdCBvZiBKc29uVGFibGVDb2x1bW4gKi8KKwlKc29uQmVoYXZp b3IgKm9uX2Vycm9yOwkJCQkvKiBPTiBFUlJPUiBiZWhhdmlvciwgaWYgc3BlY2lmaWVkICov CisJQWxpYXMJICAgKmFsaWFzOwkJCQkJLyogdGFibGUgYWxpYXMgaW4gRlJPTSBjbGF1c2Ug Ki8KKwlib29sCQlsYXRlcmFsOwkJCQkvKiBkb2VzIGl0IGhhdmUgTEFURVJBTCBwcmVmaXg/ ICovCisJaW50CQkJbG9jYXRpb247CQkJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1 bmtub3duICovCit9IEpzb25UYWJsZTsKKwogLyoKICAqIEpzb25LZXlWYWx1ZSAtCiAgKgkJ dW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OIG9iamVjdCBrZXktdmFsdWUg cGFpciBmb3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggOTAxMDhiZWZlYi4uYjY3Yzdi ZmFmZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTczLDYgKzczLDEyIEBAIHR5cGVk ZWYgc3RydWN0IFJhbmdlVmFyCiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBSYW5nZVZhcjsKIAordHlwZWRlZiBlbnVtIFRh YmxlRnVuY1R5cGUKK3sKKwlURlRfWE1MVEFCTEUsCisJVEZUX0pTT05fVEFCTEUKK30gVGFi bGVGdW5jVHlwZTsKKwogLyoKICAqIFRhYmxlRnVuYyAtIG5vZGUgZm9yIGEgdGFibGUgZnVu Y3Rpb24sIHN1Y2ggYXMgWE1MVEFCTEUuCiAgKgpAQCAtODIsNiArODgsNyBAQCB0eXBlZGVm IHN0cnVjdCBSYW5nZVZhcgogdHlwZWRlZiBzdHJ1Y3QgVGFibGVGdW5jCiB7CiAJTm9kZVRh ZwkJdHlwZTsKKwlUYWJsZUZ1bmNUeXBlIGZ1bmN0eXBlOwkJLyogWE1MVEFCTEUgb3IgSlNP Tl9UQUJMRSAqLwogCUxpc3QJICAgKm5zX3VyaXM7CQkvKiBsaXN0IG9mIG5hbWVzcGFjZSBV UkkgZXhwcmVzc2lvbnMgKi8KIAlMaXN0CSAgICpuc19uYW1lczsJCS8qIGxpc3Qgb2YgbmFt ZXNwYWNlIG5hbWVzIG9yIE5VTEwgKi8KIAlOb2RlCSAgICpkb2NleHByOwkJLyogaW5wdXQg ZG9jdW1lbnQgZXhwcmVzc2lvbiAqLwpAQCAtOTIsNyArOTksOSBAQCB0eXBlZGVmIHN0cnVj dCBUYWJsZUZ1bmMKIAlMaXN0CSAgICpjb2xjb2xsYXRpb25zOwkvKiBPSUQgbGlzdCBvZiBj b2x1bW4gY29sbGF0aW9uIE9JRHMgKi8KIAlMaXN0CSAgICpjb2xleHByczsJCS8qIGxpc3Qg b2YgY29sdW1uIGZpbHRlciBleHByZXNzaW9ucyAqLwogCUxpc3QJICAgKmNvbGRlZmV4cHJz OwkvKiBsaXN0IG9mIGNvbHVtbiBkZWZhdWx0IGV4cHJlc3Npb25zICovCisJTGlzdAkgICAq Y29sdmFsZXhwcnM7CS8qIGxpc3Qgb2YgY29sdW1uIHZhbHVlIGV4cHJlc3Npb25zICovCiAJ Qml0bWFwc2V0ICAqbm90bnVsbHM7CQkvKiBudWxsYWJpbGl0eSBmbGFnIGZvciBlYWNoIG91 dHB1dCBjb2x1bW4gKi8KKwlOb2RlCSAgICpwbGFuOwkJCS8qIEpTT05fVEFCTEUgcGxhbiAq LwogCWludAkJCW9yZGluYWxpdHljb2w7CS8qIGNvdW50cyBmcm9tIDA7IC0xIGlmIG5vbmUg c3BlY2lmaWVkICovCiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3Ig LTEgaWYgdW5rbm93biAqLwogfSBUYWJsZUZ1bmM7CkBAIC0xMjQzLDcgKzEyNTIsOCBAQCB0 eXBlZGVmIGVudW0gSnNvbkV4cHJPcAogewogCUlTX0pTT05fVkFMVUUsCQkJCS8qIEpTT05f VkFMVUUoKSAqLwogCUlTX0pTT05fUVVFUlksCQkJCS8qIEpTT05fUVVFUlkoKSAqLwotCUlT X0pTT05fRVhJU1RTCQkJCS8qIEpTT05fRVhJU1RTKCkgKi8KKwlJU19KU09OX0VYSVNUUywJ CQkJLyogSlNPTl9FWElTVFMoKSAqLworCUlTX0pTT05fVEFCTEUJCQkJLyogSlNPTl9UQUJM RSgpICovCiB9IEpzb25FeHByT3A7CiAKIC8qCkBAIC0xNDU3LDYgKzE0NjcsMzEgQEAgdHlw ZWRlZiBzdHJ1Y3QgSnNvbkV4cHIKIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IEpzb25FeHByOwogCisvKgorICogSnNvblRh YmxlUGFyZW50Tm9kZSAtCisgKgkJdHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgcGFy ZW50IEpTT05fVEFCTEUgcGxhbiBub2RlCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25UYWJs ZVBhcmVudE5vZGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCUNvbnN0CSAgICpwYXRoOwkJLyog anNvbnBhdGggY29uc3RhbnQgKi8KKwlOb2RlCSAgICpjaGlsZDsJCS8qIG5lc3RlZCBjb2x1 bW5zLCBpZiBhbnkgKi8KKwlpbnQJCQljb2xNaW47CQkvKiBtaW4gY29sdW1uIGluZGV4IGlu IHRoZSByZXN1bHRpbmcgY29sdW1uIGxpc3QgKi8KKwlpbnQJCQljb2xNYXg7CQkvKiBtYXgg Y29sdW1uIGluZGV4IGluIHRoZSByZXN1bHRpbmcgY29sdW1uIGxpc3QgKi8KKwlib29sCQll cnJvck9uRXJyb3I7IC8qIEVSUk9SL0VNUFRZIE9OIEVSUk9SIGJlaGF2aW9yICovCit9IEpz b25UYWJsZVBhcmVudE5vZGU7CisKKy8qCisgKiBKc29uVGFibGVTaWJsaW5nTm9kZSAtCisg KgkJdHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2Ygam9pbmVkIHNpYmxpbmcgSlNPTl9U QUJMRSBwbGFuIG5vZGUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlU2libGluZ05v ZGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCU5vZGUJICAgKmxhcmc7CQkvKiBsZWZ0IGpvaW4g bm9kZSAqLworCU5vZGUJICAgKnJhcmc7CQkvKiByaWdodCBqb2luIG5vZGUgKi8KK30gSnNv blRhYmxlU2libGluZ05vZGU7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqIE51bGxUZXN0 CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGFiM2Q4ZTBiNTIuLmM3MzY1NzA2YTMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBQR19LRVlXT1JEKCJqc29u X29iamVjdGFnZyIsIEpTT05fT0JKRUNUQUdHLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgianNvbl9xdWVyeSIsIEpTT05fUVVFUlksIENPTF9OQU1FX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX3NjYWxhciIsIEpTT05fU0NB TEFSLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9z ZXJpYWxpemUiLCBKU09OX1NFUklBTElaRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKK1BHX0tFWVdPUkQoImpzb25fdGFibGUiLCBKU09OX1RBQkxFLCBDT0xfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl92YWx1ZSIsIEpTT05fVkFMVUUs IENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJrZWVwIiwgS0VF UCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgia2V5Iiwg S0VZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0yODEsNiArMjgyLDcg QEAgUEdfS0VZV09SRCgibmFtZXMiLCBOQU1FUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgibmF0aW9uYWwiLCBOQVRJT05BTCwgQ09MX05BTUVfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5hdHVyYWwiLCBOQVRVUkFMLCBUWVBF X0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibmNoYXIiLCBO Q0hBUiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoIm5lc3Rl ZCIsIE5FU1RFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgibmV3IiwgTkVXLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJuZXh0IiwgTkVYVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgibmZjIiwgTkZDLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBA IC0zMzAsNiArMzMyLDcgQEAgUEdfS0VZV09SRCgicGFydGlhbCIsIFBBUlRJQUwsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBB UlRJVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGFzc2luZyIsIFBBU1NJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInBhc3N3b3JkIiwgUEFTU1dPUkQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhdGgiLCBQQVRILCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywgUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElD WSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X2NsYXVzZS5oCmluZGV4IDI0OTVjMzAwMzQuLmU4NmIwMDIzOTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2VfY2xhdXNlLmgKQEAgLTUxLDQgKzUxLDcgQEAgZXh0ZXJuIExpc3QgKmFkZFRh cmdldFRvU29ydExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUYXJnZXRFbnRyeSAqdGxlLAog ZXh0ZXJuIEluZGV4IGFzc2lnblNvcnRHcm91cFJlZihUYXJnZXRFbnRyeSAqdGxlLCBMaXN0 ICp0bGlzdCk7CiBleHRlcm4gYm9vbCB0YXJnZXRJc0luU29ydExpc3QoVGFyZ2V0RW50cnkg KnRsZSwgT2lkIHNvcnRvcCwgTGlzdCAqc29ydExpc3QpOwogCisvKiBmdW5jdGlvbnMgaW4g cGFyc2VfanNvbnRhYmxlLmMgKi8KK2V4dGVybiBQYXJzZU5hbWVzcGFjZUl0ZW0gKnRyYW5z Zm9ybUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpOworCiAj ZW5kaWYJCQkJCQkJLyogUEFSU0VfQ0xBVVNFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2pzb25wYXRoLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmlu ZGV4IDk4YTYxZDdmNzIuLjE4OTdkZGZmYTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2pzb25wYXRoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAt MTUsNiArMTUsNyBAQAogI2RlZmluZSBKU09OUEFUSF9ICiAKICNpbmNsdWRlICJmbWdyLmgi CisjaW5jbHVkZSAiZXhlY3V0b3IvdGFibGVmdW5jLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdf bGlzdC5oIgogI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxz L2pzb25iLmgiCkBAIC0yNjMsNiArMjY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblBhdGhW YXJpYWJsZUV2YWxDb250ZXh0CiAJaW50MzIJCXR5cG1vZDsKIAlzdHJ1Y3QgRXhwckNvbnRl eHQgKmVjb250ZXh0OwogCXN0cnVjdCBFeHByU3RhdGUgICplc3RhdGU7CisJTWVtb3J5Q29u dGV4dCBtY3h0OwkJLyogbWVtb3J5IGNvbnRleHQgZm9yIGNhY2hlZCB2YWx1ZSAqLwogCURh dHVtCQl2YWx1ZTsKIAlib29sCQlpc251bGw7CiAJYm9vbAkJZXZhbHVhdGVkOwpAQCAtMjgx LDQgKzI4Myw2IEBAIGV4dGVybiBKc29uYlZhbHVlICpKc29uUGF0aFZhbHVlKERhdHVtIGpi LCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LAogZXh0ZXJuIGludCBFdmFsSnNvblBhdGhW YXIodm9pZCAqdmFycywgY2hhciAqdmFyTmFtZSwgaW50IHZhck5hbWVMZW4sCiAJCQkJCQkg ICBKc29uYlZhbHVlICp2YWwsIEpzb25iVmFsdWUgKmJhc2VPYmplY3QpOwogCitleHRlcm4g Y29uc3QgVGFibGVGdW5jUm91dGluZSBKc29uYlRhYmxlUm91dGluZTsKKwogI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25fc3FsanNvbi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25fc3FsanNvbi5vdXQKaW5kZXggYmI2 MjYzNDMxNC4uMzA5NmE1ZjkxYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9qc29uX3NxbGpzb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv anNvbl9zcWxqc29uLm91dApAQCAtMTMsMyArMTMsOCBAQCBTRUxFQ1QgSlNPTl9RVUVSWShO VUxMIEZPUk1BVCBKU09OLCAnJCcpOwogRVJST1I6ICBKU09OX1FVRVJZKCkgaXMgbm90IHll dCBpbXBsZW1lbnRlZCBmb3IganNvbiB0eXBlCiBMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZ KE5VTEwgRk9STUFUIEpTT04sICckJyk7CiAgICAgICAgICAgICAgICBeCistLSBKU09OX1RB QkxFCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnIENP TFVNTlMgKGZvbyB0ZXh0KSk7CitFUlJPUjogIEpTT05fVEFCTEUoKSBpcyBub3QgeWV0IGlt cGxlbWVudGVkIGZvciBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKE5VTEwgRk9STUFUIEpTT04sICckJyBDT0xVTU5TIChmb28gLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9qc29uYl9zcWxqc29uLm91dAppbmRleCBmMmY1ZTI3MWI4Li5kODljM2JlZjQ0IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKQEAgLTEw MTYsMyArMTAxNiw1NjUgQEAgQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0 eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgMCB0byAkLmEgPyAoQC5kYXRldGkKIEVSUk9SOiAg ZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxF CiBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpz LCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA9PSAkeCldJyBQQVNTSU5HICcx MjozNCc6OnRpbWUgQVMgeCkpOwogRFJPUCBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHk7 CistLSBKU09OX1RBQkxFCistLSBTaG91bGQgZmFpbCAoSlNPTl9UQUJMRSBjYW4gYmUgdXNl ZCBvbmx5IGluIEZST00gY2xhdXNlKQorU0VMRUNUIEpTT05fVEFCTEUoJ1tdJywgJyQnKTsK K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIigiCitMSU5FIDE6IFNFTEVDVCBK U09OX1RBQkxFKCdbXScsICckJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g U2hvdWxkIGZhaWwgKG5vIGNvbHVtbnMpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVM TCwgJyQnIENPTFVNTlMgKCkpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAi KSIKK0xJTkUgMTogU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEwsICckJyBDT0xVTU5T ICgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBOVUxMID0+IGVtcHR5IHRhYmxlCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoTlVMTDo6anNvbmIsICckJyBDT0xVTU5TIChmb28gaW50KSkgYmFyOworIGZvbyAKKy0t LS0tCisoMCByb3dzKQorCistLQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcx MjMnLCAnJCcKKwlDT0xVTU5TIChpdGVtIGludCBQQVRIICckJywgZm9vIGludCkpIGJhcjsK KyBpdGVtIHwgZm9vIAorLS0tLS0tKy0tLS0tCisgIDEyMyB8ICAgIAorKDEgcm93KQorCist LSBKU09OX1RBQkxFOiBiYXNpYyBmdW5jdGlvbmFsaXR5CitDUkVBVEUgRE9NQUlOIGpzb25i X3Rlc3RfZG9tYWluIEFTIHRleHQgQ0hFQ0sgKHZhbHVlIDw+ICdmb28nKTsKK1NFTEVDVCAq CitGUk9NCisJKFZBTFVFUworCQkoJzEnKSwKKwkJKCdbXScpLAorCQkoJ3t9JyksCisJCSgn WzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsi YWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXScpCisJKSB2YWxzKGpzKQorCUxFRlQg T1VURVIgSk9JTgorLS0gSlNPTl9UQUJMRSBpcyBpbXBsaWNpdGx5IGxhdGVyYWwKKwlKU09O X1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJ CWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJaWQyIEZPUiBPUkRJTkFMSVRZLCAtLSBhbGxvd2Vk IGFkZGl0aW9uYWwgb3JkaW5hbGl0eSBjb2x1bW5zCisJCQkiaW50IiBpbnQgUEFUSCAnJCcs CisJCQkidGV4dCIgdGV4dCBQQVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEgg JyQnLAorCQkJImJvb2wiIGJvb2wgUEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJpYyBQ QVRIICckJywKKwkJCSJkb21haW4iIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJ anMganNvbiBQQVRIICckJywKKwkJCWpiIGpzb25iIFBBVEggJyQnLAorCQkJanN0IHRleHQg ICAgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04g IFBBVEggJyQnLAorCQkJanN2IHZhcmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAor CQkJanNiIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJanNicSBqc29uYiBGT1JN QVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWFhYSBpbnQsIC0tIGltcGxpY2l0 IHBhdGggJyQuImFhYSInLAorCQkJYWFhMSBpbnQgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3Rz MSBib29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMyIGludCBFWElTVFMgUEFU SCAnJC5hYWEnLAorCQkJZXhpc3RzMyBpbnQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScg VU5LTk9XTiBPTiBFUlJPUiwKKwkJCWV4aXN0czQgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0 ICQuYWFhJyBGQUxTRSBPTiBFUlJPUiwKKwkJCWpzMiBqc29uIFBBVEggJyQnLAorCQkJanNi MncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEganNvbmIgUEFUSCAn JCcgT01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRhIHRleHRbXSBQ QVRIICckJywKKwkJCWpiYSBqc29uYltdIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1 ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWQgfCBpZDIgfCBpbnQg fCAgdGV4dCAgIHwgY2hhcig0KSB8IGJvb2wgfCBudW1lcmljIHwgZG9tYWluICB8ICAgICAg anMgICAgICB8ICAgICAgamIgICAgICB8ICAgICBqc3QgICAgICB8IGpzYyAgfCBqc3YgIHwg ICAgIGpzYiAgICAgIHwgICAgIGpzYnEgICAgIHwgYWFhIHwgYWFhMSB8IGV4aXN0czEgfCBl eGlzdHMyIHwgZXhpc3RzMyB8IGV4aXN0czQgfCAgICAganMyICAgICAgfCAgICAganNiMncg ICAgICB8ICAgIGpzYjJxICAgICB8IGlhIHwgdGEgfCBqYmEgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0rLS0tLSstLS0tLQorIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MSB8ICAgMSB8ICAgMSB8IDEgICAgICAgfCAxICAgICAgIHwgICAgICB8ICAgICAgIDEgfCAx ICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwg MSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxICAgICAgICAgICAgfCAgICAgfCAgICAg IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IDEgICAgICAgICAg ICB8IFsxXSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFtdICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8ICAgICB8ICAgICB8ICAgICAgICAg fCAgICAgICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAg ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgIHwgICAgfCAgICB8IAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMSB8ICAgMSB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAg ICAgfCAgICAgICAgIHwge30gICAgICAgICAgIHwge30gICAgICAgICAgIHwge30gICAgICAg ICAgIHwge30gICB8IHt9ICAgfCB7fSAgICAgICAgICAgfCB7fSAgICAgICAgICAgfCAgICAg fCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IHt9ICAg ICAgICAgICB8IFt7fV0gICAgICAgICAgIHwge30gICAgICAgICAgIHwgICAgfCAgICB8IAor IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7 ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMSB8ICAgMSB8ICAgMSB8IDEg ICAgICAgfCAxICAgICAgIHwgICAgICB8ICAgICAgIDEgfCAxICAgICAgIHwgMSAgICAgICAg ICAgIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAgICB8IDEgICAgfCAxICAg ICAgICAgICAgfCAxICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAg IDAgfCAgICAgICAgIHwgZmFsc2UgICB8IDEgICAgICAgICAgICB8IFsxXSAgICAgICAgICAg IHwgMSAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFh IiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJc InN0clwiIl0gfCAgMiB8ICAgMiB8ICAgMSB8IDEuMjMgICAgfCAxLjIzICAgIHwgICAgICB8 ICAgIDEuMjMgfCAxLjIzICAgIHwgMS4yMyAgICAgICAgIHwgMS4yMyAgICAgICAgIHwgMS4y MyAgICAgICAgIHwgMS4yMyB8IDEuMjMgfCAxLjIzICAgICAgICAgfCAxLjIzICAgICAgICAg fCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8 IDEuMjMgICAgICAgICB8IFsxLjIzXSAgICAgICAgIHwgMS4yMyAgICAgICAgIHwgICAgfCAg ICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMyB8ICAgMyB8ICAg MiB8IDIgICAgICAgfCAyICAgICAgIHwgICAgICB8ICAgICAgIDIgfCAyICAgICAgIHwgIjIi ICAgICAgICAgIHwgIjIiICAgICAgICAgIHwgIjIiICAgICAgICAgIHwgIjIiICB8ICIyIiAg fCAiMiIgICAgICAgICAgfCAyICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8 ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8ICIyIiAgICAgICAgICB8IFsiMiJdICAg ICAgICAgIHwgMiAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJh YWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwy XSIsICJcInN0clwiIl0gfCAgNCB8ICAgNCB8ICAgICB8IGFhYWFhYWEgfCBhYWFhICAgIHwg ICAgICB8ICAgICAgICAgfCBhYWFhYWFhIHwgImFhYWFhYWEiICAgIHwgImFhYWFhYWEiICAg IHwgImFhYWFhYWEiICAgIHwgImFhYSB8ICJhYWEgfCAiYWFhYWFhYSIgICAgfCAgICAgICAg ICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFs c2UgICB8ICJhYWFhYWFhIiAgICB8IFsiYWFhYWFhYSJdICAgIHwgICAgICAgICAgICAgIHwg ICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNSB8ICAg NSB8ICAgICB8IGZvbyAgICAgfCBmb28gICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAg IHwgImZvbyIgICAgICAgIHwgImZvbyIgICAgICAgIHwgImZvbyIgICAgICAgIHwgImZvbyB8 ICJmb28gfCAiZm9vIiAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAg ICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8ICJmb28iICAgICAgICB8IFsi Zm9vIl0gICAgICAgIHwgICAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAi MiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30s ICJbMSwyXSIsICJcInN0clwiIl0gfCAgNiB8ICAgNiB8ICAgICB8ICAgICAgICAgfCAgICAg ICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgbnVsbCAgICAgICAgIHwgbnVsbCAg ICAgICAgIHwgbnVsbCAgICAgICAgIHwgbnVsbCB8IG51bGwgfCBudWxsICAgICAgICAgfCBu dWxsICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAg IHwgZmFsc2UgICB8IG51bGwgICAgICAgICB8IFtudWxsXSAgICAgICAgIHwgbnVsbCAgICAg ICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAg NyB8ICAgNyB8ICAgMCB8IGZhbHNlICAgfCBmYWxzICAgIHwgZiAgICB8ICAgICAgICAgfCBm YWxzZSAgIHwgZmFsc2UgICAgICAgIHwgZmFsc2UgICAgICAgIHwgZmFsc2UgICAgICAgIHwg ZmFscyB8IGZhbHMgfCBmYWxzZSAgICAgICAgfCBmYWxzZSAgICAgICAgfCAgICAgfCAgICAg IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IGZhbHNlICAgICAg ICB8IFtmYWxzZV0gICAgICAgIHwgZmFsc2UgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6 IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgOCB8ICAgOCB8ICAgMSB8IHRydWUgICAg fCB0cnVlICAgIHwgdCAgICB8ICAgICAgICAgfCB0cnVlICAgIHwgdHJ1ZSAgICAgICAgIHwg dHJ1ZSAgICAgICAgIHwgdHJ1ZSAgICAgICAgIHwgdHJ1ZSB8IHRydWUgfCB0cnVlICAgICAg ICAgfCB0cnVlICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAg ICAgICAgIHwgZmFsc2UgICB8IHRydWUgICAgICAgICB8IFt0cnVlXSAgICAgICAgIHwgdHJ1 ZSAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwi Il0gfCAgOSB8ICAgOSB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAg ICAgfCAgICAgICAgIHwgeyJhYWEiOiAxMjN9IHwgeyJhYWEiOiAxMjN9IHwgeyJhYWEiOiAx MjN9IHwgeyJhYSB8IHsiYWEgfCB7ImFhYSI6IDEyM30gfCB7ImFhYSI6IDEyM30gfCAxMjMg fCAgMTIzIHwgdCAgICAgICB8ICAgICAgIDEgfCAgICAgICAxIHwgdHJ1ZSAgICB8IHsiYWFh IjogMTIzfSB8IFt7ImFhYSI6IDEyM31dIHwgeyJhYWEiOiAxMjN9IHwgICAgfCAgICB8IAor IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7 ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMCB8ICAxMCB8ICAgICB8IFsx LDJdICAgfCBbMSwyICAgIHwgICAgICB8ICAgICAgICAgfCBbMSwyXSAgIHwgIlsxLDJdIiAg ICAgIHwgIlsxLDJdIiAgICAgIHwgIlsxLDJdIiAgICAgIHwgIlsxLCB8ICJbMSwgfCAiWzEs Ml0iICAgICAgfCBbMSwgMl0gICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAg IDAgfCAgICAgICAgIHwgZmFsc2UgICB8ICJbMSwyXSIgICAgICB8IFsiWzEsMl0iXSAgICAg IHwgWzEsIDJdICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFh IiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJc InN0clwiIl0gfCAxMSB8ICAxMSB8ICAgICB8ICJzdHIiICAgfCAic3RyICAgIHwgICAgICB8 ICAgICAgICAgfCAic3RyIiAgIHwgIlwic3RyXCIiICAgIHwgIlwic3RyXCIiICAgIHwgIlwi c3RyXCIiICAgIHwgIlwicyB8ICJcInMgfCAiXCJzdHJcIiIgICAgfCAic3RyIiAgICAgICAg fCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8 ICJcInN0clwiIiAgICB8IFsiXCJzdHJcIiJdICAgIHwgInN0ciIgICAgICAgIHwgICAgfCAg ICB8IAorKDE0IHJvd3MpCisKKy0tIEpTT05fVEFCTEU6IFRlc3QgYmFja3dhcmQgcGFyc2lu ZworQ1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldyBBUworU0VMRUNUICogRlJPTQorCUpT T05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFT IGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJ TkFMSVRZLAorCQkJaWQyIEZPUiBPUkRJTkFMSVRZLCAtLSBhbGxvd2VkIGFkZGl0aW9uYWwg b3JkaW5hbGl0eSBjb2x1bW5zCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQkidGV4dCIg dGV4dCBQQVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEggJyQnLAorCQkJImJv b2wiIGJvb2wgUEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKwkJ CSJkb21haW4iIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJanMganNvbiBQQVRI ICckJywKKwkJCWpiIGpzb25iIFBBVEggJyQnLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpT T04gIFBBVEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAor CQkJanN2IHZhcmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNiIGpzb25i ICAgRk9STUFUIEpTT04gUEFUSCAnJCcsCisJCQlqc2JxIGpzb25iIEZPUk1BVCBKU09OIFBB VEggJyQnIE9NSVQgUVVPVEVTLAorCQkJYWFhIGludCwgLS0gaW1wbGljaXQgcGF0aCAnJC4i YWFhIicsCisJCQlhYWExIGludCBQQVRIICckLmFhYScsCisJCQlleGlzdHMxIGJvb2wgRVhJ U1RTIFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czIgaW50IEVYSVNUUyBQQVRIICckLmFhYScg VFJVRSBPTiBFUlJPUiwKKwkJCWV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQu YWFhJyBVTktOT1dOIE9OIEVSUk9SLAorCQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2Iy dyBqc29uYiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRIICck JyBPTUlUIFFVT1RFUywKKwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBB VEggJyQnLAorCQkJamJhIGpzb25iW10gUEFUSCAnJCcsCisJCQlORVNURUQgUEFUSCAnJFsx XScgQ09MVU1OUyAoCisJCQkJYTEgaW50LAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBDT0xV TU5TICgKKwkJCQkJYTExIHRleHQKKwkJCQkpLAorCQkJCWIxIHRleHQKKwkJCSksCisJCQlO RVNURUQgUEFUSCAnJFsyXScgQ09MVU1OUyAoCisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIENP TFVNTlMgKAorCQkJCQlhMjEgdGV4dAorCQkJCSksCisJCQkJTkVTVEVEIFBBVEggJyRbKl0n IENPTFVNTlMgKAorCQkJCQlhMjIgdGV4dAorCQkJCSkKKwkJCSkKKwkJKQorCSk7Citcc3Yg anNvbmJfdGFibGVfdmlldworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJf dGFibGVfdmlldyBBUworIFNFTEVDVCAianNvbl90YWJsZSIuaWQsCisgICAgImpzb25fdGFi bGUiLmlkMiwKKyAgICAianNvbl90YWJsZSIuImludCIsCisgICAgImpzb25fdGFibGUiLnRl eHQsCisgICAgImpzb25fdGFibGUiLiJjaGFyKDQpIiwKKyAgICAianNvbl90YWJsZSIuYm9v bCwKKyAgICAianNvbl90YWJsZSIuIm51bWVyaWMiLAorICAgICJqc29uX3RhYmxlIi5kb21h aW4sCisgICAgImpzb25fdGFibGUiLmpzLAorICAgICJqc29uX3RhYmxlIi5qYiwKKyAgICAi anNvbl90YWJsZSIuanN0LAorICAgICJqc29uX3RhYmxlIi5qc2MsCisgICAgImpzb25fdGFi bGUiLmpzdiwKKyAgICAianNvbl90YWJsZSIuanNiLAorICAgICJqc29uX3RhYmxlIi5qc2Jx LAorICAgICJqc29uX3RhYmxlIi5hYWEsCisgICAgImpzb25fdGFibGUiLmFhYTEsCisgICAg Impzb25fdGFibGUiLmV4aXN0czEsCisgICAgImpzb25fdGFibGUiLmV4aXN0czIsCisgICAg Impzb25fdGFibGUiLmV4aXN0czMsCisgICAgImpzb25fdGFibGUiLmpzMiwKKyAgICAianNv bl90YWJsZSIuanNiMncsCisgICAgImpzb25fdGFibGUiLmpzYjJxLAorICAgICJqc29uX3Rh YmxlIi5pYSwKKyAgICAianNvbl90YWJsZSIudGEsCisgICAgImpzb25fdGFibGUiLmpiYSwK KyAgICAianNvbl90YWJsZSIuYTEsCisgICAgImpzb25fdGFibGUiLmIxLAorICAgICJqc29u X3RhYmxlIi5hMTEsCisgICAgImpzb25fdGFibGUiLmEyMSwKKyAgICAianNvbl90YWJsZSIu YTIyCisgICBGUk9NIEpTT05fVEFCTEUoCisgICAgICAgICAgICAnbnVsbCc6Ompzb25iLCAn JFsqXScKKyAgICAgICAgICAgIFBBU1NJTkcKKyAgICAgICAgICAgICAgICAxICsgMiBBUyBh LAorICAgICAgICAgICAgICAgICciZm9vIic6Ompzb24gQVMgImIgYyIKKyAgICAgICAgICAg IENPTFVNTlMgKAorICAgICAgICAgICAgICAgIGlkIEZPUiBPUkRJTkFMSVRZLAorICAgICAg ICAgICAgICAgIGlkMiBGT1IgT1JESU5BTElUWSwKKyAgICAgICAgICAgICAgICAiaW50IiBp bnRlZ2VyIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIHRleHQgdGV4dCBQQVRIICckJywK KyAgICAgICAgICAgICAgICAiY2hhcig0KSIgY2hhcmFjdGVyKDQpIFBBVEggJyQnLAorICAg ICAgICAgICAgICAgIGJvb2wgYm9vbGVhbiBQQVRIICckJywKKyAgICAgICAgICAgICAgICAi bnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKyAgICAgICAgICAgICAgICBkb21haW4ganNv bmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganMganNvbiBQQVRI ICckJywKKyAgICAgICAgICAgICAgICBqYiBqc29uYiBQQVRIICckJywKKyAgICAgICAgICAg ICAgICBqc3QgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBq c2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAgICAg IGpzdiBjaGFyYWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAgICAg ICAgICAgICAgICBqc2IganNvbmIgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganNicSBq c29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKyAgICAgICAgICAgICAgICBhYWEgaW50ZWdl ciBQQVRIICckLiJhYWEiJywKKyAgICAgICAgICAgICAgICBhYWExIGludGVnZXIgUEFUSCAn JC4iYWFhIicsCisgICAgICAgICAgICAgICAgZXhpc3RzMSBib29sZWFuIEVYSVNUUyBQQVRI ICckLiJhYWEiJywKKyAgICAgICAgICAgICAgICBleGlzdHMyIGludGVnZXIgRVhJU1RTIFBB VEggJyQuImFhYSInIFRSVUUgT04gRVJST1IsCisgICAgICAgICAgICAgICAgZXhpc3RzMyB0 ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC4iYWFhIicgVU5LTk9XTiBPTiBFUlJPUiwKKyAg ICAgICAgICAgICAgICBqczIganNvbiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc2Iy dyBqc29uYiBQQVRIICckJyBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiwKKyAgICAgICAg ICAgICAgICBqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKyAgICAgICAgICAg ICAgICBpYSBpbnRlZ2VyW10gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgdGEgdGV4dFtd IFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpiYSBqc29uYltdIFBBVEggJyQnLAorICAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWzFdJworICAgICAgICAgICAgICAgIENPTFVN TlMgKAorICAgICAgICAgICAgICAgICAgICBhMSBpbnRlZ2VyIFBBVEggJyQuImExIicsCisg ICAgICAgICAgICAgICAgICAgIGIxIHRleHQgUEFUSCAnJC4iYjEiJywKKyAgICAgICAgICAg ICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nCisgICAgICAgICAgICAgICAgICAgIENPTFVN TlMgKAorICAgICAgICAgICAgICAgICAgICAgICAgYTExIHRleHQgUEFUSCAnJC4iYTExIicK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgICAgTkVTVEVEIFBBVEggJyRbMl0nCisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisg ICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJworICAgICAgICAgICAgICAg ICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGEyMSB0ZXh0IFBBVEgg JyQuImEyMSInCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckWypdJworICAgICAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAg ICAgICAgICAgICAgICAgICAgICAgIGEyMiB0ZXh0IFBBVEggJyQuImEyMiInCisgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAg ICAgICkKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29u Yl90YWJsZV92aWV3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gImpzb25fdGFi bGUiCisgICBPdXRwdXQ6ICJqc29uX3RhYmxlIi5pZCwgImpzb25fdGFibGUiLmlkMiwgImpz b25fdGFibGUiLiJpbnQiLCAianNvbl90YWJsZSIudGV4dCwgImpzb25fdGFibGUiLiJjaGFy KDQpIiwgImpzb25fdGFibGUiLmJvb2wsICJqc29uX3RhYmxlIi4ibnVtZXJpYyIsICJqc29u X3RhYmxlIi5kb21haW4sICJqc29uX3RhYmxlIi5qcywgImpzb25fdGFibGUiLmpiLCAianNv bl90YWJsZSIuanN0LCAianNvbl90YWJsZSIuanNjLCAianNvbl90YWJsZSIuanN2LCAianNv bl90YWJsZSIuanNiLCAianNvbl90YWJsZSIuanNicSwgImpzb25fdGFibGUiLmFhYSwgImpz b25fdGFibGUiLmFhYTEsICJqc29uX3RhYmxlIi5leGlzdHMxLCAianNvbl90YWJsZSIuZXhp c3RzMiwgImpzb25fdGFibGUiLmV4aXN0czMsICJqc29uX3RhYmxlIi5qczIsICJqc29uX3Rh YmxlIi5qc2IydywgImpzb25fdGFibGUiLmpzYjJxLCAianNvbl90YWJsZSIuaWEsICJqc29u X3RhYmxlIi50YSwgImpzb25fdGFibGUiLmpiYSwgImpzb25fdGFibGUiLmExLCAianNvbl90 YWJsZSIuYjEsICJqc29uX3RhYmxlIi5hMTEsICJqc29uX3RhYmxlIi5hMjEsICJqc29uX3Rh YmxlIi5hMjIKKyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpq c29uYiwgJyRbKl0nIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAiYiBjIiBD T0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBPUkRJTkFMSVRZLCAiaW50IiBp bnRlZ2VyIFBBVEggJyQnLCB0ZXh0IHRleHQgUEFUSCAnJCcsICJjaGFyKDQpIiBjaGFyYWN0 ZXIoNCkgUEFUSCAnJCcsIGJvb2wgYm9vbGVhbiBQQVRIICckJywgIm51bWVyaWMiIG51bWVy aWMgUEFUSCAnJCcsIGRvbWFpbiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywganMganNv biBQQVRIICckJywgamIganNvbmIgUEFUSCAnJCcsIGpzdCB0ZXh0IEZPUk1BVCBKU09OIFBB VEggJyQnLCBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLCBqc3YgY2hh cmFjdGVyIHZhcnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzYiBqc29uYiBQQVRI ICckJywganNicSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywgYWFhIGludGVnZXIgUEFU SCAnJC4iYWFhIicsIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywgZXhpc3RzMSBib29s ZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywgZXhpc3RzMiBpbnRlZ2VyIEVYSVNUUyBQQVRI ICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLCBleGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0 cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLCBqczIganNvbiBQQVRIICckJywganNi MncganNvbmIgUEFUSCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsIGpzYjJxIGpz b25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLCBpYSBpbnRlZ2VyW10gUEFUSCAnJCcsIHRhIHRl eHRbXSBQQVRIICckJywgamJhIGpzb25iW10gUEFUSCAnJCcsIE5FU1RFRCBQQVRIICckWzFd JyBDT0xVTU5TIChhMSBpbnRlZ2VyIFBBVEggJyQuImExIicsIGIxIHRleHQgUEFUSCAnJC4i YjEiJywgTkVTVEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKGExMSB0ZXh0IFBBVEggJyQuImEx MSInKSksIE5FU1RFRCBQQVRIICckWzJdJyBDT0xVTU5TICggTkVTVEVEIFBBVEggJyRbKl0n IENPTFVNTlMgKGEyMSB0ZXh0IFBBVEggJyQuImEyMSInKSwgTkVTVEVEIFBBVEggJyRbKl0n IENPTFVNTlMgKGEyMiB0ZXh0IFBBVEggJyQuImEyMiInKSkpKQorKDMgcm93cykKKworRFJP UCBWSUVXIGpzb25iX3RhYmxlX3ZpZXc7CitEUk9QIERPTUFJTiBqc29uYl90ZXN0X2RvbWFp bjsKKy0tIEpTT05fVEFCTEU6IE9OIEVNUFRZL09OIEVSUk9SIGJlaGF2aW9yCitTRUxFQ1Qg KgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcyksCisJSlNPTl9U QUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnKSkganQ7 CisgIGpzICAgfCBhIAorLS0tLS0tLSstLS0KKyAxICAgICB8IDEKKyAiZXJyIiB8ICAKKygy IHJvd3MpCisKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicpKSB2 YWxzKGpzKQorCQlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25i LCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcpIEVSUk9SIE9OIEVSUk9SKSBqdAorCQlP TiB0cnVlOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2Vy OiAiZXJyIgorU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZh bHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUodmFscy5qczo6anNvbmIs ICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyBFUlJPUiBPTiBFUlJPUikpIGp0CisJCU9O IHRydWU7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6 ICJlcnIiCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1O UyAoYSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBUWSkpIGp0OworIGEgCistLS0KKyAg CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBD T0xVTU5TIChhIGludCBQQVRIICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1Ig T04gRVJST1IpIGp0OworRVJST1I6ICBqc29ucGF0aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9u bHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdsYXggJC5hJyBFUlJPUiBPTiBF TVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGlu dCBQQVRIICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBq dDsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3QgJC5hJyBERUZB VUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CisgYSAKKy0tLQorIDIK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBpbnQgUEFUSCAnbGF4ICQuYScgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFV TFQgMiBPTiBFUlJPUikpIGp0OworIGEgCistLS0KKyAxCisoMSByb3cpCisKKy0tIEpTT05f VEFCTEU6IEVYSVNUUyBQQVRIIHR5cGVzCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDQgRVhJU1RTIFBBVEggJyQuYScpKTsKKyBh IAorLS0tCisgMAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJhIicsICckJyBDT0xVTU5TIChhIGludDIgRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9S OiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIHNtYWxsaW50CitMSU5FIDE6IC4uLkVM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQy IEVYSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEi JywgJyQnIENPTFVNTlMgKGEgaW50OCBFWElTVFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBj YW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gYmlnaW50CitMSU5FIDE6IC4uLkVMRUNUICog RlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQ4IEVYSS4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQn IENPTFVNTlMgKGEgZmxvYXQ0IEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5v dCBjYXN0IHR5cGUgYm9vbGVhbiB0byByZWFsCitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBmbG9hdDQgRS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgY2hhcigzKSBFWElTVFMgUEFUSCAnJC5hJykpOworICBhICAKKy0tLS0tCisgZmFs CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQn IENPTFVNTlMgKGEganNvbiBFWElTVFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBjYW5ub3Qg Y2FzdCB0eXBlIGJvb2xlYW4gdG8ganNvbgorTElORSAxOiAuLi5FTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWEkuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5T IChhIGpzb25iIEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5 cGUgYm9vbGVhbiB0byBqc29uYgorTElORSAxOiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbmIgRVguLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBKU09OX1RBQkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCistLSBTaG91bGQgZmFpbCAo Y29sdW1uIG5hbWVzIGFuZiBwYXRoIG5hbWVzIHNoYWxsIGJlIGRpc3RpbmN0KQorU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJworCUNPTFVNTlMgKAorCQlh IGludCwKKwkJYiB0ZXh0LAorCQlhIGpzb25iCisJKQorKSBqdDsKK0VSUk9SOiAgZHVwbGlj YXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6IGEKK0hJTlQ6ICBKU09OX1RBQkxFIHBhdGgg bmFtZXMgYW5kIGNvbHVtbiBuYW1lcyBzaGFsbCBiZSBkaXN0aW5jdCBmcm9tIG9uZSBhbm90 aGVyCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09M VU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQlj IGludCwKKwkJCWIgdGV4dAorCQkpCisJKQorKSBqdDsKK0VSUk9SOiAgZHVwbGljYXRlIEpT T05fVEFCTEUgY29sdW1uIG5hbWU6IGIKK0hJTlQ6ICBKU09OX1RBQkxFIHBhdGggbmFtZXMg YW5kIGNvbHVtbiBuYW1lcyBzaGFsbCBiZSBkaXN0aW5jdCBmcm9tIG9uZSBhbm90aGVyCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAo CisJCU5FU1RFRCBQQVRIICckJworCQlDT0xVTU5TICgKKwkJCWIgaW50CisJCSksCisJCU5F U1RFRCBQQVRIICckJworCQlDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJworCQkJQ09M VU1OUyAoCisJCQkJYyBpbnQsCisJCQkJYiB0ZXh0CisJCQkpCisJCSkKKwkpCispIGp0Owor RVJST1I6ICBkdXBsaWNhdGUgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZTogYgorSElOVDogIEpT T05fVEFCTEUgcGF0aCBuYW1lcyBhbmQgY29sdW1uIG5hbWVzIHNoYWxsIGJlIGRpc3RpbmN0 IGZyb20gb25lIGFub3RoZXIKKy0tIEpTT05fVEFCTEU6IHBsYW4gZXhlY3V0aW9uCitDUkVB VEUgVEVNUCBUQUJMRSBqc29uYl90YWJsZV90ZXN0IChqcyBqc29uYik7CitJTlNFUlQgSU5U TyBqc29uYl90YWJsZV90ZXN0CitWQUxVRVMgKAorCSdbCisJCXsiYSI6ICAxLCAgImIiOiBb XSwgImMiOiBbXX0sCisJCXsiYSI6ICAyLCAgImIiOiBbMSwgMiwgM10sICJjIjogWzEwLCBu dWxsLCAyMF19LAorCQl7ImEiOiAgMywgICJiIjogWzEsIDJdLCAiYyI6IFtdfSwKKwkJeyJ4 IjogIjQiLCAiYiI6IFsxLCAyXSwgImMiOiAxMjN9CisJIF0nCispOworLS0gdW5zcGVjaWZp ZWQgcGxhbiAob3V0ZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3Rh YmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJwor CQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXgg JC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJb Kl0nIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkpIGp0OworIG4g fCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisg MiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisg MiB8ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwgICB8IDIwCisg MyB8ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8ICAgCisg NCB8IC0xIHwgMiB8ICAgCisoMTEgcm93cykKKworLS0gU2hvdWxkIHN1Y2NlZWQgKEpTT04g YXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQorU0VMRUNU ICoKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJpZXMo MSwgMykgeSwKKwlKU09OX1RBQkxFKGpzb25iCisJCSdbWzEsMiwzXSxbMiwzLDQsNV0sWzMs NCw1LDZdXScsCisJCSdzdHJpY3QgJFsqXSA/IChAWypdIDwgJHgpJworCQlQQVNTSU5HIHgg QVMgeCwgeSBBUyB5CisJCUNPTFVNTlMgKAorCQkJeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEgg JyQnLAorCQkJTkVTVEVEIFBBVEggJ3N0cmljdCAkWypdID8gKEAgPj0gJHkpJworCQkJQ09M VU1OUyAoCisJCQkJeiBpbnQgUEFUSCAnJCcKKwkJCSkKKwkJKQorCSkganQ7CisgeCB8IHkg fCAgICAgIHkgICAgICAgfCB6IAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLSstLS0KKyAyIHwg MSB8IFsxLCAyLCAzXSAgICB8IDEKKyAyIHwgMSB8IFsxLCAyLCAzXSAgICB8IDIKKyAyIHwg MSB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMSB8IFsxLCAyLCAzXSAgICB8IDEKKyAzIHwg MSB8IFsxLCAyLCAzXSAgICB8IDIKKyAzIHwgMSB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwg MSB8IFsyLCAzLCA0LCA1XSB8IDIKKyAzIHwgMSB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwg MSB8IFsyLCAzLCA0LCA1XSB8IDQKKyAzIHwgMSB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwg MSB8IFsxLCAyLCAzXSAgICB8IDEKKyA0IHwgMSB8IFsxLCAyLCAzXSAgICB8IDIKKyA0IHwg MSB8IFsxLCAyLCAzXSAgICB8IDMKKyA0IHwgMSB8IFsyLCAzLCA0LCA1XSB8IDIKKyA0IHwg MSB8IFsyLCAzLCA0LCA1XSB8IDMKKyA0IHwgMSB8IFsyLCAzLCA0LCA1XSB8IDQKKyA0IHwg MSB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8IDMKKyA0IHwg MSB8IFszLCA0LCA1LCA2XSB8IDQKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8IDUKKyA0IHwg MSB8IFszLCA0LCA1LCA2XSB8IDYKKyAyIHwgMiB8IFsxLCAyLCAzXSAgICB8IDIKKyAyIHwg MiB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMiB8IFsxLCAyLCAzXSAgICB8IDIKKyAzIHwg MiB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMiB8IFsyLCAzLCA0LCA1XSB8IDIKKyAzIHwg MiB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwgMiB8IFsyLCAzLCA0LCA1XSB8IDQKKyAzIHwg MiB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMiB8IFsxLCAyLCAzXSAgICB8IDIKKyA0IHwg MiB8IFsxLCAyLCAzXSAgICB8IDMKKyA0IHwgMiB8IFsyLCAzLCA0LCA1XSB8IDIKKyA0IHwg MiB8IFsyLCAzLCA0LCA1XSB8IDMKKyA0IHwgMiB8IFsyLCAzLCA0LCA1XSB8IDQKKyA0IHwg MiB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8IDMKKyA0IHwg MiB8IFszLCA0LCA1LCA2XSB8IDQKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8IDUKKyA0IHwg MiB8IFszLCA0LCA1LCA2XSB8IDYKKyAyIHwgMyB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwg MyB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMyB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwg MyB8IFsyLCAzLCA0LCA1XSB8IDQKKyAzIHwgMyB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwg MyB8IFsxLCAyLCAzXSAgICB8IDMKKyA0IHwgMyB8IFsyLCAzLCA0LCA1XSB8IDMKKyA0IHwg MyB8IFsyLCAzLCA0LCA1XSB8IDQKKyA0IHwgMyB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwg MyB8IFszLCA0LCA1LCA2XSB8IDMKKyA0IHwgMyB8IFszLCA0LCA1LCA2XSB8IDQKKyA0IHwg MyB8IFszLCA0LCA1LCA2XSB8IDUKKyA0IHwgMyB8IFszLCA0LCA1LCA2XSB8IDYKKyg1MiBy b3dzKQorCistLSBTaG91bGQgZmFpbCAoSlNPTiBhcmd1bWVudHMgYXJlIG5vdCBwYXNzZWQg dG8gY29sdW1uIHBhdGhzKQorU0VMRUNUICoKK0ZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAn WzEsMiwzXScsCisJJyRbKl0gPyAoQCA8ICR4KScKKwkJUEFTU0lORyAxMCBBUyB4CisJCUNP TFVNTlMgKHkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckID8gKEAgPCAkeCknKQorCSkganQ7 CitFUlJPUjogIGNvdWxkIG5vdCBmaW5kIGpzb25wYXRoIHZhcmlhYmxlICJ4IgorLS0gRXh0 ZW5zaW9uOiBub24tY29uc3RhbnQgSlNPTiBwYXRoCitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7CisganNvbl9leGlzdHMgCist LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn eyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgMTIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEi OiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYicgREVGQVVMVCAnZm9vJyBPTiBFTVBUWSk7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGZvbworKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKKyBqc29u X3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgMTIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScgV0lUSCBXUkFQUEVS KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEyM10KKygxIHJvdykKKworLS0g U2hvdWxkIGZhaWwgKGludmFsaWQgcGF0aCkKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7 ImEiOiAxMjN9JywgJ2Vycm9yJyB8fCAnICcgfHwgJ2Vycm9yJyk7CitFUlJPUjogIHN5bnRh eCBlcnJvciwgdW5leHBlY3RlZCBJREVOVF9QIGF0IG9yIG5lYXIgIiAiIG9mIGpzb25wYXRo IGlucHV0CistLSBTaG91bGQgZmFpbCAobm90IHN1cHBvcnRlZCkKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnIENPTFVN TlMgKGZvbyBpbnQpKTsKK0VSUk9SOiAgb25seSBzdHJpbmcgY29uc3RhbnRzIHN1cHBvcnRl ZCBpbiBKU09OX1RBQkxFIHBhdGggc3BlY2lmaWNhdGlvbgorTElORSAxOiBTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICcuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gVGVzdCBwYXJhbGxlbCBKU09OX1ZBTFVFKCkKK0NSRUFURSBUQUJMRSB0ZXN0X3Bh cmFsbGVsX2pzb25iX3ZhbHVlIEFTCitTRUxFQ1QgaTo6dGV4dDo6anNvbmIgQVMganMKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwMDApIGk7CistLSBTaG91bGQgYmUgbm9uLXBh cmFsbGVsIGR1ZSB0byBzdWJ0cmFuc2FjdGlvbnMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBzdW0oSlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyBudW1lcmljKSkgRlJPTSB0 ZXN0X3BhcmFsbGVsX2pzb25iX3ZhbHVlOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiB0ZXN0X3BhcmFs bGVsX2pzb25iX3ZhbHVlCisoMiByb3dzKQorCitTRUxFQ1Qgc3VtKEpTT05fVkFMVUUoanMs ICckJyBSRVRVUk5JTkcgbnVtZXJpYykpIEZST00gdGVzdF9wYXJhbGxlbF9qc29uYl92YWx1 ZTsKKyAgICAgc3VtICAgICAgCistLS0tLS0tLS0tLS0tLQorIDUwMDAwMDUwMDAwMAorKDEg cm93KQorCistLSBTaG91bGQgYmUgcGFyYWxsZWwKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBzdW0oSlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyBudW1lcmljIEVSUk9SIE9O IEVSUk9SKSkgRlJPTSB0ZXN0X3BhcmFsbGVsX2pzb25iX3ZhbHVlOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAg ICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVn YXRlCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gdGVzdF9wYXJh bGxlbF9qc29uYl92YWx1ZQorKDUgcm93cykKKworU0VMRUNUIHN1bShKU09OX1ZBTFVFKGpz LCAnJCcgUkVUVVJOSU5HIG51bWVyaWMgRVJST1IgT04gRVJST1IpKSBGUk9NIHRlc3RfcGFy YWxsZWxfanNvbmJfdmFsdWU7CisgICAgIHN1bSAgICAgIAorLS0tLS0tLS0tLS0tLS0KKyA1 MDAwMDA1MDAwMDAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvanNvbl9zcWxqc29uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25fc3FsanNv bi5zcWwKaW5kZXggNGYzMGZhNDZiOS4uZGY0YTQzMGQ4OCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbl9zcWxqc29uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qc29uX3NxbGpzb24uc3FsCkBAIC05LDMgKzksNyBAQCBTRUxFQ1QgSlNPTl9WQUxV RShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOwogLS0gSlNPTl9RVUVSWQogCiBTRUxFQ1QgSlNP Tl9RVUVSWShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworCistLSBKU09OX1RBQkxFCisKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09OLCAnJCcgQ09MVU1OUyAo Zm9vIHRleHQpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3Nx bGpzb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwKaW5k ZXggMDBhMDY3YTA2YS4uNjYxNGRkNmU0NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvanNvbmJfc3FsanNvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNv bmJfc3FsanNvbi5zcWwKQEAgLTMxNSwzICszMTUsMjg3IEBAIENSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRh dGV0aW1lKCkKIENSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckWzEsIDAgdG8gJC5hID8gKEAuZGF0ZXRpbWUoKSA9PSAkeCldJyBQQVNT SU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOwogQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAuZGF0ZXRpbWUoIkhI Ok1JIikgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKIERST1AgVEFC TEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5OworCistLSBKU09OX1RBQkxFCisKKy0tIFNob3Vs ZCBmYWlsIChKU09OX1RBQkxFIGNhbiBiZSB1c2VkIG9ubHkgaW4gRlJPTSBjbGF1c2UpCitT RUxFQ1QgSlNPTl9UQUJMRSgnW10nLCAnJCcpOworCistLSBTaG91bGQgZmFpbCAobm8gY29s dW1ucykKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMLCAnJCcgQ09MVU1OUyAoKSk7 CisKKy0tIE5VTEwgPT4gZW1wdHkgdGFibGUKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShO VUxMOjpqc29uYiwgJyQnIENPTFVNTlMgKGZvbyBpbnQpKSBiYXI7CisKKy0tCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEyMycsICckJworCUNPTFVNTlMgKGl0ZW0gaW50 IFBBVEggJyQnLCBmb28gaW50KSkgYmFyOworCistLSBKU09OX1RBQkxFOiBiYXNpYyBmdW5j dGlvbmFsaXR5CitDUkVBVEUgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluIEFTIHRleHQgQ0hF Q0sgKHZhbHVlIDw+ICdmb28nKTsKKworU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTCisJCSgn MScpLAorCQkoJ1tdJyksCisJCSgne30nKSwKKwkJKCdbMSwgMS4yMywgIjIiLCAiYWFhYWFh YSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAi XCJzdHJcIiJdJykKKwkpIHZhbHMoanMpCisJTEVGVCBPVVRFUiBKT0lOCistLSBKU09OX1RB QkxFIGlzIGltcGxpY2l0bHkgbGF0ZXJhbAorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6Ompz b25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJ CQlpZDIgRk9SIE9SRElOQUxJVFksIC0tIGFsbG93ZWQgYWRkaXRpb25hbCBvcmRpbmFsaXR5 IGNvbHVtbnMKKwkJCSJpbnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEgg JyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFUSCAnJCcsCisJCQkiYm9vbCIgYm9vbCBQ QVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorCQkJImRvbWFpbiIg anNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisJCQlqcyBqc29uIFBBVEggJyQnLAorCQkJ amIganNvbmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAn JCcsCisJCQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc3YgdmFy Y2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2IganNvbmIgRk9STUFUIEpT T04gUEFUSCAnJCcsCisJCQlqc2JxIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQnIE9NSVQg UVVPVEVTLAorCQkJYWFhIGludCwgLS0gaW1wbGljaXQgcGF0aCAnJC4iYWFhIicsCisJCQlh YWExIGludCBQQVRIICckLmFhYScsCisJCQlleGlzdHMxIGJvb2wgRVhJU1RTIFBBVEggJyQu YWFhJywKKwkJCWV4aXN0czIgaW50IEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMz IGludCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFhJyBVTktOT1dOIE9OIEVSUk9SLAorCQkJ ZXhpc3RzNCB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIEZBTFNFIE9OIEVSUk9S LAorCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3IGpzb25iIFBBVEggJyQnIFdJ VEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLAorCQkJ aWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCisJCQlqYmEganNv bmJbXSBQQVRIICckJworCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0tIEpTT05fVEFCTEU6 IFRlc3QgYmFja3dhcmQgcGFyc2luZworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3 IEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwnLCAnbGF4 ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMiCisJCUNP TFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlpZDIgRk9SIE9SRElOQUxJVFks IC0tIGFsbG93ZWQgYWRkaXRpb25hbCBvcmRpbmFsaXR5IGNvbHVtbnMKKwkJCSJpbnQiIGlu dCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNo YXIoNCkgUEFUSCAnJCcsCisJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmlj IiBudW1lcmljIFBBVEggJyQnLAorCQkJImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFU SCAnJCcsCisJCQlqcyBqc29uIFBBVEggJyQnLAorCQkJamIganNvbmIgUEFUSCAnJCcsCisJ CQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2MgY2hhcig0KSBG T1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc3YgdmFyY2hhcig0KSBGT1JNQVQgSlNPTiAg UEFUSCAnJCcsCisJCQlqc2IganNvbmIgICBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCWpz YnEganNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMsCisJCQlhYWEgaW50 LCAtLSBpbXBsaWNpdCBwYXRoICckLiJhYWEiJywKKwkJCWFhYTEgaW50IFBBVEggJyQuYWFh JywKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMiBp bnQgRVhJU1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAorCQkJZXhpc3RzMyB0ZXh0 IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IsCisKKwkJCWpz MiBqc29uIFBBVEggJyQnLAorCQkJanNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVS LAorCQkJanNiMnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQ QVRIICckJywKKwkJCXRhIHRleHRbXSBQQVRIICckJywKKwkJCWpiYSBqc29uYltdIFBBVEgg JyQnLAorCisJCQlORVNURUQgUEFUSCAnJFsxXScgQ09MVU1OUyAoCisJCQkJYTEgaW50LAor CQkJCU5FU1RFRCBQQVRIICckWypdJyBDT0xVTU5TICgKKwkJCQkJYTExIHRleHQKKwkJCQkp LAorCQkJCWIxIHRleHQKKwkJCSksCisJCQlORVNURUQgUEFUSCAnJFsyXScgQ09MVU1OUyAo CisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKAorCQkJCQlhMjEgdGV4dAorCQkJ CSksCisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKAorCQkJCQlhMjIgdGV4dAor CQkJCSkKKwkJCSkKKwkJKQorCSk7CisKK1xzdiBqc29uYl90YWJsZV92aWV3CisKK0VYUExB SU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3 OworCitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzsKK0RST1AgRE9NQUlOIGpzb25iX3Rl c3RfZG9tYWluOworCistLSBKU09OX1RBQkxFOiBPTiBFTVBUWS9PTiBFUlJPUiBiZWhhdmlv cgorU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMp LAorCUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRI ICckJykpIGp0OworCitTRUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciIn KSkgdmFscyhqcykKKwkJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpq c29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnKSBFUlJPUiBPTiBFUlJPUikganQK KwkJT04gdHJ1ZTsKKworU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIi JykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUodmFscy5qczo6 anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyBFUlJPUiBPTiBFUlJPUikpIGp0 CisJCU9OIHRydWU7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICck JyBDT0xVTU5TIChhIGludCBQQVRIICckLmEnIEVSUk9SIE9OIEVNUFRZKSkganQ7CitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFU SCAnc3RyaWN0ICQuYScgRVJST1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBqdDsKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGlu dCBQQVRIICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBq dDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMg KGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIg T04gRVJST1IpKSBqdDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywg JyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBE RUZBVUxUIDIgT04gRVJST1IpKSBqdDsKKworLS0gSlNPTl9UQUJMRTogRVhJU1RTIFBBVEgg dHlwZXMKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgaW50NCBFWElTVFMgUEFUSCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQyIEVYSVNUUyBQQVRIICckLmEn KSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5T IChhIGludDggRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgZmxvYXQ0IEVYSVNUUyBQQVRIICckLmEn KSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5T IChhIGNoYXIoMykgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWElTVFMgUEFUSCAnJC5h JykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBqc29uYiBFWElTVFMgUEFUSCAnJC5hJykpOworCistLSBKU09OX1RBQkxFOiBuZXN0 ZWQgcGF0aHMgYW5kIHBsYW5zCisKKy0tIFNob3VsZCBmYWlsIChjb2x1bW4gbmFtZXMgYW5m IHBhdGggbmFtZXMgc2hhbGwgYmUgZGlzdGluY3QpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCWEgaW50LAorCQliIHRleHQs CisJCWEganNvbmIKKwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAn JCcKKwkJQ09MVU1OUyAoCisJCQljIGludCwKKwkJCWIgdGV4dAorCQkpCisJKQorKSBqdDsK KworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJworCUNPTFVN TlMgKAorCQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQliIGludAorCQkpLAor CQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcKKwkJ CUNPTFVNTlMgKAorCQkJCWMgaW50LAorCQkJCWIgdGV4dAorCQkJKQorCQkpCisJKQorKSBq dDsKKworLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRpb24KKworQ1JFQVRFIFRFTVAgVEFC TEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIpOworCitJTlNFUlQgSU5UTyBqc29uYl90 YWJsZV90ZXN0CitWQUxVRVMgKAorCSdbCisJCXsiYSI6ICAxLCAgImIiOiBbXSwgImMiOiBb XX0sCisJCXsiYSI6ICAyLCAgImIiOiBbMSwgMiwgM10sICJjIjogWzEwLCBudWxsLCAyMF19 LAorCQl7ImEiOiAgMywgICJiIjogWzEsIDJdLCAiYyI6IFtdfSwKKwkJeyJ4IjogIjQiLCAi YiI6IFsxLCAyXSwgImMiOiAxMjN9CisJIF0nCispOworCistLSB1bnNwZWNpZmllZCBwbGFu IChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVz dCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWNvbHVt bnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRl ZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29s dW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sq XScgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCSkganQ7CisKKy0tIFNob3Vs ZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHJvb3QgYW5kIG5lc3Rl ZCBwYXRocykKK1NFTEVDVCAqCitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDQpIHgsCisJ Z2VuZXJhdGVfc2VyaWVzKDEsIDMpIHksCisJSlNPTl9UQUJMRShqc29uYgorCQknW1sxLDIs M10sWzIsMyw0LDVdLFszLDQsNSw2XV0nLAorCQknc3RyaWN0ICRbKl0gPyAoQFsqXSA8ICR4 KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlDT0xVTU5TICgKKwkJCXkgdGV4dCBG T1JNQVQgSlNPTiBQQVRIICckJywKKwkJCU5FU1RFRCBQQVRIICdzdHJpY3QgJFsqXSA/IChA ID49ICR5KScKKwkJCUNPTFVNTlMgKAorCQkJCXogaW50IFBBVEggJyQnCisJCQkpCisJCSkK KwkpIGp0OworCistLSBTaG91bGQgZmFpbCAoSlNPTiBhcmd1bWVudHMgYXJlIG5vdCBwYXNz ZWQgdG8gY29sdW1uIHBhdGhzKQorU0VMRUNUICoKK0ZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnWzEsMiwzXScsCisJJyRbKl0gPyAoQCA8ICR4KScKKwkJUEFTU0lORyAxMCBBUyB4CisJ CUNPTFVNTlMgKHkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckID8gKEAgPCAkeCknKQorCSkg anQ7CisKKy0tIEV4dGVuc2lvbjogbm9uLWNvbnN0YW50IEpTT04gcGF0aAorU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7 CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwg J2InIERFRkFVTFQgJ2ZvbycgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnIFdJVEggV1JBUFBFUik7Cist LSBTaG91bGQgZmFpbCAoaW52YWxpZCBwYXRoKQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J3siYSI6IDEyM30nLCAnZXJyb3InIHx8ICcgJyB8fCAnZXJyb3InKTsKKy0tIFNob3VsZCBm YWlsIChub3Qgc3VwcG9ydGVkKQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICd7 ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScgQ09MVU1OUyAoZm9vIGludCkpOworCist LSBUZXN0IHBhcmFsbGVsIEpTT05fVkFMVUUoKQorQ1JFQVRFIFRBQkxFIHRlc3RfcGFyYWxs ZWxfanNvbmJfdmFsdWUgQVMKK1NFTEVDVCBpOjp0ZXh0Ojpqc29uYiBBUyBqcworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDAwMCkgaTsKKworLS0gU2hvdWxkIGJlIG5vbi1wYXJh bGxlbCBkdWUgdG8gc3VidHJhbnNhY3Rpb25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1Qgc3VtKEpTT05fVkFMVUUoanMsICckJyBSRVRVUk5JTkcgbnVtZXJpYykpIEZST00gdGVz dF9wYXJhbGxlbF9qc29uYl92YWx1ZTsKK1NFTEVDVCBzdW0oSlNPTl9WQUxVRShqcywgJyQn IFJFVFVSTklORyBudW1lcmljKSkgRlJPTSB0ZXN0X3BhcmFsbGVsX2pzb25iX3ZhbHVlOwor CistLSBTaG91bGQgYmUgcGFyYWxsZWwKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBz dW0oSlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyBudW1lcmljIEVSUk9SIE9OIEVSUk9S KSkgRlJPTSB0ZXN0X3BhcmFsbGVsX2pzb25iX3ZhbHVlOworU0VMRUNUIHN1bShKU09OX1ZB TFVFKGpzLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMgRVJST1IgT04gRVJST1IpKSBGUk9NIHRl c3RfcGFyYWxsZWxfanNvbmJfdmFsdWU7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IDg5MjQ5ZWNjOTcuLmJhMDk3OGNmN2MgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC0xMjM0LDYgKzEyMzQsMTQgQEAgSnNvblBhdGhQYXJzZVJlc3VsdAogSnNvblBh dGhQcmVkaWNhdGVDYWxsYmFjawogSnNvblBhdGhTdHJpbmcKIEpzb25TZW1BY3Rpb24KK0pz b25UYWJsZQorSnNvblRhYmxlQ29sdW1uCitKc29uVGFibGVDb2x1bW5UeXBlCitKc29uVGFi bGVDb250ZXh0CitKc29uVGFibGVKb2luU3RhdGUKK0pzb25UYWJsZVBhcmVudE5vZGUKK0pz b25UYWJsZVNjYW5TdGF0ZQorSnNvblRhYmxlU2libGluZ05vZGUKIEpzb25Ub2tlblR5cGUK IEpzb25UcmFuc2Zvcm1TdHJpbmdWYWx1ZXNBY3Rpb24KIEpzb25UeXBlQ2F0ZWdvcnkKQEAg LTI2MzAsNiArMjYzOCw3IEBAIFRhYmxlRnVuYwogVGFibGVGdW5jUm91dGluZQogVGFibGVG dW5jU2NhbgogVGFibGVGdW5jU2NhblN0YXRlCitUYWJsZUZ1bmNUeXBlCiBUYWJsZUluZm8K IFRhYmxlTGlrZUNsYXVzZQogVGFibGVTYW1wbGVDbGF1c2UKLS0gCjIuMjUuMQoK --------------wGx6OcQsLj50vkDF0YvlnG34 Content-Type: text/x-patch; charset=UTF-8; name="0003-JSON_TABLE-PLAN-DEFAULT-clause-v55.patch" Content-Disposition: attachment; filename="0003-JSON_TABLE-PLAN-DEFAULT-clause-v55.patch" Content-Transfer-Encoding: base64 RnJvbSBhNTIwN2MwZjdmYzg2ZThiZTI1Nzg3NTRkYTMxMWE1NTI1M2E2YzdjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVHVlLCAxIEZlYiAyMDIyIDEyOjE3OjEyIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCAzLzRdIEpTT05fVEFCTEUgUExBTiBERUZBVUxUIGNsYXVzZQoKLS0tCiBkb2Mvc3Jj L3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgMTE4ICsrKysrKysrKysr KysrKystLS0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICAg fCAgIDQgKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgICAgICAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgICAgIHwg ICAzICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICB8ICA0 MSArKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMgICAgICAg IHwgIDEzICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAgICAg ICB8IDEyMCArKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jICAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICB8ICAxMyArKysKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iX3NxbGpzb24ub3V0IHwgMTE4ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsICAgICAgfCAgNjUgKysrKysrKysrKysK IHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgIDEgKwog MTUgZmlsZXMgY2hhbmdlZCwgNDYyIGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVu Yy5zZ21sCmluZGV4IDNkZjQxODQ1OGMuLjY2M2MyNmFiYTIgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMTkz MTUsNiArMTkzMTUsMTAgQEAgRlJPTQogSlNPTl9UQUJMRSAoCiAgIDxyZXBsYWNlYWJsZT5j b250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFTU0lORyB7IDxyZXBsYWNlYWJsZT52YWx1 ZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4g fSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiA8L29wdGlvbmFsPgogICBDT0xVTU5TICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVfY29sdW1uPC9yZXBs YWNlYWJsZT4gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gKQorICA8b3B0aW9uYWw+Cisg ICAgUExBTiBERUZBVUxUICggeyBJTk5FUiB8IE9VVEVSIH0gPG9wdGlvbmFsPiAsIHsgQ1JP U1MgfCBVTklPTiB9IDwvb3B0aW9uYWw+CisgICAgICAgICAgICAgICAgIHwgeyBDUk9TUyB8 IFVOSU9OIH0gPG9wdGlvbmFsPiAsIHsgSU5ORVIgfCBPVVRFUiB9IDwvb3B0aW9uYWw+ICkK KyAgPC9vcHRpb25hbD4KICkKIDxwaHJhc2U+CiB3aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiBpczoKQEAgLTE5 Mzc2LDcgKzE5MzgwLDggQEAgd2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gaXM6CiAgICAgICBUaGUgcm93cyBw cm9kdWNlZCBieSA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGFyZSBsYXRlcmFs bHkKICAgICAgIGpvaW5lZCB0byB0aGUgcm93IHRoYXQgZ2VuZXJhdGVkIHRoZW0sIHNvIHlv dSBkbyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IGpvaW4KICAgICAgIHRoZSBjb25zdHJ1Y3Rl ZCB2aWV3IHdpdGggdGhlIG9yaWdpbmFsIHRhYmxlIGhvbGRpbmcgPGFjcm9ueW0+SlNPTjwv YWNyb255bT4KLSAgICAgIGRhdGEuCisgICAgICBkYXRhLiBPcHRpb25hbGx5LCB5b3UgY2Fu IHNwZWNpZnkgaG93IHRvIGpvaW4gdGhlIGNvbHVtbnMgcmV0dXJuZWQKKyAgICAgIGJ5IDxs aXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiB1c2luZyB0aGUgPGxpdGVyYWw+UExBTiBE RUZBVUxUPC9saXRlcmFsPiBjbGF1c2UuCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4K QEAgLTE5Mzg5LDIyICsxOTM5NCw2IEBAIHdoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IGlzOgogICAgICAgdGhl IHJlc3VsdGluZyByb3dzIGFyZSBqb2luZWQgdG8gdGhlIHBhcmVudCByb3cuCiAgICAgIDwv cGFyYT4KIAotICAgICA8cGFyYT4KLSAgICAgIENvbHVtbnMgd2l0aCBwYXJlbnQvY2hpbGQg cmVsYXRpb25zaGlwIGFyZSBqb2luZWQgdXNpbmcKLSAgICAgIDxsaXRlcmFsPkxFRlQgT1VU RVIgSk9JTjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cKLSAgICAgIGlzIGFs d2F5cyBpbmNsdWRlZCBpbnRvIHRoZSBvdXRwdXQgZXZlbiBpZiBpdCBkb2VzIG5vdCBoYXZl IGFueSBjaGlsZCByb3dzCi0gICAgICBhZnRlciBqb2luaW5nIHRoZSBkYXRhIHJldHVybmVk IGJ5IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiwKLSAgICAgIHdpdGggTlVMTCB2 YWx1ZXMgaW5zZXJ0ZWQgaW50byB0aGUgY2hpbGQgY29sdW1ucyBpZiB0aGUgY29ycmVzcG9u ZGluZwotICAgICAgdmFsdWVzIGFyZSBtaXNzaW5nLgotICAgICA8L3BhcmE+Ci0KLSAgICAg PHBhcmE+Ci0gICAgICBTaWJsaW5nIGNvbHVtbnMgYXJlIGpvaW5lZCB1c2luZwotICAgICAg PGxpdGVyYWw+RlVMTCBPVVRFUiBKT0lOIE9OIEZBTFNFPC9saXRlcmFsPiwgc28gdGhhdCBi b3RoIHBhcmVudCBhbmQgY2hpbGQKLSAgICAgIHJvd3MgYXJlIGluY2x1ZGVkIGludG8gdGhl IG91dHB1dCwgd2l0aCBOVUxMIHZhbHVlcyBpbnNlcnRlZAotICAgICAgaW50byBib3RoIGNo aWxkIGFuZCBwYXJyZW50IGNvbHVtbnMgZm9yIGFsbCBtaXNzaW5nIHZhbHVlcy4KLSAgICAg PC9wYXJhPgotCiAgICAgPC9zZWN0NT4KICAgICA8c2VjdDU+CiAgICAgIDx0aXRsZT5QYXJh bWV0ZXJzPC90aXRsZT4KQEAgLTE5NTc2LDYgKzE5NTY1LDEwIEBAIHdoZXJlIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+ IGlzOgogICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGV4cHJlc3Npb25z IGluIGFuIFNRTCBzdGF0ZW1lbnQuCiAgICAgPC9wYXJhPgogCisgICAgPHBhcmE+CisgICAg IFlvdSBjYW4gdXNlIHRoZSA8bGl0ZXJhbD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+IGNsYXVz ZSB0byBkZWZpbmUgaG93CisgICAgIHRvIGpvaW4gdGhlIGNvbHVtbnMgcmV0dXJuZWQgYnkg PHJlcGxhY2VhYmxlPk5FU1RFRCBQQVRIPC9yZXBsYWNlYWJsZT4gY2xhdXNlcy4KKyAgICA8 L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0xOTU5 OCw4ICsxOTU5MSw5OSBAQCB3aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiBpczoKICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+Cisg ICAgIDxsaXRlcmFsPlBMQU4gREVGQVVMVCAoIDxyZXBsYWNlYWJsZT5vcHRpb248L3JlcGxh Y2VhYmxlPiA8b3B0aW9uYWw+LCAuLi4gPC9vcHRpb25hbD4gKTwvbGl0ZXJhbD4KKyAgICA8 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERlZmluZXMgaG93 IHRvIGpvaW4gdGhlIGRhdGEgcmV0dXJuZWQgYnkgPHJlcGxhY2VhYmxlPk5FU1RFRCBQQVRI PC9yZXBsYWNlYWJsZT4KKyAgICAgIGNsYXVzZXMgdG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcu IFRoZSA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4gYW5kCisgICAgICA8bGl0ZXJhbD5PVVRF UjwvbGl0ZXJhbD4gb3B0aW9ucyBkZWZpbmUgdGhlIGpvaW5pbmcgcGxhbiBmb3IgcGFyZW50 L2NoaWxkCisgICAgICBjb2x1bW5zLCB3aGlsZSA8bGl0ZXJhbD5VTklPTjwvbGl0ZXJhbD4g YW5kIDxsaXRlcmFsPkNST1NTPC9saXRlcmFsPgorICAgICAgYWZmZWN0IHRoZSBzaWJsaW5n IGNvbHVtbnMuIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcGxhbnMgZm9yIGFsbAor ICAgICAgY29sdW1ucyBhdCBvbmNlLgorICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICAgVG8gam9pbiBjb2x1bW5zIHdpdGggcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcCwgeW91 IGNhbiB1c2U6CisgICAgPC9wYXJhPgorICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+SU5ORVI8L2xpdGVyYWw+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBVc2UgPGxpdGVy YWw+SU5ORVIgSk9JTjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cKKyAgICAg aXMgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQgaWYgaXQgZG9lcyBub3QgaGF2ZSBhbnkgY2hp bGQgcm93cworICAgICBhZnRlciBqb2luaW5nIHRoZSBkYXRhIHJldHVybmVkIGJ5IDxsaXRl cmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPi4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PgorICAgICA8bGl0ZXJhbD5PVVRFUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIFVzZSA8bGl0ZXJhbD5MRUZUIE9VVEVSIEpP SU48L2xpdGVyYWw+LCBzbyB0aGF0IHRoZSBwYXJlbnQgcm93CisgICAgIGlzIGFsd2F5cyBp bmNsdWRlZCBpbnRvIHRoZSBvdXRwdXQgZXZlbiBpZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBj aGlsZCByb3dzCisgICAgIGFmdGVyIGpvaW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxp dGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+LCB3aXRoIE5VTEwgdmFsdWVzCisgICAgIGlu c2VydGVkIGludG8gdGhlIGNoaWxkIGNvbHVtbnMgaWYgdGhlIGNvcnJlc3BvbmRpbmcKKyAg ICAgdmFsdWVzIGFyZSBtaXNzaW5nLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAg VGhpcyBpcyB0aGUgZGVmYXVsdCBvcHRpb24gZm9yIGpvaW5pbmcgY29sdW1ucyB3aXRoIHBh cmVudC9jaGlsZCByZWxhdGlvbnNoaXAuCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICAgPHBhcmE+ CisgICAgIFRvIGpvaW4gc2libGluZyBjb2x1bW5zLCB5b3UgY2FuIHVzZToKKyAgICA8L3Bh cmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ CisgICAgIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxsaXRlcmFsPkZVTEwgT1VURVIgSk9J TiBPTiBGQUxTRTwvbGl0ZXJhbD4sIHNvIHRoYXQgYm90aCBwYXJlbnQgYW5kIGNoaWxkCisg ICAgIHJvd3MgYXJlIGluY2x1ZGVkIGludG8gdGhlIG91dHB1dCwgd2l0aCBOVUxMIHZhbHVl cyBpbnNlcnRlZAorICAgICBpbnRvIGJvdGggY2hpbGQgYW5kIHBhcnJlbnQgY29sdW1ucyBm b3IgYWxsIG1pc3NpbmcgdmFsdWVzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAg VGhpcyBpcyB0aGUgZGVmYXVsdCBvcHRpb24gZm9yIGpvaW5pbmcgc2libGluZyBjb2x1bW5z LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkNST1NTPC9s aXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAg ICAgVXNlIDxsaXRlcmFsPkNST1NTIEpPSU48L2xpdGVyYWw+LCBzbyB0aGF0IHRoZSBvdXRw dXQgaW5jbHVkZXMgCisgICAgIGEgcm93IGZvciBldmVyeSBwb3NzaWJsZSBjb21iaW5hdGlv biBvZiByb3dzIGZyb20gdGhlIGxlZnQtaGFuZAorICAgICBhbmQgdGhlIHJpZ2h0LWhhbmQg Y29sdW1ucy4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCiAgIDwvdmFyaWFibGVsaXN0PgogCisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3Q1PgogCiAgICAgPHNl Y3Q1PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBkNmYwNWJkNThkLi4wMjJlNzYzODQ1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMjY4MCw2ICsyNjgwLDcgQEAgX2NvcHlK c29uVGFibGUoY29uc3QgSnNvblRhYmxlICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChjb2x1 bW5zKTsKIAlDT1BZX05PREVfRklFTEQob25fZXJyb3IpOwogCUNPUFlfTk9ERV9GSUVMRChh bGlhcyk7CisJQ09QWV9TQ0FMQVJfRklFTEQoam9pbl90eXBlKTsKIAlDT1BZX1NDQUxBUl9G SUVMRChsb2NhdGlvbik7CiAKIAlyZXR1cm4gbmV3bm9kZTsKQEAgLTI3MTgsNiArMjcxOSw4 IEBAIF9jb3B5SnNvblRhYmxlUGFyZW50Tm9kZShjb25zdCBKc29uVGFibGVQYXJlbnROb2Rl ICpmcm9tKQogCiAJQ09QWV9OT0RFX0ZJRUxEKHBhdGgpOwogCUNPUFlfTk9ERV9GSUVMRChj aGlsZCk7CisJQ09QWV9TQ0FMQVJfRklFTEQob3V0ZXJKb2luKTsKKwlDT1BZX1NDQUxBUl9G SUVMRCh1bmlvbkpvaW4pOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGNvbE1pbik7CiAJQ09QWV9T Q0FMQVJfRklFTEQoY29sTWF4KTsKIApAQCAtMjczNCw2ICsyNzM3LDcgQEAgX2NvcHlKc29u VGFibGVTaWJsaW5nTm9kZShjb25zdCBKc29uVGFibGVTaWJsaW5nTm9kZSAqZnJvbSkKIAog CUNPUFlfTk9ERV9GSUVMRChsYXJnKTsKIAlDT1BZX05PREVfRklFTEQocmFyZyk7CisJQ09Q WV9TQ0FMQVJfRklFTEQoY3Jvc3MpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9lcXVhbGZ1bmNzLmMKaW5kZXggNDgxMGVhNzRmMy4uMDM0NjllNTFjYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL2VxdWFsZnVuY3MuYwpAQCAtMTUyLDYgKzE1Miw4IEBAIF9lcXVhbEpzb25UYWJsZVBh cmVudE5vZGUoY29uc3QgSnNvblRhYmxlUGFyZW50Tm9kZSAqYSwgY29uc3QgSnNvblRhYmxl UGFyZW50Tm9kCiB7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHBhdGgpOwogCUNPTVBBUkVfTk9E RV9GSUVMRChjaGlsZCk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQob3V0ZXJKb2luKTsKKwlD T01QQVJFX1NDQUxBUl9GSUVMRCh1bmlvbkpvaW4pOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KGNvbE1pbik7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY29sTWF4KTsKIApAQCAtMTYzLDYg KzE2NSw3IEBAIF9lcXVhbEpzb25UYWJsZVNpYmxpbmdOb2RlKGNvbnN0IEpzb25UYWJsZVNp YmxpbmdOb2RlICphLCBjb25zdCBKc29uVGFibGVTaWJsaW5nCiB7CiAJQ09NUEFSRV9OT0RF X0ZJRUxEKGxhcmcpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChyYXJnKTsKKwlDT01QQVJFX1ND QUxBUl9GSUVMRChjcm9zcyk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jCmluZGV4IGFjYmI0ZWJjZWQuLmU2MjdiMGJjYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YwpAQCAtMTg3NSw2ICsxODc1LDggQEAgX291dEpzb25UYWJsZVBhcmVudE5vZGUoU3RyaW5n SW5mbyBzdHIsIGNvbnN0IEpzb25UYWJsZVBhcmVudE5vZGUgKm5vZGUpCiAKIAlXUklURV9O T0RFX0ZJRUxEKHBhdGgpOwogCVdSSVRFX05PREVfRklFTEQoY2hpbGQpOworCVdSSVRFX0JP T0xfRklFTEQob3V0ZXJKb2luKTsKKwlXUklURV9CT09MX0ZJRUxEKHVuaW9uSm9pbik7CiAJ V1JJVEVfSU5UX0ZJRUxEKGNvbE1pbik7CiAJV1JJVEVfSU5UX0ZJRUxEKGNvbE1heCk7CiB9 CkBAIC0xODg2LDYgKzE4ODgsNyBAQCBfb3V0SnNvblRhYmxlU2libGluZ05vZGUoU3RyaW5n SW5mbyBzdHIsIGNvbnN0IEpzb25UYWJsZVNpYmxpbmdOb2RlICpub2RlKQogCiAJV1JJVEVf Tk9ERV9GSUVMRChsYXJnKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJhcmcpOworCVdSSVRFX0JP T0xfRklFTEQoY3Jvc3MpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvcmVhZGZ1bmNzLmMKaW5kZXggZDgyZmMyMmNkNi4uMjY3MTM3ZmNlMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvcmVhZGZ1bmNzLmMKQEAgLTE1MDQsNiArMTUwNCw4IEBAIF9yZWFkSnNvblRhYmxlUGFy ZW50Tm9kZSh2b2lkKQogCiAJUkVBRF9OT0RFX0ZJRUxEKHBhdGgpOwogCVJFQURfTk9ERV9G SUVMRChjaGlsZCk7CisJUkVBRF9CT09MX0ZJRUxEKG91dGVySm9pbik7CisJUkVBRF9CT09M X0ZJRUxEKHVuaW9uSm9pbik7CiAJUkVBRF9JTlRfRklFTEQoY29sTWluKTsKIAlSRUFEX0lO VF9GSUVMRChjb2xNYXgpOwogCkBAIC0xNTE3LDYgKzE1MTksNyBAQCBfcmVhZEpzb25UYWJs ZVNpYmxpbmdOb2RlKHZvaWQpCiAKIAlSRUFEX05PREVfRklFTEQobGFyZyk7CiAJUkVBRF9O T0RFX0ZJRUxEKHJhcmcpOworCVJFQURfQk9PTF9GSUVMRChjcm9zcyk7CiAKIAlSRUFEX0RP TkUoKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGY2MWNlNmUwY2YuLjg3ZGRjYjA5MTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtNjkxLDYgKzY5MSwxMSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCiAldHlwZSA8aXZhbD4JCWpzb25fZW5jb2RpbmcKIAkJCQkJanNvbl9lbmNv ZGluZ19jbGF1c2Vfb3B0CisJCQkJCWpzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0CisJCQkJ CWpzb25fdGFibGVfZGVmYXVsdF9wbGFuCisJCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFu X2Nob2ljZXMKKwkJCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJ CQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jvc3MKIAkJCQkJanNvbl93cmFw cGVyX2NsYXVzZV9vcHQKIAkJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCiAJCQkJCWpzb25f Y29uZGl0aW9uYWxfb3JfdW5jb25kaXRpb25hbF9vcHQKQEAgLTgwNCw3ICs4MDksNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU9SREVSIE9SRElOQUxJVFkgT1RIRVJTIE9V VF9QIE9VVEVSX1AKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBP V05FUgogCi0JUEFSQUxMRUwgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFT U1dPUkQgUEFUSCBQTEFDSU5HIFBMQU5TIFBPTElDWQorCVBBUkFMTEVMIFBBUlNFUiBQQVJU SUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JEIFBBVEggUExBQ0lORyBQTEFOIFBMQU5T IFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFS RSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NF RFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIApAQCAtMTU2ODIsMTMgKzE1 Njg3LDE1IEBAIGpzb25fdGFibGU6CiAJCQlKU09OX1RBQkxFICcoJwogCQkJCWpzb25fYXBp X2NvbW1vbl9zeW50YXgKIAkJCQlqc29uX3RhYmxlX2NvbHVtbnNfY2xhdXNlCisJCQkJanNv bl90YWJsZV9wbGFuX2NsYXVzZV9vcHQKIAkJCQlqc29uX3RhYmxlX2Vycm9yX2NsYXVzZV9v cHQKIAkJCScpJwogCQkJCXsKIAkJCQkJSnNvblRhYmxlICpuID0gbWFrZU5vZGUoSnNvblRh YmxlKTsKIAkJCQkJbi0+Y29tbW9uID0gKEpzb25Db21tb24gKikgJDM7CiAJCQkJCW4tPmNv bHVtbnMgPSAkNDsKLQkJCQkJbi0+b25fZXJyb3IgPSAkNTsKKwkJCQkJbi0+am9pbl90eXBl ID0gJDU7CisJCQkJCW4tPm9uX2Vycm9yID0gJDY7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xNTgyNSw2ICsxNTgzMiwzNCBA QCBwYXRoX29wdDoKIAkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyB9CiAJCTsKIAoranNvbl90 YWJsZV9wbGFuX2NsYXVzZV9vcHQ6CisJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbgkJCQkJ eyAkJCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJCXsgJCQgPSBKU1RQSl9PVVRF UiB8IEpTVFBKX1VOSU9OOyB9CisJCTsKKworanNvbl90YWJsZV9kZWZhdWx0X3BsYW46CisJ CQlQTEFOIERFRkFVTFQgJygnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXMgJykn IHsgJCQgPSAkNDsgfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXM6 CisJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlcgkJCXsgJCQgPSAkMSB8 IEpTVFBKX1VOSU9OOyB9CisJCQl8IGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291 dGVyICcsJworCQkJICBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91bmlvbl9jcm9zcwkJeyAk JCA9ICQxIHwgJDM7IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jv c3MJCXsgJCQgPSAkMSB8IEpTVFBKX09VVEVSOyB9CisJCQl8IGpzb25fdGFibGVfZGVmYXVs dF9wbGFuX3VuaW9uX2Nyb3NzICcsJworCQkJICBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9p bm5lcl9vdXRlcgkJeyAkJCA9ICQxIHwgJDM7IH0KKwkJOworCitqc29uX3RhYmxlX2RlZmF1 bHRfcGxhbl9pbm5lcl9vdXRlcjoKKwkJCUlOTkVSX1AJCQkJCQkJCQkJeyAkJCA9IEpTVFBK X0lOTkVSOyB9CisJCQl8IE9VVEVSX1AJCQkJCQkJCQl7ICQkID0gSlNUUEpfT1VURVI7IH0K KwkJOworCitqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91bmlvbl9jcm9zczoKKwkJCVVOSU9O CQkJCQkJCQkJCXsgJCQgPSBKU1RQSl9VTklPTjsgfQorCQkJfCBDUk9TUwkJCQkJCQkJCQl7 ICQkID0gSlNUUEpfQ1JPU1M7IH0KKwkJOworCiBqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0 OgogCQkJUkVUVVJOSU5HIFR5cGVuYW1lCiAJCQkJewpAQCAtMTY3MDMsNiArMTY3MzgsNyBA QCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJ CXwgUEFUSAorCQkJfCBQTEFOCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQogCQkJfCBQUkVD RURJTkcKQEAgLTE3MzE4LDYgKzE3MzU0LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJ fCBQQVNTV09SRAogCQkJfCBQQVRICiAJCQl8IFBMQUNJTkcKKwkJCXwgUExBTgogCQkJfCBQ TEFOUwogCQkJfCBQT0xJQ1kKIAkJCXwgUE9TSVRJT04KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9qc29udGFibGUuYwppbmRleCA5OGQyMjhiMDMwLi5kYjc3Mjk5NWFjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCkBAIC0xNzQsMTIgKzE3NCwxMyBAQCB0cmFu c2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4oSnNvblRhYmxlQ29udGV4dCAqY3h0LCBKc29u VGFibGVDb2x1bW4gKmp0YykKIH0KIAogc3RhdGljIE5vZGUgKgotbWFrZUpzb25UYWJsZVNp YmxpbmdKb2luKE5vZGUgKmxub2RlLCBOb2RlICpybm9kZSkKK21ha2VKc29uVGFibGVTaWJs aW5nSm9pbihib29sIGNyb3NzLCBOb2RlICpsbm9kZSwgTm9kZSAqcm5vZGUpCiB7CiAJSnNv blRhYmxlU2libGluZ05vZGUgKmpvaW4gPSBtYWtlTm9kZShKc29uVGFibGVTaWJsaW5nTm9k ZSk7CiAKIAlqb2luLT5sYXJnID0gbG5vZGU7CiAJam9pbi0+cmFyZyA9IHJub2RlOworCWpv aW4tPmNyb3NzID0gY3Jvc3M7CiAKIAlyZXR1cm4gKE5vZGUgKikgam9pbjsKIH0KQEAgLTE4 Nyw3ICsxODgsNyBAQCBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4oTm9kZSAqbG5vZGUsIE5v ZGUgKnJub2RlKQogLyoKICAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybSBjaGlsZCAobmVzdGVk KSBKU09OX1RBQkxFIGNvbHVtbnMuCiAgKgotICogQ2hpbGQgY29sdW1ucyBhcmUgdHJhbnNm b3JtZWQgaW50byBhIGJpbmFyeSB0cmVlIG9mIHVuaW9uLWpvaW5lZAorICogQ2hpbGQgY29s dW1ucyBhcmUgdHJhbnNmb3JtZWQgaW50byBhIGJpbmFyeSB0cmVlIG9mIHVuaW9uL2Nyb3Nz LWpvaW5lZAogICogSnNvblRhYmxlU2libGluZ05vZGVzLgogICovCiBzdGF0aWMgTm9kZSAq CkBAIC0xOTUsOCArMTk2LDkgQEAgdHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRDb2x1bW5zKEpz b25UYWJsZUNvbnRleHQgKmN4dCwgTGlzdCAqY29sdW1ucykKIHsKIAlOb2RlCSAgICpyZXMg PSBOVUxMOwogCUxpc3RDZWxsICAgKmxjOworCWJvb2wJCWNyb3NzID0gY3h0LT50YWJsZS0+ am9pbl90eXBlICYgSlNUUEpfQ1JPU1M7CiAKLQkvKiB0cmFuc2Zvcm0gYWxsIG5lc3RlZCBj b2x1bW5zIGludG8gdW5pb24gam9pbiAqLworCS8qIHRyYW5zZm9ybSBhbGwgbmVzdGVkIGNv bHVtbnMgaW50byB1bmlvbi9jcm9zIGpvaW4gKi8KIAlmb3JlYWNoKGxjLCBjb2x1bW5zKQog CXsKIAkJSnNvblRhYmxlQ29sdW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4s IGxmaXJzdChsYykpOwpAQCAtMjA4LDcgKzIxMCw3IEBAIHRyYW5zZm9ybUpzb25UYWJsZUNo aWxkQ29sdW1ucyhKc29uVGFibGVDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMpCiAJCW5v ZGUgPSB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4oY3h0LCBqdGMpOwogCiAJCS8q IGpvaW4gdHJhbnNmb3JtZWQgbm9kZSB3aXRoIHByZXZpb3VzIHNpYmxpbmcgbm9kZXMgKi8K LQkJcmVzID0gcmVzID8gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKHJlcywgbm9kZSkgOiBu b2RlOworCQlyZXMgPSByZXMgPyBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4oY3Jvc3MsIHJl cywgbm9kZSkgOiBub2RlOwogCX0KIAogCXJldHVybiByZXM7CkBAIC0zODYsNiArMzg4LDkg QEAgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVDb250ZXh0ICpjeHQsIExp c3QgKmNvbHVtbnMsIGNoYXIgKnBhdGhTcGVjLAogCS8qIHRyYW5zZm9ybSByZWN1cnNpdmVs eSBuZXN0ZWQgY29sdW1ucyAqLwogCW5vZGUtPmNoaWxkID0gdHJhbnNmb3JtSnNvblRhYmxl Q2hpbGRDb2x1bW5zKGN4dCwgY29sdW1ucyk7CiAKKwlub2RlLT5vdXRlckpvaW4gPSBjeHQt PnRhYmxlLT5qb2luX3R5cGUgJiBKU1RQSl9PVVRFUjsKKwlub2RlLT51bmlvbkpvaW4gPSBj eHQtPnRhYmxlLT5qb2luX3R5cGUgJiBKU1RQSl9VTklPTjsKKwogCXJldHVybiBub2RlOwog fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCBmMDA3OGI3 ODc0Li5mODUwMzkyYWIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVj LmMKQEAgLTE3NSw2ICsxNzUsNyBAQCBzdHJ1Y3QgSnNvblRhYmxlU2NhblN0YXRlCiAJRGF0 dW0JCWN1cnJlbnQ7CiAJaW50CQkJb3JkaW5hbDsKIAlib29sCQljdXJyZW50SXNOdWxsOwor CWJvb2wJCW91dGVySm9pbjsKIAlib29sCQllcnJvck9uRXJyb3I7CiAJYm9vbAkJYWR2YW5j ZU5lc3RlZDsKIAlib29sCQlyZXNldDsKQEAgLTE4OCw2ICsxODksNyBAQCBzdHJ1Y3QgSnNv blRhYmxlSm9pblN0YXRlCiAJCXsKIAkJCUpzb25UYWJsZUpvaW5TdGF0ZSAqbGVmdDsKIAkJ CUpzb25UYWJsZUpvaW5TdGF0ZSAqcmlnaHQ7CisJCQlib29sCQljcm9zczsKIAkJCWJvb2wJ CWFkdmFuY2VSaWdodDsKIAkJfQkJCWpvaW47CiAJCUpzb25UYWJsZVNjYW5TdGF0ZSBzY2Fu OwpAQCAtMzE2Niw2ICszMTY4LDcgQEAgSnNvblRhYmxlSW5pdFNjYW5TdGF0ZShKc29uVGFi bGVDb250ZXh0ICpjeHQsIEpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbiwKIAlpbnQJCQlpOwog CiAJc2Nhbi0+cGFyZW50ID0gcGFyZW50OworCXNjYW4tPm91dGVySm9pbiA9IG5vZGUtPm91 dGVySm9pbjsKIAlzY2FuLT5lcnJvck9uRXJyb3IgPSBub2RlLT5lcnJvck9uRXJyb3I7CiAJ c2Nhbi0+cGF0aCA9IERhdHVtR2V0SnNvblBhdGhQKG5vZGUtPnBhdGgtPmNvbnN0dmFsdWUp OwogCXNjYW4tPmFyZ3MgPSBhcmdzOwpAQCAtMzE5Miw2ICszMTk1LDcgQEAgSnNvblRhYmxl SW5pdFBsYW5TdGF0ZShKc29uVGFibGVDb250ZXh0ICpjeHQsIE5vZGUgKnBsYW4sCiAJCUpz b25UYWJsZVNpYmxpbmdOb2RlICpqb2luID0gY2FzdE5vZGUoSnNvblRhYmxlU2libGluZ05v ZGUsIHBsYW4pOwogCiAJCXN0YXRlLT5pc19qb2luID0gdHJ1ZTsKKwkJc3RhdGUtPnUuam9p bi5jcm9zcyA9IGpvaW4tPmNyb3NzOwogCQlzdGF0ZS0+dS5qb2luLmxlZnQgPSBKc29uVGFi bGVJbml0UGxhblN0YXRlKGN4dCwgam9pbi0+bGFyZywgcGFyZW50KTsKIAkJc3RhdGUtPnUu am9pbi5yaWdodCA9IEpzb25UYWJsZUluaXRQbGFuU3RhdGUoY3h0LCBqb2luLT5yYXJnLCBw YXJlbnQpOwogCX0KQEAgLTMzMjgsOCArMzMzMiwyNiBAQCBKc29uVGFibGVTZXREb2N1bWVu dChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBEYXR1bSB2YWx1ZSkKIAlKc29uVGFibGVS ZXNldENvbnRleHRJdGVtKCZjeHQtPnJvb3QsIHZhbHVlKTsKIH0KIAorLyogUmVjdXJzaXZl bHkgcmVzZXQgc2NhbiBhbmQgaXRzIGNoaWxkIG5vZGVzICovCitzdGF0aWMgdm9pZAorSnNv blRhYmxlUmVzY2FuUmVjdXJzaXZlKEpzb25UYWJsZUpvaW5TdGF0ZSAqc3RhdGUpCit7CisJ aWYgKHN0YXRlLT5pc19qb2luKQorCXsKKwkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZlKHN0 YXRlLT51LmpvaW4ubGVmdCk7CisJCUpzb25UYWJsZVJlc2NhblJlY3Vyc2l2ZShzdGF0ZS0+ dS5qb2luLnJpZ2h0KTsKKwkJc3RhdGUtPnUuam9pbi5hZHZhbmNlUmlnaHQgPSBmYWxzZTsK Kwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlUmVzY2FuKCZzdGF0ZS0+dS5zY2FuKTsKKwkJ aWYgKHN0YXRlLT51LnNjYW4ubmVzdGVkKQorCQkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZl KHN0YXRlLT51LnNjYW4ubmVzdGVkKTsKKwl9Cit9CisKIC8qCi0gKiBGZXRjaCBuZXh0IHJv dyBmcm9tIGEgdW5pb24gam9pbmVkIHNjYW4uCisgKiBGZXRjaCBuZXh0IHJvdyBmcm9tIGEg Y3Jvc3MvdW5pb24gam9pbmVkIHNjYW4uCiAgKgogICogUmV0dXJuZWQgZmFsc2UgYXQgdGhl IGVuZCBvZiBhIHNjYW4sIHRydWUgb3RoZXJ3aXNlLgogICovCkBAIC0zMzM5LDE3ICszMzYx LDQ4IEBAIEpzb25UYWJsZU5leHRKb2luUm93KEpzb25UYWJsZUpvaW5TdGF0ZSAqc3RhdGUp CiAJaWYgKCFzdGF0ZS0+aXNfam9pbikKIAkJcmV0dXJuIEpzb25UYWJsZU5leHRSb3coJnN0 YXRlLT51LnNjYW4pOwogCi0JaWYgKCFzdGF0ZS0+dS5qb2luLmFkdmFuY2VSaWdodCkKKwlp ZiAoc3RhdGUtPnUuam9pbi5hZHZhbmNlUmlnaHQpCiAJewotCQkvKiBmZXRjaCBuZXh0IG91 dGVyIHJvdyAqLwotCQlpZiAoSnNvblRhYmxlTmV4dEpvaW5Sb3coc3RhdGUtPnUuam9pbi5s ZWZ0KSkKKwkJLyogZmV0Y2ggbmV4dCBpbm5lciByb3cgKi8KKwkJaWYgKEpzb25UYWJsZU5l eHRKb2luUm93KHN0YXRlLT51LmpvaW4ucmlnaHQpKQogCQkJcmV0dXJuIHRydWU7CiAKLQkJ c3RhdGUtPnUuam9pbi5hZHZhbmNlUmlnaHQgPSB0cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAq LworCQkvKiBpbm5lciByb3dzIGFyZSBleGhhdXN0ZWQgKi8KKwkJaWYgKHN0YXRlLT51Lmpv aW4uY3Jvc3MpCisJCQlzdGF0ZS0+dS5qb2luLmFkdmFuY2VSaWdodCA9IGZhbHNlOwkvKiBu ZXh0IG91dGVyIHJvdyAqLworCQllbHNlCisJCQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBz Y2FuICovCiAJfQogCi0JLyogZmV0Y2ggbmV4dCBpbm5lciByb3cgKi8KLQlyZXR1cm4gSnNv blRhYmxlTmV4dEpvaW5Sb3coc3RhdGUtPnUuam9pbi5yaWdodCk7CisJd2hpbGUgKCFzdGF0 ZS0+dS5qb2luLmFkdmFuY2VSaWdodCkKKwl7CisJCS8qIGZldGNoIG5leHQgb3V0ZXIgcm93 ICovCisJCWJvb2wJCWxlZnQgPSBKc29uVGFibGVOZXh0Sm9pblJvdyhzdGF0ZS0+dS5qb2lu LmxlZnQpOworCisJCWlmIChzdGF0ZS0+dS5qb2luLmNyb3NzKQorCQl7CisJCQlpZiAoIWxl ZnQpCisJCQkJcmV0dXJuIGZhbHNlOwkvKiBlbmQgb2Ygc2NhbiAqLworCisJCQlKc29uVGFi bGVSZXNjYW5SZWN1cnNpdmUoc3RhdGUtPnUuam9pbi5yaWdodCk7CisKKwkJCWlmICghSnNv blRhYmxlTmV4dEpvaW5Sb3coc3RhdGUtPnUuam9pbi5yaWdodCkpCisJCQkJY29udGludWU7 CS8qIG5leHQgb3V0ZXIgcm93ICovCisKKwkJCXN0YXRlLT51LmpvaW4uYWR2YW5jZVJpZ2h0 ID0gdHJ1ZTsJLyogbmV4dCBpbm5lciByb3cgKi8KKwkJfQorCQllbHNlIGlmICghbGVmdCkK KwkJeworCQkJaWYgKCFKc29uVGFibGVOZXh0Sm9pblJvdyhzdGF0ZS0+dS5qb2luLnJpZ2h0 KSkKKwkJCQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCisKKwkJCXN0YXRlLT51 LmpvaW4uYWR2YW5jZVJpZ2h0ID0gdHJ1ZTsJLyogbmV4dCBpbm5lciByb3cgKi8KKwkJfQor CisJCWJyZWFrOworCX0KKworCXJldHVybiB0cnVlOwogfQogCiAvKiBSZWN1cnNpdmVseSBz ZXQgJ3Jlc2V0JyBmbGFnIG9mIHNjYW4gYW5kIGl0cyBjaGlsZCBub2RlcyAqLwpAQCAtMzM3 MywxNiArMzQyNiwxMyBAQCBKc29uVGFibGVKb2luUmVzZXQoSnNvblRhYmxlSm9pblN0YXRl ICpzdGF0ZSkKIH0KIAogLyoKLSAqIEZldGNoIG5leHQgcm93IGZyb20gYSBzaW1wbGUgc2Nh biB3aXRoIG91dGVyIGpvaW5lZCBuZXN0ZWQgc3Vic2NhbnMuCisgKiBGZXRjaCBuZXh0IHJv dyBmcm9tIGEgc2ltcGxlIHNjYW4gd2l0aCBvdXRlci9pbm5lciBqb2luZWQgbmVzdGVkIHN1 YnNjYW5zLgogICoKICAqIFJldHVybmVkIGZhbHNlIGF0IHRoZSBlbmQgb2YgYSBzY2FuLCB0 cnVlIG90aGVyd2lzZS4KICAqLwogc3RhdGljIGJvb2wKIEpzb25UYWJsZU5leHRSb3coSnNv blRhYmxlU2NhblN0YXRlICpzY2FuKQogewotCUpzb25iVmFsdWUgKmpidjsKLQlNZW1vcnlD b250ZXh0IG9sZGN4dDsKLQogCS8qIHJlc2V0IGNvbnRleHQgaXRlbSBpZiByZXF1ZXN0ZWQg Ki8KIAlpZiAoc2Nhbi0+cmVzZXQpCiAJewpAQCAtMzM5NCwzNCArMzQ0NCw0NCBAQCBKc29u VGFibGVOZXh0Um93KEpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbikKIAlpZiAoc2Nhbi0+YWR2 YW5jZU5lc3RlZCkKIAl7CiAJCS8qIGZldGNoIG5leHQgbmVzdGVkIHJvdyAqLwotCQlpZiAo SnNvblRhYmxlTmV4dEpvaW5Sb3coc2Nhbi0+bmVzdGVkKSkKLQkJCXJldHVybiB0cnVlOwor CQlzY2FuLT5hZHZhbmNlTmVzdGVkID0gSnNvblRhYmxlTmV4dEpvaW5Sb3coc2Nhbi0+bmVz dGVkKTsKIAotCQlzY2FuLT5hZHZhbmNlTmVzdGVkID0gZmFsc2U7CisJCWlmIChzY2FuLT5h ZHZhbmNlTmVzdGVkKQorCQkJcmV0dXJuIHRydWU7CiAJfQogCi0JLyogZmV0Y2ggbmV4dCBy b3cgKi8KLQlqYnYgPSBKc29uVmFsdWVMaXN0TmV4dCgmc2Nhbi0+Zm91bmQsICZzY2FuLT5p dGVyKTsKLQotCWlmICghamJ2KQorCWZvciAoOzspCiAJewotCQlzY2FuLT5jdXJyZW50ID0g UG9pbnRlckdldERhdHVtKE5VTEwpOwotCQlzY2FuLT5jdXJyZW50SXNOdWxsID0gdHJ1ZTsK LQkJcmV0dXJuIGZhbHNlOwkvKiBlbmQgb2Ygc2NhbiAqLwotCX0KKwkJLyogZmV0Y2ggbmV4 dCByb3cgKi8KKwkJSnNvbmJWYWx1ZSAqamJ2ID0gSnNvblZhbHVlTGlzdE5leHQoJnNjYW4t PmZvdW5kLCAmc2Nhbi0+aXRlcik7CisJCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCi0JLyog c2V0IGN1cnJlbnQgcm93IGl0ZW0gKi8KLQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oc2Nhbi0+bWN4dCk7Ci0Jc2Nhbi0+Y3VycmVudCA9IEpzb25iUEdldERhdHVtKEpzb25i VmFsdWVUb0pzb25iKGpidikpOwotCXNjYW4tPmN1cnJlbnRJc051bGwgPSBmYWxzZTsKLQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwkJaWYgKCFqYnYpCisJCXsKKwkJCXNj YW4tPmN1cnJlbnQgPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCQlzY2FuLT5jdXJyZW50 SXNOdWxsID0gdHJ1ZTsKKwkJCXJldHVybiBmYWxzZTsJLyogZW5kIG9mIHNjYW4gKi8KKwkJ fQogCi0Jc2Nhbi0+b3JkaW5hbCsrOworCQkvKiBzZXQgY3VycmVudCByb3cgaXRlbSAqLwor CQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc2Nhbi0+bWN4dCk7CisJCXNjYW4t PmN1cnJlbnQgPSBKc29uYlBHZXREYXR1bShKc29uYlZhbHVlVG9Kc29uYihqYnYpKTsKKwkJ c2Nhbi0+Y3VycmVudElzTnVsbCA9IGZhbHNlOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKKworCQlzY2FuLT5vcmRpbmFsKys7CisKKwkJaWYgKCFzY2FuLT5uZXN0ZWQp CisJCQlicmVhazsKIAotCWlmIChzY2FuLT5uZXN0ZWQpCi0JewogCQlKc29uVGFibGVKb2lu UmVzZXQoc2Nhbi0+bmVzdGVkKTsKKwogCQlzY2FuLT5hZHZhbmNlTmVzdGVkID0gSnNvblRh YmxlTmV4dEpvaW5Sb3coc2Nhbi0+bmVzdGVkKTsKKworCQlpZiAoc2Nhbi0+YWR2YW5jZU5l c3RlZCB8fCBzY2FuLT5vdXRlckpvaW4pCisJCQlicmVhazsKKworCQkvKiBzdGF0ZS0+b3Jk aW5hbC0tOyAqLwkvKiBza2lwIGN1cnJlbnQgb3V0ZXIgcm93LCByZXNldCBjb3VudGVyICov CiAJfQogCiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5k ZXggZjRjODEwYzg2Ny4uNTA4YWNiYmQ1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwpAQCAtMTEyODMsNiArMTEyODMsMTUgQEAgZ2V0X2pzb25fdGFibGUoVGFibGVGdW5j ICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAog CWdldF9qc29uX3RhYmxlX2NvbHVtbnModGYsIHJvb3QsIGNvbnRleHQsIHNob3dpbXBsaWNp dCk7CiAKKwlpZiAoIXJvb3QtPm91dGVySm9pbiB8fCAhcm9vdC0+dW5pb25Kb2luKQorCXsK KwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRDb250ZXh0S2V5 d29yZChjb250ZXh0LCAiUExBTiBERUZBVUxUIiwgMCwgMCwgMCk7CisJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiKCVzLCAlcykiLAorCQkJCQkJIHJvb3QtPm91dGVySm9pbiA/ICJPVVRF UiIgOiAiSU5ORVIiLAorCQkJCQkJIHJvb3QtPnVuaW9uSm9pbiA/ICJVTklPTiIgOiAiQ1JP U1MiKTsKKwl9CisKIAlpZiAoamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFW SU9SX0VNUFRZKQogCQlnZXRfanNvbl9iZWhhdmlvcihqZXhwci0+b25fZXJyb3IsIGNvbnRl eHQsICJFUlJPUiIpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYjMzYTljMTNi YS4uNmRkNTJjNTljMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTY1Niw2ICsx NjU2LDE4IEBAIHR5cGVkZWYgc3RydWN0IEpzb25UYWJsZUNvbHVtbgogCWludAkJCWxvY2F0 aW9uOwkJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IEpzb25U YWJsZUNvbHVtbjsKIAorLyoKKyAqIEpzb25UYWJsZVBsYW5Kb2luVHlwZSAtCisgKgkJZmxh Z3MgZm9yIEpTT05fVEFCTEUgam9pbiB0eXBlcyByZXByZXNlbnRhdGlvbgorICovCit0eXBl ZGVmIGVudW0gSnNvblRhYmxlUGxhbkpvaW5UeXBlCit7CisJSlNUUEpfSU5ORVIgPSAweDAx LAorCUpTVFBKX09VVEVSID0gMHgwMiwKKwlKU1RQSl9DUk9TUyA9IDB4MDQsCisJSlNUUEpf VU5JT04gPSAweDA4LAorfSBKc29uVGFibGVQbGFuSm9pblR5cGU7CisKIC8qCiAgKiBKc29u VGFibGUgLQogICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJM RQpAQCAtMTY2NSw2ICsxNjc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlCiAJTm9k ZVRhZwkJdHlwZTsKIAlKc29uQ29tbW9uICpjb21tb247CQkJCQkvKiBjb21tb24gSlNPTiBw YXRoIHN5bnRheCBmaWVsZHMgKi8KIAlMaXN0CSAgICpjb2x1bW5zOwkJCQkvKiBsaXN0IG9m IEpzb25UYWJsZUNvbHVtbiAqLworCUpzb25UYWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGU7 CS8qIERFRkFVTFQgUExBTiBqb2luIHR5cGUgKi8KIAlKc29uQmVoYXZpb3IgKm9uX2Vycm9y OwkJCQkvKiBPTiBFUlJPUiBiZWhhdmlvciwgaWYgc3BlY2lmaWVkICovCiAJQWxpYXMJICAg KmFsaWFzOwkJCQkJLyogdGFibGUgYWxpYXMgaW4gRlJPTSBjbGF1c2UgKi8KIAlib29sCQls YXRlcmFsOwkJCQkvKiBkb2VzIGl0IGhhdmUgTEFURVJBTCBwcmVmaXg/ICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oCmluZGV4IGI2N2M3YmZhZmYuLmJmMmJhMDVhZjUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oCkBAIC0xNDc2LDYgKzE0NzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBKc29u VGFibGVQYXJlbnROb2RlCiAJTm9kZVRhZwkJdHlwZTsKIAlDb25zdAkgICAqcGF0aDsJCS8q IGpzb25wYXRoIGNvbnN0YW50ICovCiAJTm9kZQkgICAqY2hpbGQ7CQkvKiBuZXN0ZWQgY29s dW1ucywgaWYgYW55ICovCisJYm9vbAkJb3V0ZXJKb2luOwkvKiBvdXRlciBvciBpbm5lciBq b2luIGZvciBuZXN0ZWQgY29sdW1ucz8gKi8KKwlib29sCQl1bmlvbkpvaW47CS8qIHVuaW9u IG9yIGNyb3NzIGpvaW4gZm9yIG5lc3RlZCBjb2x1bW5zPyAqLwogCWludAkJCWNvbE1pbjsJ CS8qIG1pbiBjb2x1bW4gaW5kZXggaW4gdGhlIHJlc3VsdGluZyBjb2x1bW4gbGlzdCAqLwog CWludAkJCWNvbE1heDsJCS8qIG1heCBjb2x1bW4gaW5kZXggaW4gdGhlIHJlc3VsdGluZyBj b2x1bW4gbGlzdCAqLwogCWJvb2wJCWVycm9yT25FcnJvcjsgLyogRVJST1IvRU1QVFkgT04g RVJST1IgYmVoYXZpb3IgKi8KQEAgLTE0OTAsNiArMTQ5Miw3IEBAIHR5cGVkZWYgc3RydWN0 IEpzb25UYWJsZVNpYmxpbmdOb2RlCiAJTm9kZVRhZwkJdHlwZTsKIAlOb2RlCSAgICpsYXJn OwkJLyogbGVmdCBqb2luIG5vZGUgKi8KIAlOb2RlCSAgICpyYXJnOwkJLyogcmlnaHQgam9p biBub2RlICovCisJYm9vbAkJY3Jvc3M7CQkvKiBjcm9zcyBvciB1bmlvbiBqb2luPyAqLwog fSBKc29uVGFibGVTaWJsaW5nTm9kZTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCmluZGV4IGM3MzY1NzA2YTMuLmFjMTc4ODk1MTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKQEAgLTMzNCw2ICszMzQsNyBAQCBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lO RywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dv cmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQorUEdfS0VZV09SRCgicGxhbiIsIFBMQU4sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9zaXRpb24iLCBQT1NJVElP TiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0CmluZGV4IGQ4OWMzYmVmNDQuLjBjZDhmNzNj NjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNv bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91 dApAQCAtMTQyMCw2ICsxNDIwLDEyNCBAQCBmcm9tCiAgNCB8IC0xIHwgMiB8ICAgCiAoMTEg cm93cykKIAorLS0gZGVmYXVsdCBwbGFuIChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlqdC4q Citmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJ CWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQg cGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkK KwkJKQorCQlwbGFuIGRlZmF1bHQgKG91dGVyLCB1bmlvbikKKwkpIGp0OworIG4gfCBhICB8 IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAy IHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAy IHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwgICB8IDIwCisgMyB8ICAz IHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8ICAgCisgNCB8IC0x IHwgMiB8ICAgCisoMTEgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChpbm5lciwgdW5pb24p CitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90 YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWNvbHVtbnMgKAorCQkJbiBmb3Ig b3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1w dHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBh dGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGlubmVyKQorCSkganQ7Cisg biB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAyIHwgIDIgfCAxIHwgICAK KyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAK KyAyIHwgIDIgfCAgIHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAK KyAzIHwgIDMgfCAyIHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAK KygxMCByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCBjcm9zcykKK3NlbGVjdAor CWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5 LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoY3Jvc3MsIGlubmVyKQorCSkganQ7CisgbiB8 IGEgfCBiIHwgYyAgCistLS0rLS0tKy0tLSstLS0tCisgMiB8IDIgfCAxIHwgMTAKKyAyIHwg MiB8IDEgfCAgIAorIDIgfCAyIHwgMSB8IDIwCisgMiB8IDIgfCAyIHwgMTAKKyAyIHwgMiB8 IDIgfCAgIAorIDIgfCAyIHwgMiB8IDIwCisgMiB8IDIgfCAzIHwgMTAKKyAyIHwgMiB8IDMg fCAgIAorIDIgfCAyIHwgMyB8IDIwCisoOSByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKG91 dGVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0 dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScKKwkJY29sdW1ucyAo CisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVs dCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBjb2x1bW5z ICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBj b2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0ZXIs IGNyb3NzKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0K KyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAK KyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAK KyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAzIHwgICAK KyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAKKyA0IHwgLTEgfCAgIHwgICAK KygxMiByb3dzKQorCiAtLSBTaG91bGQgc3VjY2VlZCAoSlNPTiBhcmd1bWVudHMgYXJlIHBh c3NlZCB0byByb290IGFuZCBuZXN0ZWQgcGF0aHMpCiBTRUxFQ1QgKgogRlJPTQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbAppbmRleCA2NjE0ZGQ2ZTQ1Li5jZDk3 ZmY3ZjQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29u LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbApAQCAt NTQ3LDYgKzU0Nyw3MSBAQCBmcm9tCiAJCSkKIAkpIGp0OwogCistLSBkZWZhdWx0IHBsYW4g KG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0 IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScKKwkJY29sdW1u cyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVm YXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBjb2x1 bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypd JyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0 ZXIsIHVuaW9uKQorCSkganQ7CisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIHVuaW9uKQor c2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFi bGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQljb2x1bW5zICgKKwkJCW4gZm9yIG9y ZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5 LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGNvbHVtbnMgKCBiIGludCBwYXRo ICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChpbm5lcikKKwkpIGp0OworCist LSBkZWZhdWx0IHBsYW4gKGlubmVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlq c29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3Qg JFsqXScKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0 aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBs YW4gZGVmYXVsdCAoY3Jvc3MsIGlubmVyKQorCSkganQ7CisKKy0tIGRlZmF1bHQgcGxhbiAo b3V0ZXIsIGNyb3NzKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3Qg anR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQljb2x1bW5z ICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGNvbHVt bnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChvdXRl ciwgY3Jvc3MpCisJKSBqdDsKKworCiAtLSBTaG91bGQgc3VjY2VlZCAoSlNPTiBhcmd1bWVu dHMgYXJlIHBhc3NlZCB0byByb290IGFuZCBuZXN0ZWQgcGF0aHMpCiBTRUxFQ1QgKgogRlJP TQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBiYTA5NzhjZjdjLi4yNWQ5NGY3 MTYzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTI0MCw2ICsxMjQwLDcg QEAgSnNvblRhYmxlQ29sdW1uVHlwZQogSnNvblRhYmxlQ29udGV4dAogSnNvblRhYmxlSm9p blN0YXRlCiBKc29uVGFibGVQYXJlbnROb2RlCitKc29uVGFibGVQbGFuSm9pblR5cGUKIEpz b25UYWJsZVNjYW5TdGF0ZQogSnNvblRhYmxlU2libGluZ05vZGUKIEpzb25Ub2tlblR5cGUK LS0gCjIuMjUuMQoK --------------wGx6OcQsLj50vkDF0YvlnG34 Content-Type: text/x-patch; charset=UTF-8; name="0004-JSON_TABLE-PLAN-clause-v55.patch" Content-Disposition: attachment; filename="0004-JSON_TABLE-PLAN-clause-v55.patch" Content-Transfer-Encoding: base64 RnJvbSAwOGI3OTc0ZmYwNzczZWRiNzM1YTc5Yjg5ZmVjZWNiNTk2ZGJlZTc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVHVlLCAxIEZlYiAyMDIyIDEyOjIyOjUxIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCA0LzRdIEpTT05fVEFCTEUgUExBTiBjbGF1c2UKCi0tLQogZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICA5NyArKystCiBzcmMvYmFja2VuZC9u b2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9u b2Rlcy9tYWtlZnVuY3MuYyAgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL25v ZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgfCAxMDEgKysrLQogc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2pzb250YWJsZS5jICAgICAgICB8IDMyMiArKysrKysrKysrKy0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgIHwgIDU3ICsrLQog c3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgIHwgIDMxICstCiBz cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgIHwgICAyICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0IHwgNTA2ICsrKysr KysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNx bCAgICAgIHwgMzU1ICsrKysrKysrKysrKy0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCAgICAgICAgICAgIHwgICAyICsKIDE1IGZpbGVzIGNoYW5nZWQsIDEzODkgaW5z ZXJ0aW9ucygrKSwgMTM3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDY2M2MyNmFiYTIu LjU4ZWY5ZjE2NDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMTkzMTMsOSArMTkzMTMsMTAgQEAgRlJPTQog CiA8c3lub3BzaXM+CiBKU09OX1RBQkxFICgKLSAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRl bTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gPG9wdGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNl YWJsZT4gQVMgPHJlcGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25h bD4sIC4uLjwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgIDxyZXBsYWNlYWJsZT5jb250ZXh0 X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+IDxvcHRpb25hbD4gQVMgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9y ZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPG9wdGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2Vh YmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxh Y2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CiAgIENP TFVNTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJsZV9jb2x1 bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCiAgIDxvcHRp b25hbD4KKyAgICBQTEFOICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25f dGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICkgfAogICAgIFBMQU4gREVGQVVMVCAoIHsgSU5O RVIgfCBPVVRFUiB9IDxvcHRpb25hbD4gLCB7IENST1NTIHwgVU5JT04gfSA8L29wdGlvbmFs PgogICAgICAgICAgICAgICAgICB8IHsgQ1JPU1MgfCBVTklPTiB9IDxvcHRpb25hbD4gLCB7 IElOTkVSIHwgT1VURVIgfSA8L29wdGlvbmFsPiApCiAgIDwvb3B0aW9uYWw+CkBAIC0xOTMz OSw2ICsxOTM0MCwxNiBAQCB3aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiBpczoKICAgfCBORVNURUQgUEFUSCA8 cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8b3B0 aW9uYWw+IEFTIDxyZXBsYWNlYWJsZT5wYXRoX25hbWU8L3JlcGxhY2VhYmxlPiA8L29wdGlv bmFsPgogICAgICAgICBDT0xVTU5TICggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1u PC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gKQogICB8IDxyZXBs YWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gRk9SIE9SRElOQUxJVFkKKzxwaHJhc2U+Cis8 cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJsZT4gaXM6Cis8L3BocmFz ZT4KKyAgICA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPiA8b3B0 aW9uYWw+IHsgT1VURVIgfCBJTk5FUiB9IDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5f cHJpbWFyeTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2VhYmxlPmpz b25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4geyBVTklPTiA8cmVwbGFjZWFi bGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4u Li48L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFy eTwvcmVwbGFjZWFibGU+IHsgQ1JPU1MgPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9w cmltYXJ5PC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+Li4uPC9vcHRpb25hbD4KKzxwaHJh c2U+Cis8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxl PiBpczoKKzwvcGhyYXNlPgorICAgIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVw bGFjZWFibGU+IHwgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJs ZT4gKQogCiA8L3N5bm9wc2lzPgogCkBAIC0xOTM4MSw3ICsxOTM5Miw3IEBAIHdoZXJlIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFj ZWFibGU+IGlzOgogICAgICAgam9pbmVkIHRvIHRoZSByb3cgdGhhdCBnZW5lcmF0ZWQgdGhl bSwgc28geW91IGRvIG5vdCBoYXZlIHRvIGV4cGxpY2l0bHkgam9pbgogICAgICAgdGhlIGNv bnN0cnVjdGVkIHZpZXcgd2l0aCB0aGUgb3JpZ2luYWwgdGFibGUgaG9sZGluZyA8YWNyb255 bT5KU09OPC9hY3JvbnltPgogICAgICAgZGF0YS4gT3B0aW9uYWxseSwgeW91IGNhbiBzcGVj aWZ5IGhvdyB0byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVkCi0gICAgICBieSA8bGl0ZXJh bD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gdXNpbmcgdGhlIDxsaXRlcmFsPlBMQU4gREVGQVVM VDwvbGl0ZXJhbD4gY2xhdXNlLgorICAgICAgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xp dGVyYWw+IHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UuCiAgICAg IDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTE5NTY2LDcgKzE5NTc3LDcgQEAgd2hlcmUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVfY29sdW1uPC9yZXBs YWNlYWJsZT4gaXM6CiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgIFlvdSBjYW4g dXNlIHRoZSA8bGl0ZXJhbD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+IGNsYXVzZSB0byBkZWZp bmUgaG93CisgICAgIFlvdSBjYW4gdXNlIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBj bGF1c2UgdG8gZGVmaW5lIGhvdwogICAgICB0byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVk IGJ5IDxyZXBsYWNlYWJsZT5ORVNURUQgUEFUSDwvcmVwbGFjZWFibGU+IGNsYXVzZXMuCiAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CkBAIC0xOTU5MywxOCArMTk2MDQsMzEgQEAg d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVfY29sdW1u PC9yZXBsYWNlYWJsZT4gaXM6CiAKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+Ci0g ICAgIDxsaXRlcmFsPlBMQU4gREVGQVVMVCAoIDxyZXBsYWNlYWJsZT5vcHRpb248L3JlcGxh Y2VhYmxlPiA8b3B0aW9uYWw+LCAuLi4gPC9vcHRpb25hbD4gKTwvbGl0ZXJhbD4KKyAgICAg PGxpdGVyYWw+QVMgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT48 L2xpdGVyYWw+CiAgICAgPC90ZXJtPgogICAgIDxsaXN0aXRlbT4KLSAgICAgPHBhcmE+Ci0g ICAgICBEZWZpbmVzIGhvdyB0byBqb2luIHRoZSBkYXRhIHJldHVybmVkIGJ5IDxyZXBsYWNl YWJsZT5ORVNURUQgUEFUSDwvcmVwbGFjZWFibGU+Ci0gICAgICBjbGF1c2VzIHRvIHRoZSBj b25zdHJ1Y3RlZCB2aWV3LiBUaGUgPGxpdGVyYWw+SU5ORVI8L2xpdGVyYWw+IGFuZAotICAg ICAgPGxpdGVyYWw+T1VURVI8L2xpdGVyYWw+IG9wdGlvbnMgZGVmaW5lIHRoZSBqb2luaW5n IHBsYW4gZm9yIHBhcmVudC9jaGlsZAotICAgICAgY29sdW1ucywgd2hpbGUgPGxpdGVyYWw+ VU5JT048L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5DUk9TUzwvbGl0ZXJhbD4KLSAgICAgIGFm ZmVjdCB0aGUgc2libGluZyBjb2x1bW5zLiBZb3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0 IHBsYW5zIGZvciBhbGwKLSAgICAgIGNvbHVtbnMgYXQgb25jZS4KLSAgICAgPC9wYXJhPgog CisgICAgPHBhcmE+CisgICAgIFRoZSBvcHRpb25hbCA8cmVwbGFjZWFibGU+anNvbl9wYXRo X25hbWU8L3JlcGxhY2VhYmxlPiBzZXJ2ZXMgYXMgYW4KKyAgICAgaWRlbnRpZmllciBvZiB0 aGUgcHJvdmlkZWQgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBs YWNlYWJsZT4uCisgICAgIFRoZSBwYXRoIG5hbWUgbXVzdCBiZSB1bmlxdWUgYW5kIGNhbm5v dCBjb2luY2lkZSB3aXRoIGNvbHVtbiBuYW1lcy4KKyAgICAgV2hlbiB1c2luZyB0aGUgPGxp dGVyYWw+UExBTjwvbGl0ZXJhbD4gY2xhdXNlLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBuYW1l cworICAgICBmb3IgYWxsIHRoZSBwYXRocywgaW5jbHVkaW5nIHRoZSByb3cgcGF0dGVybi4g RWFjaCBwYXRoIG5hbWUgY2FuIGFwcGVhciBpbgorICAgICB0aGUgPGxpdGVyYWw+UExBTjwv bGl0ZXJhbD4gY2xhdXNlIG9ubHkgb25jZS4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PgorICAgICA8bGl0ZXJhbD5QTEFOICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICk8L2xpdGVyYWw+CisgICAgPC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBEZWZpbmVzIGhvdyB0byBq b2luIHRoZSBkYXRhIHJldHVybmVkIGJ5IDxyZXBsYWNlYWJsZT5ORVNURUQgUEFUSDwvcmVw bGFjZWFibGU+CisgICAgIGNsYXVzZXMgdG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcuCisgICAg PC9wYXJhPgogICAgIDxwYXJhPgogICAgICBUbyBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQv Y2hpbGQgcmVsYXRpb25zaGlwLCB5b3UgY2FuIHVzZToKICAgICA8L3BhcmE+CkBAIC0xOTY4 Myw2ICsxOTcwNywyMyBAQCB3aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiBpczoKIAogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4K KyAgICAgPGxpdGVyYWw+UExBTiBERUZBVUxUICggPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVw bGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLiA8L29wdGlvbmFsPiApPC9saXRlcmFsPgorICAg IDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgT3ZlcnJpZGVz IHRoZSBkZWZhdWx0IGpvaW5pbmcgcGxhbnMuIFRoZSA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJh bD4gYW5kCisgICAgICA8bGl0ZXJhbD5PVVRFUjwvbGl0ZXJhbD4gb3B0aW9ucyBkZWZpbmUg dGhlIGpvaW5pbmcgcGxhbiBmb3IgcGFyZW50L2NoaWxkCisgICAgICBjb2x1bW5zLCB3aGls ZSA8bGl0ZXJhbD5VTklPTjwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkNST1NTPC9saXRlcmFs PgorICAgICAgYWZmZWN0IHRoZSBzaWJsaW5nIGNvbHVtbnMuIFlvdSBjYW4gb3ZlcnJpZGUg dGhlIGRlZmF1bHQgcGxhbnMgZm9yIGFsbCBjb2x1bW5zIGF0IG9uY2UuCisgICAgICBFdmVu IHRob3VnaCB0aGUgcGF0aCBuYW1lcyBhcmUgbm90IGluY2x1ZGVkIGludG8gdGhlIDxsaXRl cmFsPlBMQU4gREVGQVVMVDwvbGl0ZXJhbD4KKyAgICAgIGNsYXVzZSwgdGhleSBtdXN0IGJl IHByb3ZpZGVkIGZvciBhbGwgdGhlIHBhdGhzIHRvIGNvbmZvcm0gdG8KKyAgICAgIHRoZSBT UUwvSlNPTiBzdGFuZGFyZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9zZWN0NT4KIApAQCAt MTk3MTQsOSArMTk3NTUsMzUgQEAgU0VMRUNUIGp0LiogRlJPTQogPC9zY3JlZW4+CiAgICAg IDwvcGFyYT4KIAotICAgPC9zZWN0NT4KLSAgPC9zZWN0ND4KLQorICAgICA8cGFyYT4KKyAg ICAgIEZpbmQgYSBkaXJlY3RvciB0aGF0IGhhcyBkb25lIGZpbG1zIGluIHR3byBkaWZmZXJl bnQgZ2VucmVzOgorPHNjcmVlbj4KK1NFTEVDVAorICBkaXJlY3RvcjEgQVMgZGlyZWN0b3Is IHRpdGxlMSwga2luZDEsIHRpdGxlMiwga2luZDIKK0ZST00KKyAgbXlfZmlsbXMsCisgIEpT T05fVEFCTEUgKCBqcywgJyQuZmF2b3JpdGVzJyBBUyBmYXZzIENPTFVNTlMgKAorICAgIE5F U1RFRCBQQVRIICckWypdJyBBUyBmaWxtczEgQ09MVU1OUyAoCisgICAgICBraW5kMSB0ZXh0 IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAnJC5maWxtc1sqXScgQVMgZmls bTEgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAg ICAgICBkaXJlY3RvcjEgdGV4dCBQQVRIICckLmRpcmVjdG9yJykKKyAgICApLAorICAgIE5F U1RFRCBQQVRIICckWypdJyBBUyBmaWxtczIgQ09MVU1OUyAoCisgICAgICBraW5kMiB0ZXh0 IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAnJC5maWxtc1sqXScgQVMgZmls bTIgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMiB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAg ICAgICBkaXJlY3RvcjIgdGV4dCBQQVRIICckLmRpcmVjdG9yJworICAgICAgKQorICAgICkK KyAgICkKKyAgIFBMQU4gKGZhdnMgT1VURVIgKChmaWxtczEgSU5ORVIgZmlsbTEpIENST1NT IChmaWxtczIgSU5ORVIgZmlsbTIpKSkKKyAgKSBBUyBqdAorIFdIRVJFIGtpbmQxID4ga2lu ZDIgQU5EIGRpcmVjdG9yMSA9IGRpcmVjdG9yMjsKKzwvc2NyZWVuPgorICAgICA8L3BhcmE+ CisgICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+CiAgIDwvc2VjdDM+CiAKICAgPHNlY3QzIGlk PSJmdW5jdGlvbnMtc3FsanNvbi1zZXJpYWxpemluZyI+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j CmluZGV4IDAyMmU3NjM4NDUuLjM1MGZkZjc1MzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j CkBAIC0yNjc4LDkgKzI2NzgsOSBAQCBfY29weUpzb25UYWJsZShjb25zdCBKc29uVGFibGUg KmZyb20pCiAKIAlDT1BZX05PREVfRklFTEQoY29tbW9uKTsKIAlDT1BZX05PREVfRklFTEQo Y29sdW1ucyk7CisJQ09QWV9OT0RFX0ZJRUxEKHBsYW4pOwogCUNPUFlfTk9ERV9GSUVMRChv bl9lcnJvcik7CiAJQ09QWV9OT0RFX0ZJRUxEKGFsaWFzKTsKLQlDT1BZX1NDQUxBUl9GSUVM RChqb2luX3R5cGUpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGxvY2F0aW9uKTsKIAogCXJldHVy biBuZXdub2RlOwpAQCAtMjY5OCw2ICsyNjk4LDcgQEAgX2NvcHlKc29uVGFibGVDb2x1bW4o Y29uc3QgSnNvblRhYmxlQ29sdW1uICpmcm9tKQogCUNPUFlfU1RSSU5HX0ZJRUxEKG5hbWUp OwogCUNPUFlfTk9ERV9GSUVMRCh0eXBlTmFtZSk7CiAJQ09QWV9TVFJJTkdfRklFTEQocGF0 aHNwZWMpOworCUNPUFlfU1RSSU5HX0ZJRUxEKHBhdGhuYW1lKTsKIAlDT1BZX1NDQUxBUl9G SUVMRChmb3JtYXQpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKHdyYXBwZXIpOwogCUNPUFlfU0NB TEFSX0ZJRUxEKG9taXRfcXVvdGVzKTsKQEAgLTI3MDksNiArMjcxMCwyNCBAQCBfY29weUpz b25UYWJsZUNvbHVtbihjb25zdCBKc29uVGFibGVDb2x1bW4gKmZyb20pCiAJcmV0dXJuIG5l d25vZGU7CiB9CiAKKy8qCisgKiBfY29weUpzb25UYWJsZVBsYW4KKyAqLworc3RhdGljIEpz b25UYWJsZVBsYW4gKgorX2NvcHlKc29uVGFibGVQbGFuKGNvbnN0IEpzb25UYWJsZVBsYW4g KmZyb20pCit7CisJSnNvblRhYmxlUGxhbiAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25UYWJs ZVBsYW4pOworCisJQ09QWV9TQ0FMQVJfRklFTEQocGxhbl90eXBlKTsKKwlDT1BZX1NDQUxB Ul9GSUVMRChqb2luX3R5cGUpOworCUNPUFlfU1RSSU5HX0ZJRUxEKHBhdGhuYW1lKTsKKwlD T1BZX05PREVfRklFTEQocGxhbjEpOworCUNPUFlfTk9ERV9GSUVMRChwbGFuMik7CisJQ09Q WV9TQ0FMQVJfRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIC8q CiAgKiBfY29weUpzb25UYWJsZVBhcmVudE5vZGUKICAqLwpAQCAtMjcxOCw5ICsyNzM3LDkg QEAgX2NvcHlKc29uVGFibGVQYXJlbnROb2RlKGNvbnN0IEpzb25UYWJsZVBhcmVudE5vZGUg KmZyb20pCiAJSnNvblRhYmxlUGFyZW50Tm9kZSAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25U YWJsZVBhcmVudE5vZGUpOwogCiAJQ09QWV9OT0RFX0ZJRUxEKHBhdGgpOworCUNPUFlfU1RS SU5HX0ZJRUxEKG5hbWUpOwogCUNPUFlfTk9ERV9GSUVMRChjaGlsZCk7CiAJQ09QWV9TQ0FM QVJfRklFTEQob3V0ZXJKb2luKTsKLQlDT1BZX1NDQUxBUl9GSUVMRCh1bmlvbkpvaW4pOwog CUNPUFlfU0NBTEFSX0ZJRUxEKGNvbE1pbik7CiAJQ09QWV9TQ0FMQVJfRklFTEQoY29sTWF4 KTsKIApAQCAtNTg1Myw2ICs1ODcyLDkgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAq ZnJvbSkKIAkJY2FzZSBUX0pzb25UYWJsZUNvbHVtbjoKIAkJCXJldHZhbCA9IF9jb3B5SnNv blRhYmxlQ29sdW1uKGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVGFibGVQbGFu OgorCQkJcmV0dmFsID0gX2NvcHlKc29uVGFibGVQbGFuKGZyb20pOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9Kc29uVGFibGVQYXJlbnROb2RlOgogCQkJcmV0dmFsID0gX2NvcHlKc29uVGFi bGVQYXJlbnROb2RlKGZyb20pOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMK aW5kZXggMDM0NjllNTFjYi4uN2I2Zjg5OTA3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YwpAQCAtMTUxLDkgKzE1MSw5IEBAIHN0YXRpYyBib29sCiBfZXF1YWxKc29uVGFibGVQYXJl bnROb2RlKGNvbnN0IEpzb25UYWJsZVBhcmVudE5vZGUgKmEsIGNvbnN0IEpzb25UYWJsZVBh cmVudE5vZGUgKmIpCiB7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHBhdGgpOworCUNPTVBBUkVf U1RSSU5HX0ZJRUxEKG5hbWUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChjaGlsZCk7CiAJQ09N UEFSRV9TQ0FMQVJfRklFTEQob3V0ZXJKb2luKTsKLQlDT01QQVJFX1NDQUxBUl9GSUVMRCh1 bmlvbkpvaW4pOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGNvbE1pbik7CiAJQ09NUEFSRV9T Q0FMQVJfRklFTEQoY29sTWF4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv bWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCA1MWZh YTA2MzZjLi5iMjNlODEzZDBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtl ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODY2LDYg Kzg2NiwyNSBAQCBtYWtlSnNvbkJlaGF2aW9yKEpzb25CZWhhdmlvclR5cGUgdHlwZSwgTm9k ZSAqZGVmYXVsdF9leHByKQogCXJldHVybiBiZWhhdmlvcjsKIH0KIAorLyoKKyAqIG1ha2VK c29uVGFibGVKb2luZWRQbGFuIC0KKyAqCSAgIGNyZWF0ZXMgYSBqb2luZWQgSnNvblRhYmxl UGxhbiBub2RlCisgKi8KK05vZGUgKgorbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSnNvblRh YmxlUGxhbkpvaW5UeXBlIHR5cGUsIE5vZGUgKnBsYW4xLCBOb2RlICpwbGFuMiwKKwkJCQkJ CWludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQbGFuICpuID0gbWFrZU5vZGUoSnNvblRh YmxlUGxhbik7CisKKwluLT5wbGFuX3R5cGUgPSBKU1RQX0pPSU5FRDsKKwluLT5qb2luX3R5 cGUgPSB0eXBlOworCW4tPnBsYW4xID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgcGxhbjEp OworCW4tPnBsYW4yID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgcGxhbjIpOworCW4tPmxv Y2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUgKikgbjsKK30KKwogLyoKICAq IG1ha2VKc29uRW5jb2RpbmcgLQogICoJICBjb252ZXJ0cyBKU09OIGVuY29kaW5nIG5hbWUg dG8gZW51bSBKc29uRW5jb2RpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291 dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IGU2MjdiMGJj YmUuLmMzNDRlZjY0ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMTg3NCw5ICsxODc0 LDkgQEAgX291dEpzb25UYWJsZVBhcmVudE5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEpz b25UYWJsZVBhcmVudE5vZGUgKm5vZGUpCiAJV1JJVEVfTk9ERV9UWVBFKCJKU09OVEFCUE5P REUiKTsKIAogCVdSSVRFX05PREVfRklFTEQocGF0aCk7CisJV1JJVEVfU1RSSU5HX0ZJRUxE KG5hbWUpOwogCVdSSVRFX05PREVfRklFTEQoY2hpbGQpOwogCVdSSVRFX0JPT0xfRklFTEQo b3V0ZXJKb2luKTsKLQlXUklURV9CT09MX0ZJRUxEKHVuaW9uSm9pbik7CiAJV1JJVEVfSU5U X0ZJRUxEKGNvbE1pbik7CiAJV1JJVEVfSU5UX0ZJRUxEKGNvbE1heCk7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCmluZGV4IDI2NzEzN2ZjZTIuLjdhOWExZDA0YmUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCkBAIC0xNTAzLDkgKzE1MDMsOSBAQCBfcmVhZEpzb25UYWJsZVBhcmVu dE5vZGUodm9pZCkKIAlSRUFEX0xPQ0FMUyhKc29uVGFibGVQYXJlbnROb2RlKTsKIAogCVJF QURfTk9ERV9GSUVMRChwYXRoKTsKKwlSRUFEX1NUUklOR19GSUVMRChuYW1lKTsKIAlSRUFE X05PREVfRklFTEQoY2hpbGQpOwogCVJFQURfQk9PTF9GSUVMRChvdXRlckpvaW4pOwotCVJF QURfQk9PTF9GSUVMRCh1bmlvbkpvaW4pOwogCVJFQURfSU5UX0ZJRUxEKGNvbE1pbik7CiAJ UkVBRF9JTlRfRklFTEQoY29sTWF4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggODdkZGNiMDkx Mi4uOWFkNDJmZTE2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NzYsNiArNjc2LDE4IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJCWpzb25fdGFibGVfZm9ybWF0dGVkX2Nv bHVtbl9kZWZpbml0aW9uCiAJCQkJCWpzb25fdGFibGVfZXhpc3RzX2NvbHVtbl9kZWZpbml0 aW9uCiAJCQkJCWpzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMKKwkJCQkJanNvbl90YWJsZV9w bGFuX2NsYXVzZV9vcHQKKwkJCQkJanNvbl90YWJsZV9zcGVjaWZpY19wbGFuCisJCQkJCWpz b25fdGFibGVfcGxhbgorCQkJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlCisJCQkJCWpzb25f dGFibGVfcGxhbl9wYXJlbnRfY2hpbGQKKwkJCQkJanNvbl90YWJsZV9wbGFuX291dGVyCisJ CQkJCWpzb25fdGFibGVfcGxhbl9pbm5lcgorCQkJCQlqc29uX3RhYmxlX3BsYW5fc2libGlu ZworCQkJCQlqc29uX3RhYmxlX3BsYW5fdW5pb24KKwkJCQkJanNvbl90YWJsZV9wbGFuX2Ny b3NzCisJCQkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJCWpzb25fdGFibGVfZGVm YXVsdF9wbGFuCiAKICV0eXBlIDxsaXN0PgkJanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJ CQkJCWpzb25fdmFsdWVfZXhwcl9saXN0CkBAIC02OTEsOCArNzAzLDYgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAogJXR5cGUgPGl2YWw+CQlqc29uX2VuY29kaW5nCiAJCQkJ CWpzb25fZW5jb2RpbmdfY2xhdXNlX29wdAotCQkJCQlqc29uX3RhYmxlX3BsYW5fY2xhdXNl X29wdAotCQkJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbgogCQkJCQlqc29uX3RhYmxlX2Rl ZmF1bHRfcGxhbl9jaG9pY2VzCiAJCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVy X291dGVyCiAJCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Nyb3NzCkBAIC0x NTY5NCw3ICsxNTcwNCw3IEBAIGpzb25fdGFibGU6CiAJCQkJCUpzb25UYWJsZSAqbiA9IG1h a2VOb2RlKEpzb25UYWJsZSk7CiAJCQkJCW4tPmNvbW1vbiA9IChKc29uQ29tbW9uICopICQz OwogCQkJCQluLT5jb2x1bW5zID0gJDQ7Ci0JCQkJCW4tPmpvaW5fdHlwZSA9ICQ1OworCQkJ CQluLT5wbGFuID0gKEpzb25UYWJsZVBsYW4gKikgJDU7CiAJCQkJCW4tPm9uX2Vycm9yID0g JDY7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAg LTE1ODE2LDEyICsxNTgyNiwxNSBAQCBqc29uX3RhYmxlX2Zvcm1hdHRlZF9jb2x1bW5fZGVm aW5pdGlvbjoKIAkJOwogCiBqc29uX3RhYmxlX25lc3RlZF9jb2x1bW5zOgotCQkJTkVTVEVE IHBhdGhfb3B0IFNjb25zdCBqc29uX3RhYmxlX2NvbHVtbnNfY2xhdXNlCisJCQlORVNURUQg cGF0aF9vcHQgU2NvbnN0CisJCQkJCQkJanNvbl9hc19wYXRoX25hbWVfY2xhdXNlX29wdAor CQkJCQkJCWpzb25fdGFibGVfY29sdW1uc19jbGF1c2UKIAkJCQl7CiAJCQkJCUpzb25UYWJs ZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CiAJCQkJCW4tPmNvbHR5 cGUgPSBKVENfTkVTVEVEOwogCQkJCQluLT5wYXRoc3BlYyA9ICQzOwotCQkJCQluLT5jb2x1 bW5zID0gJDQ7CisJCQkJCW4tPnBhdGhuYW1lID0gJDQ7CisJCQkJCW4tPmNvbHVtbnMgPSAk NTsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJ CX0KQEAgLTE1ODMzLDEyICsxNTg0Niw4NCBAQCBwYXRoX29wdDoKIAkJOwogCiBqc29uX3Rh YmxlX3BsYW5fY2xhdXNlX29wdDoKLQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuCQkJCQl7 ICQkID0gJDE7IH0KLQkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IEpTVFBKX09VVEVS IHwgSlNUUEpfVU5JT047IH0KKwkJCWpzb25fdGFibGVfc3BlY2lmaWNfcGxhbgkJCQl7ICQk ID0gJDE7IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW4JCQkJeyAkJCA9ICQxOyB9 CisJCQl8IC8qIEVNUFRZICovCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKworanNvbl90 YWJsZV9zcGVjaWZpY19wbGFuOgorCQkJUExBTiAnKCcganNvbl90YWJsZV9wbGFuICcpJwkJ CXsgJCQgPSAkMzsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbjoKKwkJCWpzb25fdGFibGVf cGxhbl9zaW1wbGUKKwkJCXwganNvbl90YWJsZV9wbGFuX3BhcmVudF9jaGlsZAorCQkJfCBq c29uX3RhYmxlX3BsYW5fc2libGluZworCQk7CisKK2pzb25fdGFibGVfcGxhbl9zaW1wbGU6 CisJCQlqc29uX3RhYmxlX3BhdGhfbmFtZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlUGxhbiAq biA9IG1ha2VOb2RlKEpzb25UYWJsZVBsYW4pOworCQkJCQluLT5wbGFuX3R5cGUgPSBKU1RQ X1NJTVBMRTsKKwkJCQkJbi0+cGF0aG5hbWUgPSAkMTsKKwkJCQkJbi0+bG9jYXRpb24gPSBA MTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX3Bs YW5fcGFyZW50X2NoaWxkOgorCQkJanNvbl90YWJsZV9wbGFuX291dGVyCisJCQl8IGpzb25f dGFibGVfcGxhbl9pbm5lcgorCQk7CisKK2pzb25fdGFibGVfcGxhbl9vdXRlcjoKKwkJCWpz b25fdGFibGVfcGxhbl9zaW1wbGUgT1VURVJfUCBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQor CQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQSl9PVVRFUiwgJDEsICQz LCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5faW5uZXI6CisJCQlqc29uX3RhYmxl X3BsYW5fc2ltcGxlIElOTkVSX1AganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQk ID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUEpfSU5ORVIsICQxLCAkMywgQDEpOyB9 CisJCTsKKworanNvbl90YWJsZV9wbGFuX3NpYmxpbmc6CisJCQlqc29uX3RhYmxlX3BsYW5f dW5pb24KKwkJCXwganNvbl90YWJsZV9wbGFuX2Nyb3NzCisJCTsKKworanNvbl90YWJsZV9w bGFuX3VuaW9uOgorCQkJanNvbl90YWJsZV9wbGFuX3ByaW1hcnkgVU5JT04ganNvbl90YWJs ZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNU UEpfVU5JT04sICQxLCAkMywgQDEpOyB9CisJCQl8IGpzb25fdGFibGVfcGxhbl91bmlvbiBV TklPTiBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxl Sm9pbmVkUGxhbihKU1RQSl9VTklPTiwgJDEsICQzLCBAMSk7IH0KKwkJOworCitqc29uX3Rh YmxlX3BsYW5fY3Jvc3M6CisJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeSBDUk9TUyBqc29u X3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxh bihKU1RQSl9DUk9TUywgJDEsICQzLCBAMSk7IH0KKwkJCXwganNvbl90YWJsZV9wbGFuX2Ny b3NzIENST1NTIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29u VGFibGVKb2luZWRQbGFuKEpTVFBKX0NST1NTLCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pz b25fdGFibGVfcGxhbl9wcmltYXJ5OgorCQkJanNvbl90YWJsZV9wbGFuX3NpbXBsZQkJCQkJ CXsgJCQgPSAkMTsgfQorCQkJfCAnKCcganNvbl90YWJsZV9wbGFuICcpJworCQkJCXsKKwkJ CQkJY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgJDIpLT5sb2NhdGlvbiA9IEAxOworCQkJCQkk JCA9ICQyOworCQkJCX0KIAkJOwogCiBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbjoKLQkJCVBM QU4gREVGQVVMVCAnKCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fY2hvaWNlcyAnKScgeyAk JCA9ICQ0OyB9CisJCQlQTEFOIERFRkFVTFQgJygnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFu X2Nob2ljZXMgJyknCisJCQl7CisJCQkJSnNvblRhYmxlUGxhbiAqbiA9IG1ha2VOb2RlKEpz b25UYWJsZVBsYW4pOworCQkJCW4tPnBsYW5fdHlwZSA9IEpTVFBfREVGQVVMVDsKKwkJCQlu LT5qb2luX3R5cGUgPSAkNDsKKwkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCSQkID0gKE5v ZGUgKikgbjsKKwkJCX0KIAkJOwogCiBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9jaG9pY2Vz OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCmluZGV4IGRiNzcyOTk1YWMu LmY0MjM0ZjRlNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29u dGFibGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKQEAg LTM4LDEyICszOCwxNSBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVDb250ZXh0CiAJSnNv blRhYmxlICAqdGFibGU7CQkJCS8qIHVudHJhbnNmb3JtZWQgbm9kZSAqLwogCVRhYmxlRnVu YyAgKnRhYmxlZnVuYzsJCQkvKiB0cmFuc2Zvcm1lZCBub2RlCSovCiAJTGlzdAkgICAqcGF0 aE5hbWVzOwkJCS8qIGxpc3Qgb2YgYWxsIHBhdGggYW5kIGNvbHVtbnMgbmFtZXMgKi8KKwlp bnQJCQlwYXRoTmFtZUlkOwkJCS8qIHBhdGggbmFtZSBpZCBjb3VudGVyICovCiAJT2lkCQkJ Y29udGV4dEl0ZW1UeXBpZDsJLyogdHlwZSBvaWQgb2YgY29udGV4dCBpdGVtIChqc29uL2pz b25iKSAqLwogfSBKc29uVGFibGVDb250ZXh0OwogCiBzdGF0aWMgSnNvblRhYmxlUGFyZW50 Tm9kZSAqIHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxlQ29udGV4dCAqY3h0 LAorCQkJCQkJCQkJCQkJCSAgIEpzb25UYWJsZVBsYW4gKnBsYW4sCiAJCQkJCQkJCQkJCQkJ ICAgTGlzdCAqY29sdW1ucywKIAkJCQkJCQkJCQkJCQkgICBjaGFyICpwYXRoU3BlYywKKwkJ CQkJCQkJCQkJCQkgICBjaGFyICoqcGF0aE5hbWUsCiAJCQkJCQkJCQkJCQkJICAgaW50IGxv Y2F0aW9uKTsKIAogc3RhdGljIE5vZGUgKgpAQCAtMTU2LDE5ICsxNTksMTU0IEBAIHJlZ2lz dGVyQWxsSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVDb250ZXh0ICpjeHQsIExpc3QgKmNv bHVtbnMpCiAJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29s dW1uLCBsZmlyc3QobGMpKTsKIAogCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQp CisJCXsKKwkJCWlmIChqdGMtPnBhdGhuYW1lKQorCQkJCXJlZ2lzdGVySnNvblRhYmxlQ29s dW1uKGN4dCwganRjLT5wYXRobmFtZSk7CisKIAkJCXJlZ2lzdGVyQWxsSnNvblRhYmxlQ29s dW1ucyhjeHQsIGp0Yy0+Y29sdW1ucyk7CisJCX0KIAkJZWxzZQorCQl7CiAJCQlyZWdpc3Rl ckpzb25UYWJsZUNvbHVtbihjeHQsIGp0Yy0+bmFtZSk7CisJCX0KKwl9Cit9CisKKy8qIEdl bmVyYXRlIGEgbmV3IHVuaXF1ZSBKU09OX1RBQkxFIHBhdGggbmFtZS4gKi8KK3N0YXRpYyBj aGFyICoKK2dlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoSnNvblRhYmxlQ29udGV4dCAqY3h0 KQoreworCWNoYXIJCW5hbWVidWZbMzJdOworCWNoYXIJICAgKm5hbWUgPSBuYW1lYnVmOwor CisJZG8KKwl7CisJCXNucHJpbnRmKG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwgImpzb25f dGFibGVfcGF0aF8lZCIsCisJCQkJICsrY3h0LT5wYXRoTmFtZUlkKTsKKwl9IHdoaWxlIChp c0pzb25UYWJsZVBhdGhOYW1lRHVwbGljYXRlKGN4dCwgbmFtZSkpOworCisJbmFtZSA9IHBz dHJkdXAobmFtZSk7CisJY3h0LT5wYXRoTmFtZXMgPSBsYXBwZW5kKGN4dC0+cGF0aE5hbWVz LCBuYW1lKTsKKworCXJldHVybiBuYW1lOworfQorCisvKiBDb2xsZWN0IHNpYmxpbmcgcGF0 aCBuYW1lcyBmcm9tIHBsYW4gdG8gdGhlIHNwZWNpZmllZCBsaXN0LiAqLworc3RhdGljIHZv aWQKK2NvbGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4oSnNvblRhYmxlUGxhbiAq cGxhbiwgTGlzdCAqKnBhdGhzKQoreworCWlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9T SU1QTEUpCisJCSpwYXRocyA9IGxhcHBlbmQoKnBhdGhzLCBwbGFuLT5wYXRobmFtZSk7CisJ ZWxzZSBpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfSk9JTkVEKQorCXsKKwkJaWYgKHBs YW4tPmpvaW5fdHlwZSA9PSBKU1RQSl9JTk5FUiB8fAorCQkJcGxhbi0+am9pbl90eXBlID09 IEpTVFBKX09VVEVSKQorCQl7CisJCQlBc3NlcnQocGxhbi0+cGxhbjEtPnBsYW5fdHlwZSA9 PSBKU1RQX1NJTVBMRSk7CisJCQkqcGF0aHMgPSBsYXBwZW5kKCpwYXRocywgcGxhbi0+cGxh bjEtPnBhdGhuYW1lKTsKKwkJfQorCQllbHNlIGlmIChwbGFuLT5qb2luX3R5cGUgPT0gSlNU UEpfQ1JPU1MgfHwKKwkJCQkgcGxhbi0+am9pbl90eXBlID09IEpTVFBKX1VOSU9OKQorCQl7 CisJCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFuKHBsYW4tPnBsYW4xLCBw YXRocyk7CisJCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFuKHBsYW4tPnBs YW4yLCBwYXRocyk7CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgSlNP Tl9UQUJMRSBqb2luIHR5cGUgJWQiLAorCQkJCSBwbGFuLT5qb2luX3R5cGUpOworCX0KK30K KworLyoKKyAqIFZhbGlkYXRlIGNoaWxkIEpTT05fVEFCTEUgcGxhbiBieSBjaGVja2luZyB0 aGF0OgorICogIC0gYWxsIG5lc3RlZCBjb2x1bW5zIGhhdmUgcGF0aCBuYW1lcyBzcGVjaWZp ZWQKKyAqICAtIGFsbCBuZXN0ZWQgY29sdW1ucyBoYXZlIGNvcnJlc3BvbmRpbmcgbm9kZSBp biB0aGUgc2libGluZyBwbGFuCisgKiAgLSBwbGFuIGRvZXMgbm90IGNvbnRhaW4gZHVwbGlj YXRlIG9yIGV4dHJhIG5vZGVzCisgKi8KK3N0YXRpYyB2b2lkCit2YWxpZGF0ZUpzb25UYWJs ZUNoaWxkUGxhbihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZVBsYW4gKnBsYW4sCisJ CQkJCQkgICBMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAgKmxjMTsKKwlMaXN0CSAg ICpzaWJsaW5ncyA9IE5JTDsKKwlpbnQJCQluY2hpbGRyZW4gPSAwOworCisJaWYgKHBsYW4p CisJCWNvbGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbiwgJnNpYmxpbmdz KTsKKworCWZvcmVhY2gobGMxLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29sdW1uICpq dGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChsYzEpKTsKKworCQlpZiAo anRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjMjsK KwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJCWlmICghanRjLT5wYXRobmFtZSkKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJIGVycm1zZygibmVzdGVkIEpTT05fVEFCTEUgY29sdW1ucyBzaGFsbCBjb250 YWluICIKKwkJCQkJCQkJImV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYg IgorCQkJCQkJCQkiZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKSk7CisKKwkJCS8qIGZp bmQgbmVzdGVkIHBhdGggbmFtZSBpbiB0aGUgbGlzdCBvZiBzaWJsaW5nIHBhdGggbmFtZXMg Ki8KKwkJCWZvcmVhY2gobGMyLCBzaWJsaW5ncykKKwkJCXsKKwkJCQlpZiAoKGZvdW5kID0g IXN0cmNtcChqdGMtPnBhdGhuYW1lLCBsZmlyc3QobGMyKSkpKQorCQkJCQlicmVhazsKKwkJ CX0KKworCQkJaWYgKCFmb3VuZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiaW52YWxpZCBKU09O X1RBQkxFIHBsYW4iKSwKKwkJCQkJCSBlcnJkZXRhaWwoInBsYW4gbm9kZSBmb3IgbmVzdGVk IHBhdGggJXMgIgorCQkJCQkJCQkgICAid2FzIG5vdCBmb3VuZCBpbiBwbGFuIiwganRjLT5w YXRobmFtZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwganRjLT5sb2Nh dGlvbikpKTsKKworCQkJbmNoaWxkcmVuKys7CisJCX0KIAl9CisKKwlpZiAobGlzdF9sZW5n dGgoc2libGluZ3MpID4gbmNoaWxkcmVuKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJpbnZhbGlkIEpTT05f VEFCTEUgcGxhbiIpLAorCQkJCSBlcnJkZXRhaWwoInBsYW4gbm9kZSBjb250YWlucyBzb21l IGV4dHJhIG9yICIKKwkJCQkJCSAgICJkdXBsaWNhdGUgc2libGluZyBub2RlcyIpLAorCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBwbGFuID8gcGxhbi0+bG9jYXRpb24gOiAt MSkpKTsKK30KKworc3RhdGljIEpzb25UYWJsZUNvbHVtbiAqCitmaW5kTmVzdGVkSnNvblRh YmxlQ29sdW1uKExpc3QgKmNvbHVtbnMsIGNvbnN0IGNoYXIgKnBhdGhuYW1lKQoreworCUxp c3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgY29sdW1ucykKKwl7CisJCUpzb25UYWJs ZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMpKTsK KworCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQgJiYKKwkJCWp0Yy0+cGF0aG5h bWUgJiYKKwkJCSFzdHJjbXAoanRjLT5wYXRobmFtZSwgcGF0aG5hbWUpKQorCQkJcmV0dXJu IGp0YzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIE5vZGUgKgotdHJhbnNm b3JtTmVzdGVkSnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgSnNvblRh YmxlQ29sdW1uICpqdGMpCit0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4oSnNvblRh YmxlQ29udGV4dCAqY3h0LCBKc29uVGFibGVDb2x1bW4gKmp0YywKKwkJCQkJCQkgICBKc29u VGFibGVQbGFuICpwbGFuKQogewogCUpzb25UYWJsZVBhcmVudE5vZGUgKm5vZGU7CisJY2hh cgkgICAqcGF0aG5hbWUgPSBqdGMtPnBhdGhuYW1lOwogCi0Jbm9kZSA9IHRyYW5zZm9ybUpz b25UYWJsZUNvbHVtbnMoY3h0LCBqdGMtPmNvbHVtbnMsIGp0Yy0+cGF0aHNwZWMsCi0JCQkJ CQkJCQkganRjLT5sb2NhdGlvbik7CisJbm9kZSA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVt bnMoY3h0LCBwbGFuLCBqdGMtPmNvbHVtbnMsIGp0Yy0+cGF0aHNwZWMsCisJCQkJCQkJCQkg JnBhdGhuYW1lLCBqdGMtPmxvY2F0aW9uKTsKKwlub2RlLT5uYW1lID0gcHN0cmR1cChwYXRo bmFtZSk7CiAKIAlyZXR1cm4gKE5vZGUgKikgbm9kZTsKIH0KQEAgLTE4NiwzNCArMzI0LDc4 IEBAIG1ha2VKc29uVGFibGVTaWJsaW5nSm9pbihib29sIGNyb3NzLCBOb2RlICpsbm9kZSwg Tm9kZSAqcm5vZGUpCiB9CiAKIC8qCi0gKiBSZWN1cnNpdmVseSB0cmFuc2Zvcm0gY2hpbGQg KG5lc3RlZCkgSlNPTl9UQUJMRSBjb2x1bW5zLgorICogUmVjdXJzaXZlbHkgdHJhbnNmb3Jt IGNoaWxkIEpTT05fVEFCTEUgcGxhbi4KICAqCi0gKiBDaGlsZCBjb2x1bW5zIGFyZSB0cmFu c2Zvcm1lZCBpbnRvIGEgYmluYXJ5IHRyZWUgb2YgdW5pb24vY3Jvc3Mtam9pbmVkCi0gKiBK c29uVGFibGVTaWJsaW5nTm9kZXMuCisgKiBEZWZhdWx0IHBsYW4gaXMgdHJhbnNmb3JtZWQg aW50byBhIGNyb3NzL3VuaW9uIGpvaW4gb2YgaXRzIG5lc3RlZCBjb2x1bW5zLgorICogU2lt cGxlIGFuZCBvdXRlci9pbm5lciBwbGFucyBhcmUgdHJhbnNmb3JtZWQgaW50byBhIEpzb25U YWJsZVBhcmVudE5vZGUgYnkKKyAqIGZpbmRpbmcgYW5kIHRyYW5zZm9ybWluZyBjb3JyZXNw b25kaW5nIG5lc3RlZCBjb2x1bW4uCisgKiBTaWJsaW5nIHBsYW5zIGFyZSByZWN1cnNpdmVs eSB0cmFuc2Zvcm1lZCBpbnRvIGEgSnNvblRhYmxlU2libGluZ05vZGUuCiAgKi8KIHN0YXRp YyBOb2RlICoKLXRyYW5zZm9ybUpzb25UYWJsZUNoaWxkQ29sdW1ucyhKc29uVGFibGVDb250 ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMpCit0cmFuc2Zvcm1Kc29uVGFibGVDaGlsZFBsYW4o SnNvblRhYmxlQ29udGV4dCAqY3h0LCBKc29uVGFibGVQbGFuICpwbGFuLAorCQkJCQkJCUxp c3QgKmNvbHVtbnMpCiB7Ci0JTm9kZQkgICAqcmVzID0gTlVMTDsKLQlMaXN0Q2VsbCAgICps YzsKLQlib29sCQljcm9zcyA9IGN4dC0+dGFibGUtPmpvaW5fdHlwZSAmIEpTVFBKX0NST1NT OworCUpzb25UYWJsZUNvbHVtbiAqanRjID0gTlVMTDsKIAotCS8qIHRyYW5zZm9ybSBhbGwg bmVzdGVkIGNvbHVtbnMgaW50byB1bmlvbi9jcm9zIGpvaW4gKi8KLQlmb3JlYWNoKGxjLCBj b2x1bW5zKQorCWlmICghcGxhbiB8fCBwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxU KQogCXsKLQkJSnNvblRhYmxlQ29sdW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1 bW4sIGxmaXJzdChsYykpOwotCQlOb2RlCSAgICpub2RlOworCQkvKiB1bnNwZWNpZmllZCBv ciBkZWZhdWx0IHBsYW4gKi8KKwkJTm9kZQkgICAqcmVzID0gTlVMTDsKKwkJTGlzdENlbGwg ICAqbGM7CisJCWJvb2wJCWNyb3NzID0gcGxhbiAmJiAocGxhbi0+am9pbl90eXBlICYgSlNU UEpfQ1JPU1MpOwogCi0JCWlmIChqdGMtPmNvbHR5cGUgIT0gSlRDX05FU1RFRCkKLQkJCWNv bnRpbnVlOworCQkvKiB0cmFuc2Zvcm0gYWxsIG5lc3RlZCBjb2x1bW5zIGludG8gY3Jvc3Mv dW5pb24gam9pbiAqLworCQlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCQl7CisJCQlKc29uVGFi bGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7 CisJCQlOb2RlICpub2RlOwogCi0JCW5vZGUgPSB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVD b2x1bW4oY3h0LCBqdGMpOworCQkJaWYgKGp0Yy0+Y29sdHlwZSAhPSBKVENfTkVTVEVEKQor CQkJCWNvbnRpbnVlOworCisJCQlub2RlID0gdHJhbnNmb3JtTmVzdGVkSnNvblRhYmxlQ29s dW1uKGN4dCwganRjLCBwbGFuKTsKKworCQkJLyogam9pbiB0cmFuc2Zvcm1lZCBub2RlIHdp dGggcHJldmlvdXMgc2libGluZyBub2RlcyAqLworCQkJcmVzID0gcmVzID8gbWFrZUpzb25U YWJsZVNpYmxpbmdKb2luKGNyb3NzLCByZXMsIG5vZGUpIDogbm9kZTsKKwkJfQogCi0JCS8q IGpvaW4gdHJhbnNmb3JtZWQgbm9kZSB3aXRoIHByZXZpb3VzIHNpYmxpbmcgbm9kZXMgKi8K LQkJcmVzID0gcmVzID8gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKGNyb3NzLCByZXMsIG5v ZGUpIDogbm9kZTsKKwkJcmV0dXJuIHJlczsKKwl9CisJZWxzZSBpZiAocGxhbi0+cGxhbl90 eXBlID09IEpTVFBfU0lNUExFKQorCXsKKwkJanRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNv bHVtbihjb2x1bW5zLCBwbGFuLT5wYXRobmFtZSk7CiAJfQorCWVsc2UgaWYgKHBsYW4tPnBs YW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlmIChwbGFuLT5qb2luX3R5cGUgPT0g SlNUUEpfSU5ORVIgfHwKKwkJCXBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQSl9PVVRFUikKKwkJ eworCQkJQXNzZXJ0KHBsYW4tPnBsYW4xLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUpOwor CQkJanRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNvbHVtbihjb2x1bW5zLCBwbGFuLT5wbGFu MS0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJTm9kZQkgICAqbm9kZTEgPQor CQkJCXRyYW5zZm9ybUpzb25UYWJsZUNoaWxkUGxhbihjeHQsIHBsYW4tPnBsYW4xLCBjb2x1 bW5zKTsKKwkJCU5vZGUJICAgKm5vZGUyID0KKwkJCQl0cmFuc2Zvcm1Kc29uVGFibGVDaGls ZFBsYW4oY3h0LCBwbGFuLT5wbGFuMiwgY29sdW1ucyk7CisKKwkJCXJldHVybiBtYWtlSnNv blRhYmxlU2libGluZ0pvaW4ocGxhbi0+am9pbl90eXBlID09IEpTVFBKX0NST1NTLAorCQkJ CQkJCQkJCQlub2RlMSwgbm9kZTIpOworCQl9CisJfQorCWVsc2UKKwkJZWxvZyhFUlJPUiwg ImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIHR5cGUgJWQiLCBwbGFuLT5wbGFuX3R5cGUpOwog Ci0JcmV0dXJuIHJlczsKKwlpZiAoIWp0YykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiaW52YWxpZCBKU09O X1RBQkxFIHBsYW4iKSwKKwkJCQkgZXJyZGV0YWlsKCJwYXRoIG5hbWUgd2FzICVzIG5vdCBm b3VuZCBpbiBuZXN0ZWQgY29sdW1ucyBsaXN0IiwKKwkJCQkJCSAgIHBsYW4tPnBhdGhuYW1l KSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuLT5sb2NhdGlv bikpKTsKKworCXJldHVybiB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4oY3h0LCBq dGMsIHBsYW4pOwogfQogCiAvKiBDaGVjayB3aGV0aGVyIHR5cGUgaXMganNvbi9qc29uYiwg YXJyYXksIG9yIHJlY29yZC4gKi8KQEAgLTM3NywxOSArNTU5LDgwIEBAIG1ha2VQYXJlbnRK c29uVGFibGVOb2RlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgY2hhciAqcGF0aFNwZWMsIExp c3QgKmNvbHVtbnMpCiB9CiAKIHN0YXRpYyBKc29uVGFibGVQYXJlbnROb2RlICoKLXRyYW5z Zm9ybUpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxlQ29udGV4dCAqY3h0LCBMaXN0ICpjb2x1 bW5zLCBjaGFyICpwYXRoU3BlYywKK3RyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoSnNvblRh YmxlQ29udGV4dCAqY3h0LCBKc29uVGFibGVQbGFuICpwbGFuLAorCQkJCQkJICBMaXN0ICpj b2x1bW5zLCBjaGFyICpwYXRoU3BlYywgY2hhciAqKnBhdGhOYW1lLAogCQkJCQkJICBpbnQg bG9jYXRpb24pCiB7CiAJSnNvblRhYmxlUGFyZW50Tm9kZSAqbm9kZTsKKwlKc29uVGFibGVQ bGFuICpjaGlsZFBsYW47CisJYm9vbAkJZGVmYXVsdFBsYW4gPSAhcGxhbiB8fCBwbGFuLT5w bGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUOworCisJaWYgKCEqcGF0aE5hbWUpCisJeworCQlp ZiAoY3h0LT50YWJsZS0+cGxhbikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RB QkxFIGV4cHJlc3Npb24iKSwKKwkJCQkJIGVycmRldGFpbCgiSlNPTl9UQUJMRSBjb2x1bW5z IHNoYWxsIGNvbnRhaW4gIgorCQkJCQkJCSAgICJleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVj aWZpY2F0aW9uIGlmICIKKwkJCQkJCQkgICAiZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNl ZCIpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGxvY2F0aW9uKSkp OworCisJCSpwYXRoTmFtZSA9IGdlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoY3h0KTsKKwl9 CisKKwlpZiAoZGVmYXVsdFBsYW4pCisJCWNoaWxkUGxhbiA9IHBsYW47CisJZWxzZQorCXsK KwkJLyogdmFsaWRhdGUgcGFyZW50IGFuZCBjaGlsZCBwbGFucyAqLworCQlKc29uVGFibGVQ bGFuICpwYXJlbnRQbGFuOworCisJCWlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9KT0lO RUQpCisJCXsKKwkJCWlmIChwbGFuLT5qb2luX3R5cGUgIT0gSlNUUEpfSU5ORVIgJiYKKwkJ CQlwbGFuLT5qb2luX3R5cGUgIT0gSlNUUEpfT1VURVIpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2co ImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIiksCisJCQkJCQkgZXJyZGV0YWlsKCJleHBlY3Rl ZCBJTk5FUiBvciBPVVRFUiBKU09OX1RBQkxFIHBsYW4gbm9kZSIpLAorCQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgcGxhbi0+bG9jYXRpb24pKSk7CisKKwkJCXBh cmVudFBsYW4gPSBwbGFuLT5wbGFuMTsKKwkJCWNoaWxkUGxhbiA9IHBsYW4tPnBsYW4yOwor CisJCQlBc3NlcnQocGFyZW50UGxhbi0+cGxhbl90eXBlICE9IEpTVFBfSk9JTkVEKTsKKwkJ CUFzc2VydChwYXJlbnRQbGFuLT5wYXRobmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlw YXJlbnRQbGFuID0gcGxhbjsKKwkJCWNoaWxkUGxhbiA9IE5VTEw7CisJCX0KKworCQlpZiAo c3RyY21wKHBhcmVudFBsYW4tPnBhdGhuYW1lLCAqcGF0aE5hbWUpKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJy bXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiIpLAorCQkJCQkgZXJyZGV0YWlsKCJwYXRo IG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVkICVzIGJ1dCAlcyBpcyBnaXZlbiIsCisJCQkJCQkJ ICAgKnBhdGhOYW1lLCBwYXJlbnRQbGFuLT5wYXRobmFtZSksCisJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24oY3h0LT5wc3RhdGUsIHBsYW4tPmxvY2F0aW9uKSkpOworCisJCXZhbGlkYXRl SnNvblRhYmxlQ2hpbGRQbGFuKGN4dC0+cHN0YXRlLCBjaGlsZFBsYW4sIGNvbHVtbnMpOwor CX0KIAogCS8qIHRyYW5zZm9ybSBvbmx5IG5vbi1uZXN0ZWQgY29sdW1ucyAqLwogCW5vZGUg PSBtYWtlUGFyZW50SnNvblRhYmxlTm9kZShjeHQsIHBhdGhTcGVjLCBjb2x1bW5zKTsKKwlu b2RlLT5uYW1lID0gcHN0cmR1cCgqcGF0aE5hbWUpOwogCi0JLyogdHJhbnNmb3JtIHJlY3Vy c2l2ZWx5IG5lc3RlZCBjb2x1bW5zICovCi0Jbm9kZS0+Y2hpbGQgPSB0cmFuc2Zvcm1Kc29u VGFibGVDaGlsZENvbHVtbnMoY3h0LCBjb2x1bW5zKTsKLQotCW5vZGUtPm91dGVySm9pbiA9 IGN4dC0+dGFibGUtPmpvaW5fdHlwZSAmIEpTVFBKX09VVEVSOwotCW5vZGUtPnVuaW9uSm9p biA9IGN4dC0+dGFibGUtPmpvaW5fdHlwZSAmIEpTVFBKX1VOSU9OOworCWlmIChjaGlsZFBs YW4gfHwgZGVmYXVsdFBsYW4pCisJeworCQkvKiB0cmFuc2Zvcm0gcmVjdXJzaXZlbHkgbmVz dGVkIGNvbHVtbnMgKi8KKwkJbm9kZS0+Y2hpbGQgPSB0cmFuc2Zvcm1Kc29uVGFibGVDaGls ZFBsYW4oY3h0LCBjaGlsZFBsYW4sIGNvbHVtbnMpOworCQlpZiAobm9kZS0+Y2hpbGQpCisJ CQlub2RlLT5vdXRlckpvaW4gPSAhcGxhbiB8fCAocGxhbi0+am9pbl90eXBlICYgSlNUUEpf T1VURVIpOworCQkvKiBlbHNlOiBkZWZhdWx0IHBsYW4gY2FzZSwgbm8gY2hpbGRyZW4gZm91 bmQgKi8KKwl9CiAKIAlyZXR1cm4gbm9kZTsKIH0KQEAgLTQwNyw3ICs2NTAsOSBAQCB0cmFu c2Zvcm1Kc29uVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGUgKmp0KQogCUpz b25UYWJsZUNvbnRleHQgY3h0OwogCVRhYmxlRnVuYyAgKnRmID0gbWFrZU5vZGUoVGFibGVG dW5jKTsKIAlKc29uRnVuY0V4cHIgKmpmZSA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJ SnNvblRhYmxlUGxhbiAqcGxhbiA9IGp0LT5wbGFuOwogCUpzb25Db21tb24gKmpzY29tbW9u OworCWNoYXIJICAgKnJvb3RQYXRoTmFtZSA9IGp0LT5jb21tb24tPnBhdGhuYW1lOwogCWNo YXIJICAgKnJvb3RQYXRoOwogCWJvb2wJCWlzX2xhdGVyYWw7CiAKQEAgLTQxNSw5ICs2NjAs MzEgQEAgdHJhbnNmb3JtSnNvblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxl ICpqdCkKIAljeHQudGFibGUgPSBqdDsKIAljeHQudGFibGVmdW5jID0gdGY7CiAJY3h0LnBh dGhOYW1lcyA9IE5JTDsKKwljeHQucGF0aE5hbWVJZCA9IDA7CisKKwlpZiAocm9vdFBhdGhO YW1lKQorCQlyZWdpc3Rlckpzb25UYWJsZUNvbHVtbigmY3h0LCByb290UGF0aE5hbWUpOwog CiAJcmVnaXN0ZXJBbGxKc29uVGFibGVDb2x1bW5zKCZjeHQsIGp0LT5jb2x1bW5zKTsKIAor I2lmIDAgLyogWFhYIGl0JyB1bmNsZWFyIGZyb20gdGhlIHN0YW5kYXJkIHdoZXRoZXIgcm9v dCBwYXRoIG5hbWUgaXMgbWFuZGF0b3J5IG9yIG5vdCAqLworCWlmIChwbGFuICYmIHBsYW4t PnBsYW5fdHlwZSAhPSBKU1RQX0RFRkFVTFQgJiYgIXJvb3RQYXRoTmFtZSkKKwl7CisJCS8q IEFzc2lnbiByb290IHBhdGggbmFtZSBhbmQgY3JlYXRlIGNvcnJlc3BvbmRpbmcgcGxhbiBu b2RlICovCisJCUpzb25UYWJsZVBsYW4gKnJvb3ROb2RlID0gbWFrZU5vZGUoSnNvblRhYmxl UGxhbik7CisJCUpzb25UYWJsZVBsYW4gKnJvb3RQbGFuID0gKEpzb25UYWJsZVBsYW4gKikK KwkJCQltYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQSl9PVVRFUiwgKE5vZGUgKikgcm9v dE5vZGUsCisJCQkJCQkJCQkJKE5vZGUgKikgcGxhbiwganQtPmxvY2F0aW9uKTsKKworCQly b290UGF0aE5hbWUgPSBnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKCZjeHQpOworCisJCXJv b3ROb2RlLT5wbGFuX3R5cGUgPSBKU1RQX1NJTVBMRTsKKwkJcm9vdE5vZGUtPnBhdGhuYW1l ID0gcm9vdFBhdGhOYW1lOworCisJCXBsYW4gPSByb290UGxhbjsKKwl9CisjZW5kaWYKKwog CWpzY29tbW9uID0gY29weU9iamVjdChqdC0+Y29tbW9uKTsKIAlqc2NvbW1vbi0+cGF0aHNw ZWMgPSBtYWtlU3RyaW5nQ29uc3QocHN0cmR1cCgiJCIpLCAtMSk7CiAKQEAgLTQ1Myw3ICs3 MjAsOCBAQCB0cmFuc2Zvcm1Kc29uVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFi bGUgKmp0KQogCiAJcm9vdFBhdGggPSBjYXN0Tm9kZShBX0NvbnN0LCBqdC0+Y29tbW9uLT5w YXRoc3BlYyktPnZhbC5zdmFsLnN2YWw7CiAKLQl0Zi0+cGxhbiA9IChOb2RlICopIHRyYW5z Zm9ybUpzb25UYWJsZUNvbHVtbnMoJmN4dCwganQtPmNvbHVtbnMsIHJvb3RQYXRoLAorCXRm LT5wbGFuID0gKE5vZGUgKikgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucygmY3h0LCBwbGFu LCBqdC0+Y29sdW1ucywKKwkJCQkJCQkJCQkJCSAgcm9vdFBhdGgsICZyb290UGF0aE5hbWUs CiAJCQkJCQkJCQkJCQkgIGp0LT5jb21tb24tPmxvY2F0aW9uKTsKIAogCXRmLT5vcmRpbmFs aXR5Y29sID0gLTE7CQkvKiB1bmRlZmluZSBvcmRpbmFsaXR5IGNvbHVtbiBudW1iZXIgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA1MDhhY2JiZDVmLi4zMmFhYzA3 M2E0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMTExOSwxMCArMTEx MTksNTQgQEAgZ2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMoVGFibGVGdW5jICp0Ziwg Tm9kZSAqbm9kZSwKIAkJIGFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJyAn KTsKIAkJIGFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICAiTkVTVEVEIFBBVEggIiwg MCwgMCwgMCk7CiAJCSBnZXRfY29uc3RfZXhwcihuLT5wYXRoLCBjb250ZXh0LCAtMSk7CisJ CSBhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiBBUyAlcyIsIHF1b3RlX2lkZW50 aWZpZXIobi0+bmFtZSkpOwogCQkgZ2V0X2pzb25fdGFibGVfY29sdW1ucyh0ZiwgbiwgY29u dGV4dCwgc2hvd2ltcGxpY2l0KTsKIAl9CiB9CiAKKy8qCisgKiBnZXRfanNvbl90YWJsZV9w bGFuIC0gUGFyc2UgYmFjayBhIEpTT05fVEFCTEUgcGxhbgorICovCitzdGF0aWMgdm9pZAor Z2V0X2pzb25fdGFibGVfcGxhbihUYWJsZUZ1bmMgKnRmLCBOb2RlICpub2RlLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsCisJCQkJCWJvb2wgcGFyZW50aGVzaXplKQoreworCWlmIChw YXJlbnRoZXNpemUpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJygn KTsKKworCWlmIChJc0Eobm9kZSwgSnNvblRhYmxlU2libGluZ05vZGUpKQorCXsKKwkJSnNv blRhYmxlU2libGluZ05vZGUgKm4gPSAoSnNvblRhYmxlU2libGluZ05vZGUgKikgbm9kZTsK KworCQlnZXRfanNvbl90YWJsZV9wbGFuKHRmLCBuLT5sYXJnLCBjb250ZXh0LAorCQkJCQkJ CUlzQShuLT5sYXJnLCBKc29uVGFibGVTaWJsaW5nTm9kZSkgfHwKKwkJCQkJCQljYXN0Tm9k ZShKc29uVGFibGVQYXJlbnROb2RlLCBuLT5sYXJnKS0+Y2hpbGQpOworCisJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoY29udGV4dC0+YnVmLCBuLT5jcm9zcyA/ICIgQ1JPU1MgIiA6ICIg VU5JT04gIik7CisKKwkJZ2V0X2pzb25fdGFibGVfcGxhbih0Ziwgbi0+cmFyZywgY29udGV4 dCwKKwkJCQkJCQlJc0Eobi0+cmFyZywgSnNvblRhYmxlU2libGluZ05vZGUpIHx8CisJCQkJ CQkJY2FzdE5vZGUoSnNvblRhYmxlUGFyZW50Tm9kZSwgbi0+cmFyZyktPmNoaWxkKTsKKwl9 CisJZWxzZQorCXsKKwkJIEpzb25UYWJsZVBhcmVudE5vZGUgKm4gPSBjYXN0Tm9kZShKc29u VGFibGVQYXJlbnROb2RlLCBub2RlKTsKKworCQkgYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhj b250ZXh0LT5idWYsIHF1b3RlX2lkZW50aWZpZXIobi0+bmFtZSkpOworCisJCSBpZiAobi0+ Y2hpbGQpCisJCSB7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwK KwkJCQkJCQkJICAgbi0+b3V0ZXJKb2luID8gIiBPVVRFUiAiIDogIiBJTk5FUiAiKTsKKwkJ CWdldF9qc29uX3RhYmxlX3BsYW4odGYsIG4tPmNoaWxkLCBjb250ZXh0LAorCQkJCQkJCQlJ c0Eobi0+Y2hpbGQsIEpzb25UYWJsZVNpYmxpbmdOb2RlKSk7CisJCSB9CisJfQorCisJaWYg KHBhcmVudGhlc2l6ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAn KScpOworfQorCiAvKgogICogZ2V0X2pzb25fdGFibGVfY29sdW1ucyAtIFBhcnNlIGJhY2sg SlNPTl9UQUJMRSBjb2x1bW5zCiAgKi8KQEAgLTExMjUxLDYgKzExMjk1LDggQEAgZ2V0X2pz b25fdGFibGUoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29s IHNob3dpbXBsaWNpdCkKIAogCWdldF9jb25zdF9leHByKHJvb3QtPnBhdGgsIGNvbnRleHQs IC0xKTsKIAorCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzIiwgcXVvdGVfaWRlbnRp Zmllcihyb290LT5uYW1lKSk7CisKIAlpZiAoamV4cHItPnBhc3NpbmdfdmFsdWVzKQogCXsK IAkJTGlzdENlbGwgICAqbGMxLCAqbGMyOwpAQCAtMTEyODMsMTQgKzExMzI5LDkgQEAgZ2V0 X2pzb25fdGFibGUoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBi b29sIHNob3dpbXBsaWNpdCkKIAogCWdldF9qc29uX3RhYmxlX2NvbHVtbnModGYsIHJvb3Qs IGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CiAKLQlpZiAoIXJvb3QtPm91dGVySm9pbiB8fCAh cm9vdC0+dW5pb25Kb2luKQotCXsKLQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcp OwotCQlhcHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiUExBTiBERUZBVUxUIiwgMCwg MCwgMCk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiKCVzLCAlcykiLAotCQkJCQkJIHJv b3QtPm91dGVySm9pbiA/ICJPVVRFUiIgOiAiSU5ORVIiLAotCQkJCQkJIHJvb3QtPnVuaW9u Sm9pbiA/ICJVTklPTiIgOiAiQ1JPU1MiKTsKLQl9CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIo YnVmLCAnICcpOworCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJQTEFOICIsIDAs IDAsIDApOworCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIChOb2RlICopIHJvb3QsIGNvbnRl eHQsIHRydWUpOwogCiAJaWYgKGpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhB VklPUl9FTVBUWSkKIAkJZ2V0X2pzb25fYmVoYXZpb3IoamV4cHItPm9uX2Vycm9yLCBjb250 ZXh0LCAiRVJST1IiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5j cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXggM2UyNTIwNjdhOS4u MWEwODMzZWYxMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKQEAgLTExMCw2ICsxMTAsOCBA QCBleHRlcm4gSnNvbkZvcm1hdCAqbWFrZUpzb25Gb3JtYXQoSnNvbkZvcm1hdFR5cGUgdHlw ZSwgSnNvbkVuY29kaW5nIGVuY29kaW5nLAogCQkJCQkJCQkgIGludCBsb2NhdGlvbik7CiBl eHRlcm4gSnNvblZhbHVlRXhwciAqbWFrZUpzb25WYWx1ZUV4cHIoRXhwciAqZXhwciwgSnNv bkZvcm1hdCAqZm9ybWF0KTsKIGV4dGVybiBKc29uQmVoYXZpb3IgKm1ha2VKc29uQmVoYXZp b3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2RlICpleHByKTsKK2V4dGVybiBOb2RlICpt YWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgdHlwZSwKKwkJ CQkJCQkJCSBOb2RlICpwbGFuMSwgTm9kZSAqcGxhbjIsIGludCBsb2NhdGlvbik7CiBleHRl cm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1ZShOb2RlICprZXksIE5vZGUgKnZhbHVlKTsKIGV4 dGVybiBOb2RlICptYWtlSnNvbklzUHJlZGljYXRlKE5vZGUgKmV4cHIsIEpzb25Gb3JtYXQg KmZvcm1hdCwKIAkJCQkJCQkJIEpzb25WYWx1ZVR5cGUgdnR5cGUsIGJvb2wgdW5pcXVlX2tl eXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNmRkNTJjNTljMS4uYjIzODIzZTE4 MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTY0Nyw2ICsxNjQ3LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29sdW1uCiAJY2hhcgkgICAqbmFtZTsJCQkJLyogY29s dW1uIG5hbWUgKi8KIAlUeXBlTmFtZSAgICp0eXBlTmFtZTsJCQkvKiBjb2x1bW4gdHlwZSBu YW1lICovCiAJSnNvblBhdGhTcGVjIHBhdGhzcGVjOwkJCS8qIHBhdGggc3BlY2lmaWNhdGlv biwgaWYgYW55ICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkJLyogcGF0aCBuYW1lLCBpZiBh bnkgKi8KIAlKc29uRm9ybWF0ICpmb3JtYXQ7CQkJCS8qIEpTT04gZm9ybWF0IGNsYXVzZSwg aWYgc3BlY2lmaWVkICovCiAJSnNvbldyYXBwZXIJd3JhcHBlcjsJCQkvKiBXUkFQUEVSIGJl aGF2aW9yIGZvciBmb3JtYXR0ZWQgY29sdW1ucyAqLwogCWJvb2wJCW9taXRfcXVvdGVzOwkJ Lyogb21pdCBvciBrZWVwIHF1b3RlcyBvbiBzY2FsYXIgc3RyaW5ncz8gKi8KQEAgLTE2NTYs NiArMTY1NywxNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVDb2x1bW4KIAlpbnQJCQls b2NhdGlvbjsJCQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBK c29uVGFibGVDb2x1bW47CiAKKy8qCisgKiBKc29uVGFibGVQbGFuVHlwZSAtCisgKgkJZmxh Z3MgZm9yIEpTT05fVEFCTEUgcGxhbiBub2RlIHR5cGVzIHJlcHJlc2VudGF0aW9uCisgKi8K K3R5cGVkZWYgZW51bSBKc29uVGFibGVQbGFuVHlwZQoreworCUpTVFBfREVGQVVMVCwKKwlK U1RQX1NJTVBMRSwKKwlKU1RQX0pPSU5FRCwKK30gSnNvblRhYmxlUGxhblR5cGU7CisKIC8q CiAgKiBKc29uVGFibGVQbGFuSm9pblR5cGUgLQogICoJCWZsYWdzIGZvciBKU09OX1RBQkxF IGpvaW4gdHlwZXMgcmVwcmVzZW50YXRpb24KQEAgLTE2NjgsNiArMTY4MCwyMyBAQCB0eXBl ZGVmIGVudW0gSnNvblRhYmxlUGxhbkpvaW5UeXBlCiAJSlNUUEpfVU5JT04gPSAweDA4LAog fSBKc29uVGFibGVQbGFuSm9pblR5cGU7CiAKK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBs YW4gSnNvblRhYmxlUGxhbjsKKworLyoKKyAqIEpzb25UYWJsZVBsYW4gLQorICoJCXVudHJh bnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJMRSBwbGFuIG5vZGUKKyAqLwor c3RydWN0IEpzb25UYWJsZVBsYW4KK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25UYWJsZVBs YW5UeXBlIHBsYW5fdHlwZTsJCS8qIHBsYW4gdHlwZSAqLworCUpzb25UYWJsZVBsYW5Kb2lu VHlwZSBqb2luX3R5cGU7CS8qIGpvaW4gdHlwZSAoZm9yIGpvaW5lZCBwbGFuIG9ubHkpICov CisJSnNvblRhYmxlUGxhbiAqcGxhbjE7CQkJCS8qIGZpcnN0IGpvaW5lZCBwbGFuICovCisJ SnNvblRhYmxlUGxhbiAqcGxhbjI7CQkJCS8qIHNlY29uZCBqb2luZWQgcGxhbiAqLworCWNo YXIJICAgKnBhdGhuYW1lOwkJCQkvKiBwYXRoIG5hbWUgKGZvciBzaW1wbGUgcGxhbiBvbmx5 KSAqLworCWludAkJCWxvY2F0aW9uOwkJCQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYg dW5rbm93biAqLworfTsKKwogLyoKICAqIEpzb25UYWJsZSAtCiAgKgkJdW50cmFuc2Zvcm1l ZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFCkBAIC0xNjc3LDcgKzE3MDYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBKc29uVGFibGUKIAlOb2RlVGFnCQl0eXBlOwogCUpzb25Db21tb24g KmNvbW1vbjsJCQkJCS8qIGNvbW1vbiBKU09OIHBhdGggc3ludGF4IGZpZWxkcyAqLwogCUxp c3QJICAgKmNvbHVtbnM7CQkJCS8qIGxpc3Qgb2YgSnNvblRhYmxlQ29sdW1uICovCi0JSnNv blRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZTsJLyogREVGQVVMVCBQTEFOIGpvaW4gdHlw ZSAqLworCUpzb25UYWJsZVBsYW4gKnBsYW47CQkJCS8qIGpvaW4gcGxhbiwgaWYgc3BlY2lm aWVkICovCiAJSnNvbkJlaGF2aW9yICpvbl9lcnJvcjsJCQkJLyogT04gRVJST1IgYmVoYXZp b3IsIGlmIHNwZWNpZmllZCAqLwogCUFsaWFzCSAgICphbGlhczsJCQkJCS8qIHRhYmxlIGFs aWFzIGluIEZST00gY2xhdXNlICovCiAJYm9vbAkJbGF0ZXJhbDsJCQkJLyogZG9lcyBpdCBo YXZlIExBVEVSQUwgcHJlZml4PyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBiZjJi YTA1YWY1Li5hNDM0Mjg3ZmUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMTQ3NSw5 ICsxNDc1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlUGFyZW50Tm9kZQogewogCU5v ZGVUYWcJCXR5cGU7CiAJQ29uc3QJICAgKnBhdGg7CQkvKiBqc29ucGF0aCBjb25zdGFudCAq LworCWNoYXIJICAgKm5hbWU7CQkvKiBwYXRoIG5hbWUgKi8KIAlOb2RlCSAgICpjaGlsZDsJ CS8qIG5lc3RlZCBjb2x1bW5zLCBpZiBhbnkgKi8KIAlib29sCQlvdXRlckpvaW47CS8qIG91 dGVyIG9yIGlubmVyIGpvaW4gZm9yIG5lc3RlZCBjb2x1bW5zPyAqLwotCWJvb2wJCXVuaW9u Sm9pbjsJLyogdW5pb24gb3IgY3Jvc3Mgam9pbiBmb3IgbmVzdGVkIGNvbHVtbnM/ICovCiAJ aW50CQkJY29sTWluOwkJLyogbWluIGNvbHVtbiBpbmRleCBpbiB0aGUgcmVzdWx0aW5nIGNv bHVtbiBsaXN0ICovCiAJaW50CQkJY29sTWF4OwkJLyogbWF4IGNvbHVtbiBpbmRleCBpbiB0 aGUgcmVzdWx0aW5nIGNvbHVtbiBsaXN0ICovCiAJYm9vbAkJZXJyb3JPbkVycm9yOyAvKiBF UlJPUi9FTVBUWSBPTiBFUlJPUiBiZWhhdmlvciAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKaW5kZXggMGNkOGY3M2M2Ni4uOTQ2N2M0ZjY3 YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0 CkBAIC0xMTM2LDE4ICsxMTM2LDE4IEBAIFNFTEVDVCAqIEZST00KIAkJCWlhIGludFtdIFBB VEggJyQnLAogCQkJdGEgdGV4dFtdIFBBVEggJyQnLAogCQkJamJhIGpzb25iW10gUEFUSCAn JCcsCi0JCQlORVNURUQgUEFUSCAnJFsxXScgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JFsxXScgQVMgcDEgQ09MVU1OUyAoCiAJCQkJYTEgaW50LAotCQkJCU5FU1RFRCBQQVRIICck WypdJyBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVN TlMgKAogCQkJCQlhMTEgdGV4dAogCQkJCSksCiAJCQkJYjEgdGV4dAogCQkJKSwKLQkJCU5F U1RFRCBQQVRIICckWzJdJyBDT0xVTU5TICgKLQkJCQlORVNURUQgUEFUSCAnJFsqXScgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoCisJCQkJTkVT VEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TICgKIAkJCQkJYTIxIHRleHQKIAkJ CQkpLAotCQkJCU5FU1RFRCBQQVRIICckWypdJyBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFU SCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKAogCQkJCQlhMjIgdGV4dAogCQkJCSkKIAkJCSkK QEAgLTExODcsNyArMTE4Nyw3IEBAIENSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLmpz b25iX3RhYmxlX3ZpZXcgQVMKICAgICAianNvbl90YWJsZSIuYTIxLAogICAgICJqc29uX3Rh YmxlIi5hMjIKICAgIEZST00gSlNPTl9UQUJMRSgKLSAgICAgICAgICAgICdudWxsJzo6anNv bmIsICckWypdJworICAgICAgICAgICAgJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpzb25f dGFibGVfcGF0aF8xCiAgICAgICAgICAgICBQQVNTSU5HCiAgICAgICAgICAgICAgICAgMSAr IDIgQVMgYSwKICAgICAgICAgICAgICAgICAnImZvbyInOjpqc29uIEFTICJiIGMiCkBAIC0x MjE4LDM0ICsxMjE4LDM1IEBAIENSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLmpzb25i X3RhYmxlX3ZpZXcgQVMKICAgICAgICAgICAgICAgICBpYSBpbnRlZ2VyW10gUEFUSCAnJCcs CiAgICAgICAgICAgICAgICAgdGEgdGV4dFtdIFBBVEggJyQnLAogICAgICAgICAgICAgICAg IGpiYSBqc29uYltdIFBBVEggJyQnLAotICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICck WzFdJworICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWzFdJyBBUyBwMQogICAgICAg ICAgICAgICAgIENPTFVNTlMgKAogICAgICAgICAgICAgICAgICAgICBhMSBpbnRlZ2VyIFBB VEggJyQuImExIicsCiAgICAgICAgICAgICAgICAgICAgIGIxIHRleHQgUEFUSCAnJC4iYjEi JywKLSAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nCisgICAgICAgICAg ICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDEgMSIKICAgICAgICAgICAgICAg ICAgICAgQ09MVU1OUyAoCiAgICAgICAgICAgICAgICAgICAgICAgICBhMTEgdGV4dCBQQVRI ICckLiJhMTEiJwogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgKSwK LSAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsyXScKKyAgICAgICAgICAgICAgICBO RVNURUQgUEFUSCAnJFsyXScgQVMgcDIKICAgICAgICAgICAgICAgICBDT0xVTU5TICgKLSAg ICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nCisgICAgICAgICAgICAgICAg ICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDI6MSIKICAgICAgICAgICAgICAgICAgICAg Q09MVU1OUyAoCiAgICAgICAgICAgICAgICAgICAgICAgICBhMjEgdGV4dCBQQVRIICckLiJh MjEiJwogICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJFsqXScKKyAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0n IEFTIHAyMgogICAgICAgICAgICAgICAgICAgICBDT0xVTU5TICgKICAgICAgICAgICAgICAg ICAgICAgICAgIGEyMiB0ZXh0IFBBVEggJyQuImEyMiInCiAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCisgICAgICAgICAgICBQTEFO IChqc29uX3RhYmxlX3BhdGhfMSBPVVRFUiAoKHAxIE9VVEVSICJwMSAxIikgVU5JT04gKHAy IE9VVEVSICgicDI6MSIgVU5JT04gcDIyKSkpKQogICAgICAgICApCiBFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVfdmlldzsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9u ICJqc29uX3RhYmxlIgogICAgT3V0cHV0OiAianNvbl90YWJsZSIuaWQsICJqc29uX3RhYmxl Ii5pZDIsICJqc29uX3RhYmxlIi4iaW50IiwgImpzb25fdGFibGUiLnRleHQsICJqc29uX3Rh YmxlIi4iY2hhcig0KSIsICJqc29uX3RhYmxlIi5ib29sLCAianNvbl90YWJsZSIuIm51bWVy aWMiLCAianNvbl90YWJsZSIuZG9tYWluLCAianNvbl90YWJsZSIuanMsICJqc29uX3RhYmxl Ii5qYiwgImpzb25fdGFibGUiLmpzdCwgImpzb25fdGFibGUiLmpzYywgImpzb25fdGFibGUi LmpzdiwgImpzb25fdGFibGUiLmpzYiwgImpzb25fdGFibGUiLmpzYnEsICJqc29uX3RhYmxl Ii5hYWEsICJqc29uX3RhYmxlIi5hYWExLCAianNvbl90YWJsZSIuZXhpc3RzMSwgImpzb25f dGFibGUiLmV4aXN0czIsICJqc29uX3RhYmxlIi5leGlzdHMzLCAianNvbl90YWJsZSIuanMy LCAianNvbl90YWJsZSIuanNiMncsICJqc29uX3RhYmxlIi5qc2IycSwgImpzb25fdGFibGUi LmlhLCAianNvbl90YWJsZSIudGEsICJqc29uX3RhYmxlIi5qYmEsICJqc29uX3RhYmxlIi5h MSwgImpzb25fdGFibGUiLmIxLCAianNvbl90YWJsZSIuYTExLCAianNvbl90YWJsZSIuYTIx LCAianNvbl90YWJsZSIuYTIyCi0gICBUYWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxF KCdudWxsJzo6anNvbmIsICckWypdJyBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIg QVMgImIgYyIgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIGlkMiBGT1IgT1JESU5BTElU WSwgImludCIgaW50ZWdlciBQQVRIICckJywgdGV4dCB0ZXh0IFBBVEggJyQnLCAiY2hhcig0 KSIgY2hhcmFjdGVyKDQpIFBBVEggJyQnLCBib29sIGJvb2xlYW4gUEFUSCAnJCcsICJudW1l cmljIiBudW1lcmljIFBBVEggJyQnLCBkb21haW4ganNvbmJfdGVzdF9kb21haW4gUEFUSCAn JCcsIGpzIGpzb24gUEFUSCAnJCcsIGpiIGpzb25iIFBBVEggJyQnLCBqc3QgdGV4dCBGT1JN QVQgSlNPTiBQQVRIICckJywganNjIGNoYXJhY3Rlcig0KSBGT1JNQVQgSlNPTiBQQVRIICck JywganN2IGNoYXJhY3RlciB2YXJ5aW5nKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLCBqc2Ig anNvbmIgUEFUSCAnJCcsIGpzYnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsIGFhYSBp bnRlZ2VyIFBBVEggJyQuImFhYSInLCBhYWExIGludGVnZXIgUEFUSCAnJC4iYWFhIicsIGV4 aXN0czEgYm9vbGVhbiBFWElTVFMgUEFUSCAnJC4iYWFhIicsIGV4aXN0czIgaW50ZWdlciBF WElTVFMgUEFUSCAnJC4iYWFhIicgVFJVRSBPTiBFUlJPUiwgZXhpc3RzMyB0ZXh0IEVYSVNU UyBQQVRIICdzdHJpY3QgJC4iYWFhIicgVU5LTk9XTiBPTiBFUlJPUiwganMyIGpzb24gUEFU SCAnJCcsIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEggVU5DT05ESVRJT05BTCBXUkFQUEVS LCBqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywgaWEgaW50ZWdlcltdIFBBVEgg JyQnLCB0YSB0ZXh0W10gUEFUSCAnJCcsIGpiYSBqc29uYltdIFBBVEggJyQnLCBORVNURUQg UEFUSCAnJFsxXScgQ09MVU1OUyAoYTEgaW50ZWdlciBQQVRIICckLiJhMSInLCBiMSB0ZXh0 IFBBVEggJyQuImIxIicsIE5FU1RFRCBQQVRIICckWypdJyBDT0xVTU5TIChhMTEgdGV4dCBQ QVRIICckLiJhMTEiJykpLCBORVNURUQgUEFUSCAnJFsyXScgQ09MVU1OUyAoIE5FU1RFRCBQ QVRIICckWypdJyBDT0xVTU5TIChhMjEgdGV4dCBQQVRIICckLiJhMjEiJyksIE5FU1RFRCBQ QVRIICckWypdJyBDT0xVTU5TIChhMjIgdGV4dCBQQVRIICckLiJhMjIiJykpKSkKKyAgIFRh YmxlIEZ1bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0nIEFT IGpzb25fdGFibGVfcGF0aF8xIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAi YiBjIiBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBPUkRJTkFMSVRZLCAi aW50IiBpbnRlZ2VyIFBBVEggJyQnLCB0ZXh0IHRleHQgUEFUSCAnJCcsICJjaGFyKDQpIiBj aGFyYWN0ZXIoNCkgUEFUSCAnJCcsIGJvb2wgYm9vbGVhbiBQQVRIICckJywgIm51bWVyaWMi IG51bWVyaWMgUEFUSCAnJCcsIGRvbWFpbiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywg anMganNvbiBQQVRIICckJywgamIganNvbmIgUEFUSCAnJCcsIGpzdCB0ZXh0IEZPUk1BVCBK U09OIFBBVEggJyQnLCBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLCBq c3YgY2hhcmFjdGVyIHZhcnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzYiBqc29u YiBQQVRIICckJywganNicSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywgYWFhIGludGVn ZXIgUEFUSCAnJC4iYWFhIicsIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywgZXhpc3Rz MSBib29sZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywgZXhpc3RzMiBpbnRlZ2VyIEVYSVNU UyBQQVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLCBleGlzdHMzIHRleHQgRVhJU1RTIFBB VEggJ3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLCBqczIganNvbiBQQVRIICck JywganNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsIGpz YjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLCBpYSBpbnRlZ2VyW10gUEFUSCAnJCcs IHRhIHRleHRbXSBQQVRIICckJywgamJhIGpzb25iW10gUEFUSCAnJCcsIE5FU1RFRCBQQVRI ICckWzFdJyBBUyBwMSBDT0xVTU5TIChhMSBpbnRlZ2VyIFBBVEggJyQuImExIicsIGIxIHRl eHQgUEFUSCAnJC4iYjEiJywgTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMSAxIiBDT0xVTU5T IChhMTEgdGV4dCBQQVRIICckLiJhMTEiJykpLCBORVNURUQgUEFUSCAnJFsyXScgQVMgcDIg Q09MVU1OUyAoIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDI6MSIgQ09MVU1OUyAoYTIxIHRl eHQgUEFUSCAnJC4iYTIxIicpLCBORVNURUQgUEFUSCAnJFsqXScgQVMgcDIyIENPTFVNTlMg KGEyMiB0ZXh0IFBBVEggJyQuImEyMiInKSkpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8xIE9V VEVSICgocDEgT1VURVIgInAxIDEiKSBVTklPTiAocDIgT1VURVIgKCJwMjoxIiBVTklPTiBw MjIpKSkpKQogKDMgcm93cykKIAogRFJPUCBWSUVXIGpzb25iX3RhYmxlX3ZpZXc7CkBAIC0x MzM3LDEzICsxMzM4LDQ5IEBAIEVSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRv IGpzb25iCiBMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSIn LCAnJCcgQ09MVU1OUyAoYSBqc29uYiBFWC4uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIEpTT05fVEFCTEU6 IG5lc3RlZCBwYXRocyBhbmQgcGxhbnMKKy0tIFNob3VsZCBmYWlsIChKU09OX1RBQkxFIGNv bHVtbnMgc2hhbGwgY29udGFpbiBleHBsaWNpdCBBUyBwYXRoCistLSBzcGVjaWZpY2F0aW9u cyBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkKQorU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKAorCWpzb25iICdbXScsICckJyAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBo ZXJlCisJQ09MVU1OUyAoCisJCWZvbyBpbnQgUEFUSCAnJCcKKwkpCisJUExBTiBERUZBVUxU IChVTklPTikKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9u CitMSU5FIDI6ICBqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQg aGVyZQorICAgICAgICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBjb2x1bW5zIHNoYWxsIGNv bnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiBleHBsaWNpdCBQ TEFOIGNsYXVzZSBpcyB1c2VkCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIg J1tdJywgJyQnIEFTIHBhdGgxCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBDT0xV TU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCQkJZm9vIGludCBQQVRI ICckJworCQkpCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworRVJST1I6ICBp bnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbgorTElORSA0OiAgIE5FU1RFRCBQQVRIICck JyBDT0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorICAgICAgICAg IF4KK0RFVEFJTDogIEpTT05fVEFCTEUgY29sdW1ucyBzaGFsbCBjb250YWluIGV4cGxpY2l0 IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMg dXNlZAogLS0gU2hvdWxkIGZhaWwgKGNvbHVtbiBuYW1lcyBhbmYgcGF0aCBuYW1lcyBzaGFs bCBiZSBkaXN0aW5jdCkKIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKLQlqc29uYiAnW10n LCAnJCcKKwlqc29uYiAnW10nLCAnJCcgQVMgYQogCUNPTFVNTlMgKAotCQlhIGludCwKLQkJ YiB0ZXh0LAotCQlhIGpzb25iCisJCWEgaW50CisJKQorKSBqdDsKK0VSUk9SOiAgZHVwbGlj YXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6IGEKK0hJTlQ6ICBKU09OX1RBQkxFIHBhdGgg bmFtZXMgYW5kIGNvbHVtbiBuYW1lcyBzaGFsbCBiZSBkaXN0aW5jdCBmcm9tIG9uZSBhbm90 aGVyCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIGEK KwlDT0xVTU5TICgKKwkJYiBpbnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJCUNPTFVN TlMgKAorCQkJYyBpbnQKKwkJKQogCSkKICkganQ7CiBFUlJPUjogIGR1cGxpY2F0ZSBKU09O X1RBQkxFIGNvbHVtbiBuYW1lOiBhCkBAIC0xMzUyLDEwICsxMzg5LDkgQEAgU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKAogCWpzb25iICdbXScsICckJwogCUNPTFVNTlMgKAogCQliIGlu dCwKLQkJTkVTVEVEIFBBVEggJyQnCisJCU5FU1RFRCBQQVRIICckJyBBUyBiCiAJCUNPTFVN TlMgKAotCQkJYyBpbnQsCi0JCQliIHRleHQKKwkJCWMgaW50CiAJCSkKIAkpCiApIGp0OwpA QCAtMTM2NCwyMiArMTQwMCwyMDkgQEAgSElOVDogIEpTT05fVEFCTEUgcGF0aCBuYW1lcyBh bmQgY29sdW1uIG5hbWVzIHNoYWxsIGJlIGRpc3RpbmN0IGZyb20gb25lIGFub3RoZXIKIFNF TEVDVCAqIEZST00gSlNPTl9UQUJMRSgKIAlqc29uYiAnW10nLCAnJCcKIAlDT0xVTU5TICgK LQkJTkVTVEVEIFBBVEggJyQnCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCiAJCUNPTFVNTlMg KAogCQkJYiBpbnQKIAkJKSwKIAkJTkVTVEVEIFBBVEggJyQnCiAJCUNPTFVNTlMgKAotCQkJ TkVTVEVEIFBBVEggJyQnCisJCQlORVNURUQgUEFUSCAnJCcgQVMgYQogCQkJQ09MVU1OUyAo Ci0JCQkJYyBpbnQsCi0JCQkJYiB0ZXh0CisJCQkJYyBpbnQKIAkJCSkKIAkJKQogCSkKICkg anQ7Ci1FUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiBiCitFUlJP UjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiBhCiBISU5UOiAgSlNPTl9U QUJMRSBwYXRoIG5hbWVzIGFuZCBjb2x1bW4gbmFtZXMgc2hhbGwgYmUgZGlzdGluY3QgZnJv bSBvbmUgYW5vdGhlcgorLS0gSlNPTl9UQUJMRTogcGxhbiB2YWxpZGF0aW9uCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xV TU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBB UyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJh eiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAxKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBK U09OX1RBQkxFIHBsYW4KK0xJTkUgMTI6ICBQTEFOIChwMSkKKyAgICAgICAgICAgICAgICBe CitERVRBSUw6ICBwYXRoIG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVkIHAwIGJ1dCBwMSBpcyBn aXZlbgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0n IEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5F U1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNU RUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIx IENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCkKKykganQ7CitFUlJP UjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuCitMSU5FIDQ6ICAgTkVTVEVEIFBBVEggJyQn IEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgIF4KK0RFVEFJTDogIHBsYW4gbm9kZSBmb3Ig bmVzdGVkIHBhdGggcDEgd2FzIG5vdCBmb3VuZCBpbiBwbGFuCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBD T0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xV TU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIHAzKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBK U09OX1RBQkxFIHBsYW4KK0xJTkUgNDogICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1O UyAoCisgICAgICAgICAgXgorREVUQUlMOiAgcGxhbiBub2RlIGZvciBuZXN0ZWQgcGF0aCBw MSB3YXMgbm90IGZvdW5kIGluIHBsYW4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlq c29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAn JCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIg aW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExB TiAocDAgVU5JT04gcDEgVU5JT04gcDExKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09O X1RBQkxFIHBsYW4KK0xJTkUgMTI6ICBQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEpCisg ICAgICAgICAgICAgICAgXgorREVUQUlMOiAgZXhwZWN0ZWQgSU5ORVIgb3IgT1VURVIgSlNP Tl9UQUJMRSBwbGFuIG5vZGUKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAn bnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28g aW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkK KwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAg T1VURVIgKHAxIENST1NTIHAxMykpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFC TEUgcGxhbgorTElORSA4OiAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAg ICAgICAgICBeCitERVRBSUw6ICBwbGFuIG5vZGUgZm9yIG5lc3RlZCBwYXRoIHAyIHdhcyBu b3QgZm91bmQgaW4gcGxhbgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdu dWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBp bnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor CQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFU SCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBP VVRFUiAocDEgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxF IHBsYW4KK0xJTkUgNTogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9v IGludCApLAorICAgICAgICAgICBeCitERVRBSUw6ICBwbGFuIG5vZGUgZm9yIG5lc3RlZCBw YXRoIHAxMSB3YXMgbm90IGZvdW5kIGluIHBsYW4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQg UEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENP TFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMg KCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkp CisJUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBwMTEpIENST1NTIHAyKSkKKykganQ7CitF UlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuCitMSU5FIDEyOiAgUExBTiAocDAgT1VU RVIgKChwMSBVTklPTiBwMTEpIENST1NTIHAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBwbGFuIG5vZGUgY29udGFpbnMgc29tZSBleHRyYSBvciBkdXBsaWNh dGUgc2libGluZyBub2RlcworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdu dWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBp bnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor CQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFU SCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBP VVRFUiAoKHAxIElOTkVSIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxp ZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgNjogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBD T0xVTU5TICggYmFyIGludCApCisgICAgICAgICAgIF4KK0RFVEFJTDogIHBsYW4gbm9kZSBm b3IgbmVzdGVkIHBhdGggcDEyIHdhcyBub3QgZm91bmQgaW4gcGxhbgorU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAo CisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50 ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDEx KSkgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4K K0xJTkUgOTogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCAp CisgICAgICAgICAgIF4KK0RFVEFJTDogIHBsYW4gbm9kZSBmb3IgbmVzdGVkIHBhdGggcDIx IHdhcyBub3QgZm91bmQgaW4gcGxhbgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpz b25iICdudWxsJywgJ3N0cmljdCAkWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQg UEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENP TFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMg KCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkp CisJUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChw MiBJTk5FUiBwMjEpKSkKKykganQ7CisgYmFyIHwgZm9vIHwgYmF6IAorLS0tLS0rLS0tLS0r LS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAn bnVsbCcsICdzdHJpY3QgJFsqXScgLS0gd2l0aG91dCByb290IHBhdGggbmFtZQorCUNPTFVN TlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFU SCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFT IHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6 IGludCApCisJCSkKKwkpCisJUExBTiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JP U1MgKHAyIElOTkVSIHAyMSkpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUg ZXhwcmVzc2lvbgorTElORSAyOiAganNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdp dGhvdXQgcm9vdCBwYXRoIG5hbWUKKyAgICAgICAgIF4KK0RFVEFJTDogIEpTT05fVEFCTEUg Y29sdW1ucyBzaGFsbCBjb250YWluIGV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRp b24gaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZAogLS0gSlNPTl9UQUJMRTogcGxh biBleGVjdXRpb24KIENSRUFURSBURU1QIFRBQkxFIGpzb25iX3RhYmxlX3Rlc3QgKGpzIGpz b25iKTsKIElOU0VSVCBJTlRPIGpzb25iX3RhYmxlX3Rlc3QKQEAgLTEzOTcsMTIgKzE2MjAs MTIgQEAgc2VsZWN0CiBmcm9tCiAJanNvbmJfdGFibGVfdGVzdCBqdHQsCiAJanNvbl90YWJs ZSAoCi0JCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFz IHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAogCQkJYSBpbnQgcGF0aCAn bGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKLQkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKLQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCiAJCSkKIAkpIGp0OwogIG4gfCBhICB8IGIgfCBjICAKQEAgLTE0MjYsMTIg KzE2NDksMTIgQEAgc2VsZWN0CiBmcm9tCiAJanNvbmJfdGFibGVfdGVzdCBqdHQsCiAJanNv bl90YWJsZSAoCi0JCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWp0dC5qcywnc3RyaWN0ICRb Kl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAogCQkJYSBpbnQg cGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKLQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKLQkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICck JyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBj IGludCBwYXRoICckJyApCiAJCSkKIAkJcGxhbiBkZWZhdWx0IChvdXRlciwgdW5pb24pCiAJ KSBqdDsKQEAgLTE0NTAsMTggKzE2NzMsNzggQEAgZnJvbQogIDQgfCAtMSB8IDIgfCAgIAog KDExIHJvd3MpCiAKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBjKSkK K3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3Rh YmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4g Zm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9u IGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMg KCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAo cGIgdW5pb24gcGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0t Ky0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAy IHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAyIHwgIDIgfCAg IHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwgIDMgfCAy IHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMSByb3dzKQor CistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikpCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0 dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFs aXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0 aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5z ICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBi KSkKKwkpIGp0OworIG4gfCBhICB8IGMgIHwgYiAKKy0tLSstLS0tKy0tLS0rLS0tCisgMSB8 ICAxIHwgICAgfCAgCisgMiB8ICAyIHwgMTAgfCAgCisgMiB8ICAyIHwgICAgfCAgCisgMiB8 ICAyIHwgMjAgfCAgCisgMiB8ICAyIHwgICAgfCAxCisgMiB8ICAyIHwgICAgfCAyCisgMiB8 ICAyIHwgICAgfCAzCisgMyB8ICAzIHwgICAgfCAxCisgMyB8ICAzIHwgICAgfCAyCisgNCB8 IC0xIHwgICAgfCAxCisgNCB8IC0xIHwgICAgfCAyCisoMTEgcm93cykKKwogLS0gZGVmYXVs dCBwbGFuIChpbm5lciwgdW5pb24pCiBzZWxlY3QKIAlqdC4qCiBmcm9tCiAJanNvbmJfdGFi bGVfdGVzdCBqdHQsCiAJanNvbl90YWJsZSAoCi0JCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJ CWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRp bmFsaXR5LAogCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwK LQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKLQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQg cGF0aCAnJCcgKQorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVt bnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCiAJCSkKIAkJcGxhbiBkZWZhdWx0 IChpbm5lcikKIAkpIGp0OwpAQCAtMTQ3OSwxOCArMTc2Miw0NyBAQCBmcm9tCiAgNCB8IC0x IHwgMiB8ICAgCiAoMTAgcm93cykKIAorLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAocGIg dW5pb24gcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVt bnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRl ZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMg cGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFu IChwIGlubmVyIChwYiB1bmlvbiBwYykpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCist LS0rLS0tLSstLS0rLS0tLQorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDIgfCAgIAor IDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8ICAgfCAgIAor IDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAgMyB8IDIgfCAgIAor IDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDEwIHJvd3MpCisKIC0tIGRl ZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQogc2VsZWN0CiAJanQuKgogZnJvbQogCWpzb25i X3RhYmxlX3Rlc3QganR0LAogCWpzb25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmljdCAkWypd JworCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Ig b3JkaW5hbGl0eSwKIAkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1w dHksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBh dGggJyQnICksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBj b2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5j WypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVm YXVsdCAoY3Jvc3MsIGlubmVyKQogCSkganQ7CkBAIC0xNTA3LDE4ICsxODE5LDQ2IEBAIGZy b20KICAyIHwgMiB8IDMgfCAyMAogKDkgcm93cykKIAorLS0gc3BlY2lmaWMgcGxhbiAocCBp bm5lciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxl X3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBw CisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xh eCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu YlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJ KQorCQlwbGFuIChwIGlubmVyIChwYiBjcm9zcyBwYykpCisJKSBqdDsKKyBuIHwgYSB8IGIg fCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAyIHwgMiB8IDEgfCAxMAorIDIgfCAyIHwgMSB8 ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAyIHwgMiB8IDIgfCAxMAorIDIgfCAyIHwgMiB8ICAg CisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8IDMgfCAxMAorIDIgfCAyIHwgMyB8ICAgCisg MiB8IDIgfCAzIHwgMjAKKyg5IHJvd3MpCisKIC0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIGNy b3NzKQogc2VsZWN0CiAJanQuKgogZnJvbQogCWpzb25iX3RhYmxlX3Rlc3QganR0LAogCWpz b25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQlqdHQuanMsJ3N0cmljdCAk WypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKIAkJCWEgaW50 IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCi0JCQluZXN0ZWQgcGF0aCAn c3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCi0JCQluZXN0ZWQg cGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICgg YyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVmYXVsdCAob3V0ZXIsIGNyb3NzKQog CSkganQ7CkBAIC0xNTM4LDYgKzE4NzgsOTAgQEAgZnJvbQogIDQgfCAtMSB8ICAgfCAgIAog KDEyIHJvd3MpCiAKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkK K3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3Rh YmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4g Zm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9u IGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMg KCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAo cGIgY3Jvc3MgcGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0t Ky0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAx IHwgICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAy IHwgICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAz IHwgICAKKyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAKKyA0IHwgLTEgfCAg IHwgICAKKygxMiByb3dzKQorCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBhcyBiCitmcm9t CisJanNvbl90YWJsZSAoanNvbmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBbWzEsIDEw XSwgWzJdLCBbMywgMzAsIDMwMF1dLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEiOiAg MiwgICJiIjogWzEwLCAyMF0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwg ImIiOiBbMTEsIDIyLCAzMywgNDRdfQorCQkgXScsCisJCSckWypdJyBhcyBwCisJCWNvbHVt bnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRl ZmF1bHQgLTEgb24gZXJyb3IsCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMg cGIgY29sdW1ucyAoCisJCQkJYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGIxIGNvbHVtbnMgKAorCQkJCQliMSBpbnQg cGF0aCAnJCcKKwkJCQkpCisJCQkpLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKAorCQkJCWMgdGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBjMSBjb2x1bW5zICgKKwkJCQkJYzEg aW50IHBhdGggJyQnCisJCQkJKQorCQkJKQorCQkpCisJCS0tcGxhbiBkZWZhdWx0KG91dGVy LCBjcm9zcykKKwkJcGxhbihwIG91dGVyICgocGIgaW5uZXIgcGIxKSBjcm9zcyAocGMgb3V0 ZXIgcGMxKSkpCisJKSBqdDsKKyBuIHwgYSB8ICAgICAgYiAgICAgICB8IGIxICB8ICBjICAg fCBjMSB8ICBiICAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0r LS0tLS0KKyAxIHwgMSB8IFsxLCAxMF0gICAgICB8ICAgMSB8IDEgICAgfCAgICB8IDEwMQor IDEgfCAxIHwgWzEsIDEwXSAgICAgIHwgICAxIHwgbnVsbCB8ICAgIHwgMTAxCisgMSB8IDEg fCBbMSwgMTBdICAgICAgfCAgIDEgfCAyICAgIHwgICAgfCAxMDEKKyAxIHwgMSB8IFsxLCAx MF0gICAgICB8ICAxMCB8IDEgICAgfCAgICB8IDExMAorIDEgfCAxIHwgWzEsIDEwXSAgICAg IHwgIDEwIHwgbnVsbCB8ICAgIHwgMTEwCisgMSB8IDEgfCBbMSwgMTBdICAgICAgfCAgMTAg fCAyICAgIHwgICAgfCAxMTAKKyAxIHwgMSB8IFsyXSAgICAgICAgICB8ICAgMiB8IDEgICAg fCAgICB8IDEwMgorIDEgfCAxIHwgWzJdICAgICAgICAgIHwgICAyIHwgbnVsbCB8ICAgIHwg MTAyCisgMSB8IDEgfCBbMl0gICAgICAgICAgfCAgIDIgfCAyICAgIHwgICAgfCAxMDIKKyAx IHwgMSB8IFszLCAzMCwgMzAwXSB8ICAgMyB8IDEgICAgfCAgICB8IDEwMworIDEgfCAxIHwg WzMsIDMwLCAzMDBdIHwgICAzIHwgbnVsbCB8ICAgIHwgMTAzCisgMSB8IDEgfCBbMywgMzAs IDMwMF0gfCAgIDMgfCAyICAgIHwgICAgfCAxMDMKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8 ICAzMCB8IDEgICAgfCAgICB8IDEzMAorIDEgfCAxIHwgWzMsIDMwLCAzMDBdIHwgIDMwIHwg bnVsbCB8ICAgIHwgMTMwCisgMSB8IDEgfCBbMywgMzAsIDMwMF0gfCAgMzAgfCAyICAgIHwg ICAgfCAxMzAKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8IDMwMCB8IDEgICAgfCAgICB8IDQw MAorIDEgfCAxIHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgbnVsbCB8ICAgIHwgNDAwCisgMSB8 IDEgfCBbMywgMzAsIDMwMF0gfCAzMDAgfCAyICAgIHwgICAgfCA0MDAKKyAyIHwgMiB8ICAg ICAgICAgICAgICB8ICAgICB8ICAgICAgfCAgICB8ICAgIAorIDMgfCAgIHwgICAgICAgICAg ICAgIHwgICAgIHwgICAgICB8ICAgIHwgICAgCisoMjAgcm93cykKKwogLS0gU2hvdWxkIHN1 Y2NlZWQgKEpTT04gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBh dGhzKQogU0VMRUNUICoKIEZST00KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2pzb25iX3NxbGpzb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNv bi5zcWwKaW5kZXggY2Q5N2ZmN2Y0Ni4uYmUyZDY1YjNmZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvanNvbmJfc3FsanNvbi5zcWwKQEAgLTQxNCwxOCArNDE0LDE4IEBAIFNFTEVDVCAq IEZST00KIAkJCXRhIHRleHRbXSBQQVRIICckJywKIAkJCWpiYSBqc29uYltdIFBBVEggJyQn LAogCi0JCQlORVNURUQgUEFUSCAnJFsxXScgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JFsxXScgQVMgcDEgQ09MVU1OUyAoCiAJCQkJYTEgaW50LAotCQkJCU5FU1RFRCBQQVRIICck WypdJyBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVN TlMgKAogCQkJCQlhMTEgdGV4dAogCQkJCSksCiAJCQkJYjEgdGV4dAogCQkJKSwKLQkJCU5F U1RFRCBQQVRIICckWzJdJyBDT0xVTU5TICgKLQkJCQlORVNURUQgUEFUSCAnJFsqXScgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoCisJCQkJTkVT VEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TICgKIAkJCQkJYTIxIHRleHQKIAkJ CQkpLAotCQkJCU5FU1RFRCBQQVRIICckWypdJyBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFU SCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKAogCQkJCQlhMjIgdGV4dAogCQkJCSkKIAkJCSkK QEAgLTQ3OCwxMyArNDc4LDQyIEBAIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAn ImEiJywgJyQnIENPTFVNTlMgKGEganNvbmIgRVhJU1RTIFBBVEggJyQuYScpKTsKIAogLS0g SlNPTl9UQUJMRTogbmVzdGVkIHBhdGhzIGFuZCBwbGFucwogCistLSBTaG91bGQgZmFpbCAo SlNPTl9UQUJMRSBjb2x1bW5zIHNoYWxsIGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aAorLS0g c3BlY2lmaWNhdGlvbnMgaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCkKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBhdGggbmFt ZT4gcmVxdWlyZWQgaGVyZQorCUNPTFVNTlMgKAorCQlmb28gaW50IFBBVEggJyQnCisJKQor CVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIHBhdGgxCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBDT0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCQkJ Zm9vIGludCBQQVRIICckJworCQkpCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0 OworCiAtLSBTaG91bGQgZmFpbCAoY29sdW1uIG5hbWVzIGFuZiBwYXRoIG5hbWVzIHNoYWxs IGJlIGRpc3RpbmN0KQogU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAotCWpzb25iICdbXScs ICckJworCWpzb25iICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWEgaW50CisJKQor KSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBB UyBhCiAJQ09MVU1OUyAoCi0JCWEgaW50LAotCQliIHRleHQsCi0JCWEganNvbmIKKwkJYiBp bnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJCUNPTFVNTlMgKAorCQkJYyBpbnQKKwkJ KQogCSkKICkganQ7CiAKQEAgLTQ5MiwxMCArNTIxLDkgQEAgU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKAogCWpzb25iICdbXScsICckJwogCUNPTFVNTlMgKAogCQliIGludCwKLQkJTkVT VEVEIFBBVEggJyQnCisJCU5FU1RFRCBQQVRIICckJyBBUyBiCiAJCUNPTFVNTlMgKAotCQkJ YyBpbnQsCi0JCQliIHRleHQKKwkJCWMgaW50CiAJCSkKIAkpCiApIGp0OwpAQCAtNTAzLDIx ICs1MzEsMTc2IEBAIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKIFNFTEVDVCAqIEZST00g SlNPTl9UQUJMRSgKIAlqc29uYiAnW10nLCAnJCcKIAlDT0xVTU5TICgKLQkJTkVTVEVEIFBB VEggJyQnCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCiAJCUNPTFVNTlMgKAogCQkJYiBpbnQK IAkJKSwKIAkJTkVTVEVEIFBBVEggJyQnCiAJCUNPTFVNTlMgKAotCQkJTkVTVEVEIFBBVEgg JyQnCisJCQlORVNURUQgUEFUSCAnJCcgQVMgYQogCQkJQ09MVU1OUyAoCi0JCQkJYyBpbnQs Ci0JCQkJYiB0ZXh0CisJCQkJYyBpbnQKIAkJCSkKIAkJKQogCSkKICkganQ7CiAKKy0tIEpT T05fVEFCTEU6IHBsYW4gdmFsaWRhdGlvbgorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo CisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBB VEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xV TU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICgg YmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJ CU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQor CVBMQU4gKHAxKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25i ICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBB UyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZv byBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQg KQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChw MCkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcs ICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICks CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIg cDMpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwn LCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENP TFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCAp LAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSks CisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIFVOSU9O IHAxIFVOSU9OIHAxMSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlq c29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAn JCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIg aW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExB TiAocDAgT1VURVIgKHAxIENST1NTIHAxMykpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBD T0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xV TU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMikpCispIGp0OworCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlD T0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICck JyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAo IGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgVU5JT04gcDExKSBD Uk9TUyBwMikpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIg J251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFT IHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9v IGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCAp CisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAw IE9VVEVSICgocDEgSU5ORVIgcDExKSBDUk9TUyBwMikpCispIGp0OworCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5T ICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBp bnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBw MTEpKSBDUk9TUyBwMikpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RF RCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEg Q09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1O UyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAo CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQor CSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1Mg KHAyIElOTkVSIHAyMSkpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAor CWpzb25iICdudWxsJywgJ3N0cmljdCAkWypdJyAtLSB3aXRob3V0IHJvb3QgcGF0aCBuYW1l CisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5F U1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVN TlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOICgocDEgSU5ORVIgKHAxMiBDUk9TUyBw MTEpKSBDUk9TUyAocDIgSU5ORVIgcDIxKSkKKykganQ7CisKIC0tIEpTT05fVEFCTEU6IHBs YW4gZXhlY3V0aW9uCiAKIENSRUFURSBURU1QIFRBQkxFIGpzb25iX3RhYmxlX3Rlc3QgKGpz IGpzb25iKTsKQEAgLTUzOCwxMiArNzIxLDEyIEBAIHNlbGVjdAogZnJvbQogCWpzb25iX3Rh YmxlX3Rlc3QganR0LAogCWpzb25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmljdCAkWypdJwor CQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3Jk aW5hbGl0eSwKIAkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHks Ci0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGgg JyQnICksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1 bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypd JyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJKSBqdDsKIApAQCAt NTUzLDY0ICs3MzYsMTc0IEBAIHNlbGVjdAogZnJvbQogCWpzb25iX3RhYmxlX3Rlc3QganR0 LAogCWpzb25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQlqdHQuanMsJ3N0 cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKIAkJ CWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCi0JCQluZXN0ZWQg cGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCi0JCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQg cGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVmYXVsdCAob3V0ZXIsIHVu aW9uKQogCSkganQ7CiAKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBj KSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29u X3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJ CW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0x IG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVt bnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRl ciAocGIgdW5pb24gcGMpKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIg KHBjIHVuaW9uIHBiKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0 IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQlj b2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5h JyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0n IGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0 cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJ cGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorCSkganQ7CisKIC0tIGRlZmF1bHQgcGxh biAoaW5uZXIsIHVuaW9uKQogc2VsZWN0CiAJanQuKgogZnJvbQogCWpzb25iX3RhYmxlX3Rl c3QganR0LAogCWpzb25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQlqdHQu anMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0 eSwKIAkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCi0JCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICks Ci0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50IHBhdGgg JyQnICkKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgg YiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBw YyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVmYXVsdCAoaW5u ZXIpCiAJKSBqdDsKIAorLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAocGIgdW5pb24gcGMp KQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25f dGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJ biBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEg b24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVy IChwYiB1bmlvbiBwYykpCisJKSBqdDsKKwogLS0gZGVmYXVsdCBwbGFuIChpbm5lciwgY3Jv c3MpCiBzZWxlY3QKIAlqdC4qCiBmcm9tCiAJanNvbmJfdGFibGVfdGVzdCBqdHQsCiAJanNv bl90YWJsZSAoCi0JCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWp0dC5qcywnc3RyaWN0ICRb Kl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAogCQkJYSBpbnQg cGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKLQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKLQkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICck JyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBj IGludCBwYXRoICckJyApCiAJCSkKIAkJcGxhbiBkZWZhdWx0IChjcm9zcywgaW5uZXIpCiAJ KSBqdDsKIAorLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAocGIgY3Jvc3MgcGMpKQorc2Vs ZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUg KAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Ig b3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1w dHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIg aW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMg Y29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVyIChwYiBj cm9zcyBwYykpCisJKSBqdDsKKwogLS0gZGVmYXVsdCBwbGFuIChvdXRlciwgY3Jvc3MpCiBz ZWxlY3QKIAlqdC4qCiBmcm9tCiAJanNvbmJfdGFibGVfdGVzdCBqdHQsCiAJanNvbl90YWJs ZSAoCi0JCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFz IHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAogCQkJYSBpbnQgcGF0aCAn bGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKLQkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKLQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCiAJCSkKIAkJcGxhbiBkZWZhdWx0IChvdXRlciwgY3Jvc3MpCiAJKSBqdDsK IAorLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJ anQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlq dHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5h bGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBh dGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChwYiBjcm9zcyBw YykpCisJKSBqdDsKKworCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBhcyBiCitmcm9tCisJ anNvbl90YWJsZSAoanNvbmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBbWzEsIDEwXSwg WzJdLCBbMywgMzAsIDMwMF1dLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEiOiAgMiwg ICJiIjogWzEwLCAyMF0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwgImIi OiBbMTEsIDIyLCAzMywgNDRdfQorCQkgXScsCisJCSckWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1 bHQgLTEgb24gZXJyb3IsCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIg Y29sdW1ucyAoCisJCQkJYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGIxIGNvbHVtbnMgKAorCQkJCQliMSBpbnQgcGF0 aCAnJCcKKwkJCQkpCisJCQkpLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKAorCQkJCWMgdGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBjMSBjb2x1bW5zICgKKwkJCQkJYzEgaW50 IHBhdGggJyQnCisJCQkJKQorCQkJKQorCQkpCisJCS0tcGxhbiBkZWZhdWx0KG91dGVyLCBj cm9zcykKKwkJcGxhbihwIG91dGVyICgocGIgaW5uZXIgcGIxKSBjcm9zcyAocGMgb3V0ZXIg cGMxKSkpCisJKSBqdDsKIAogLS0gU2hvdWxkIHN1Y2NlZWQgKEpTT04gYXJndW1lbnRzIGFy ZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQogU0VMRUNUICoKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMjVkOTRmNzE2My4uZDRhNmU1ZjY4NyAxMDA2NDQK LS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNDAsNyArMTI0MCw5IEBAIEpzb25UYWJs ZUNvbHVtblR5cGUKIEpzb25UYWJsZUNvbnRleHQKIEpzb25UYWJsZUpvaW5TdGF0ZQogSnNv blRhYmxlUGFyZW50Tm9kZQorSnNvblRhYmxlUGxhbgogSnNvblRhYmxlUGxhbkpvaW5UeXBl CitKc29uVGFibGVQbGFuVHlwZQogSnNvblRhYmxlU2NhblN0YXRlCiBKc29uVGFibGVTaWJs aW5nTm9kZQogSnNvblRva2VuVHlwZQotLSAKMi4yNS4xCgo= --------------wGx6OcQsLj50vkDF0YvlnG34--