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 1nQVVq-0006jK-8w for pgsql-hackers@arkaria.postgresql.org; Sat, 05 Mar 2022 14:36:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nQVVn-00010i-1m for pgsql-hackers@arkaria.postgresql.org; Sat, 05 Mar 2022 14:35:59 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nQVVl-00010L-FJ for pgsql-hackers@lists.postgresql.org; Sat, 05 Mar 2022 14:35:58 +0000 Received: from relay10.mail.gandi.net ([217.70.178.230]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nQVVN-000193-P1 for pgsql-hackers@postgresql.org; Sat, 05 Mar 2022 14:35:56 +0000 Received: (Authenticated sender: adsend@dunslane.net) by mail.gandi.net (Postfix) with ESMTPSA id 84ACE240006; Sat, 5 Mar 2022 14:35:26 +0000 (UTC) Content-Type: multipart/mixed; boundary="------------UNwjJjMgF1laO8cZ5D0bETkV" Message-ID: Date: Sat, 5 Mar 2022 09:35:23 -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: Erikjan Rijkers , Himanshu Upadhyaya Cc: Julien Rouhaud , 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> <9e28ea54-e487-039e-28ee-0efd04a60ef9@dunslane.net> <5b237456-20f0-632a-c8d1-ce8ad9f47999@dunslane.net> <7675f582-3550-a0c6-7e6d-2febfe47bc0a@dunslane.net> In-Reply-To: <7675f582-3550-a0c6-7e6d-2febfe47bc0a@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. --------------UNwjJjMgF1laO8cZ5D0bETkV Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 3/4/22 15:05, Andrew Dunstan wrote: > On 3/4/22 13:13, Erikjan Rijkers wrote: >> Op 04-03-2022 om 17:33 schreef Andrew Dunstan: >>> This set of patches deals with items 1..7 above, but not yet the ERROR >>> ON ERROR issue. It also makes some message cleanups, but there is more >>> to come in that area. >>> >>> It is based on the latest SQL/JSON Functions patch set, which does not >>> include the sql_json GUC patch. >>> >>> [0001-SQL-JSON-functions-without-sql_json-GUC-v56.patch] >>> [0002-JSON_TABLE-v56.patch] >>> [0003-JSON_TABLE-PLAN-DEFAULT-clause-v56.patch] >>> [0004-JSON_TABLE-PLAN-clause-v56.patch] >> Hi, >> >> I quickly tried the tests I already had and there are two statements >> that stopped working: >> >> testdb=# SELECT JSON('{"a": 123, "b": [true, "foo"], "a2": "bar"}' >> RETURNING jsonb); >> ERROR:  syntax error at or near "RETURNING" >> LINE 1: ...SON('{"a": 123, "b": [true, "foo"], "a2": "bar"}' RETURNING >> ... >> >> testdb=# select JSON_SCALAR(123.45 returning jsonb); >> ERROR:  syntax error at or near "returning" >> LINE 1: select JSON_SCALAR(123.45 returning jsonb) >> >>   (the '^' pointer in both cases underneath 'RETURNING' >> >> >> > > Yes, you're right, that was implemented as part of the GUC patch. I'll > try to split that out and send new patchsets with the RETURNING clause > but without the GUC (see upthread for reasons) > > Here's a patchset with RETURNING for JSON() and JSON_SCALAR() but without the GUC cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------UNwjJjMgF1laO8cZ5D0bETkV Content-Type: text/x-patch; charset=UTF-8; name="0001-SQL-JSON-functions-without-sql_json-GUC-v57.patch" Content-Disposition: attachment; filename="0001-SQL-JSON-functions-without-sql_json-GUC-v57.patch" Content-Transfer-Encoding: base64 RnJvbSBmZmI5ZDY3OTU5NTNkMGExN2NjMjhiOGUxMmQwMDkwYjhjZTVmNDRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogU2F0LCA1IE1hciAyMDIyIDA4OjU2OjM3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCAxLzRdIFNRTC9KU09OIGZ1bmN0aW9ucyAod2l0aG91dCBzcWxfanNvbiBHVUMpCgot LS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICB8IDIw MjcgKysrKysrKysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9rZXl3b3Jkcy9zcWwyMDE2LTAy LXJlc2VydmVkLnR4dCB8ICAgIDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIu YyAgICAgICAgICAgICAgIHwgIDM0OSArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHBySW50ZXJwLmMgICAgICAgICB8ICA3MjYgKysrKysrCiBzcmMvYmFja2VuZC9qaXQvbGx2 bS9sbHZtaml0X2V4cHIuYyAgICAgICAgICAgfCAgIDE4ICsKIHNyYy9iYWNrZW5kL2ppdC9s bHZtL2xsdm1qaXRfdHlwZXMuYyAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDQzMyArKysrCiBzcmMvYmFja2Vu ZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgMjkzICsrKwogc3JjL2Jh Y2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDEwMyArCiBzcmMv YmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgNDI3ICsrKysK IHNyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAxNDEg KysKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAx NzcgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAgICAgICB8 ICAgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyAgICAgICAg ICB8ICAgNzggKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAg ICAgIHwgIDc2NSArKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5j ICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg ICAgICAgICAgICAgICB8IDE0NjYgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMgICAgICAgICAgICAgfCAgIDM3ICsKIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZXIuYyAgICAgICAgICAgICAgICAgICB8ICAgMTYgKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdF90eXBlLmMgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvZm9ybWF0dGluZy5jICAgICAgICAgICAgfCAgIDQ1ICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbi5jICAgICAgICAgICAgICAgICAgfCAgNTcyICsrKystCiBzcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICAgICAgICAgICAgfCAgMzUwICsrLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX3V0aWwuYyAgICAgICAgICAgIHwgICAyNCAr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jICAgICAgICAgICAgIHwgICA3 MCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgICAgICAgICAgICAgIHwg IDI1NyArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgICAgICAg ICB8ICAzNTAgKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAg ICAgICAgfCAgNDM2ICsrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUu YyAgICAgICAgICB8ICAgNjkgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUu ZGF0ICAgICAgICAgIHwgICAyMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICAgICAgICAgfCAgIDcwICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmggICAgICAgICAgICAgICB8ICAgODEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVu Y3MuaCAgICAgICAgICAgICAgICAgfCAgIDEwICsKIHNyYy9pbmNsdWRlL25vZGVzL25vZGVz LmggICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDIwMyArKwogc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgIDIyMiArKwogc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAyMiArCiBzcmMvaW5jbHVkZS91 dGlscy9mb3JtYXR0aW5nLmggICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRl L3V0aWxzL2pzb24uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKwogc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmIuaCAgICAgICAgICAgICAgICAgICAgIHwgICAzMyArCiBzcmMvaW5j bHVkZS91dGlscy9qc29uZnVuY3MuaCAgICAgICAgICAgICAgICAgfCAgICA3ICsKIHNyYy9p bmNsdWRlL3V0aWxzL2pzb25wYXRoLmggICAgICAgICAgICAgICAgICB8ICAgMzMgKwogc3Jj L2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlLnBsICAgICAgICAgIHwgICAgMiArCiBz cmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGFyc2VyLmMgICAgICAgICAgfCAgIDE0ICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dCAgICB8ICAgMTUg Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCAgIHwgMTAx OCArKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQg ICAgICB8ICAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbi5vdXQg ICAgICAgICB8IDEyNjggKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pz b25fc3FsanNvbi5zcWwgICAgICAgICB8ICAgMTEgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv anNvbmJfc3FsanNvbi5zcWwgICAgICAgIHwgIDMxNyArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL29wcl9zYW5pdHkuc3FsICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3NxbGpzb24uc3FsICAgICAgICAgICAgICB8ICA0NDUgKysrKwogNTQgZmlsZXMg Y2hhbmdlZCwgMTI4MDkgaW5zZXJ0aW9ucygrKSwgMzAwIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJf c3FsanNvbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3NxbGpzb24ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9z cWwvanNvbl9zcWxqc29uLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3FsanNvbi5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVu Yy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCBkZjNjZDU5ODdiLi5lMTk4 MjFjNGIyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9mdW5jLnNnbWwKQEAgLTE3NTY0LDYgKzE3NTY0LDE5MjQgQEAgJC4qID8gKEAg bGlrZV9yZWdleCAiXlxcZCskIikKICAgICA8L3BhcmE+CiAgICA8L3NlY3QzPgogICA8L3Nl Y3QyPgorCisgPHNlY3QyIGlkPSJmdW5jdGlvbnMtc3FsanNvbiI+CisgIDx0aXRsZT5TUUwv SlNPTiBGdW5jdGlvbnMgYW5kIEV4cHJlc3Npb25zPC90aXRsZT4KKyAgPGluZGV4dGVybSB6 b25lPSJmdW5jdGlvbnMtanNvbiI+CisgICAgPHByaW1hcnk+U1FML0pTT048L3ByaW1hcnk+ CisgICAgPHNlY29uZGFyeT5mdW5jdGlvbnMgYW5kIGV4cHJlc3Npb25zPC9zZWNvbmRhcnk+ CisgIDwvaW5kZXh0ZXJtPgorCisgPHBhcmE+CisgIFRvIHByb3ZpZGUgbmF0aXZlIHN1cHBv cnQgZm9yIEpTT04gZGF0YSB0eXBlcyB3aXRoaW4gdGhlIFNRTCBlbnZpcm9ubWVudCwKKyAg PHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpbXBsZW1lbnRzIHRoZQor ICA8Zmlyc3R0ZXJtPlNRTC9KU09OIGRhdGEgbW9kZWw8L2ZpcnN0dGVybT4uCisgIFRoaXMg bW9kZWwgY29tcHJpc2VzIHNlcXVlbmNlcyBvZiBpdGVtcy4gRWFjaCBpdGVtIGNhbiBob2xk IFNRTCBzY2FsYXIgdmFsdWVzLAorICB3aXRoIGFuIGFkZGl0aW9uYWwgU1FML0pTT04gbnVs bCB2YWx1ZSwgYW5kIGNvbXBvc2l0ZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCB1c2UgSlNPTgor ICBhcnJheXMgYW5kIG9iamVjdHMuCisgPC9wYXJhPgorCisgPHBhcmE+CisgIFNRTC9KU09O IGVuYWJsZXMgeW91IHRvIGhhbmRsZSBKU09OIGRhdGEgYWxvbmdzaWRlIHJlZ3VsYXIgU1FM IGRhdGEsCisgIHdpdGggdHJhbnNhY3Rpb24gc3VwcG9ydDoKKyA8L3BhcmE+CisKKyA8aXRl bWl6ZWRsaXN0PgorICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgICBVcGxvYWQgSlNP TiBkYXRhIGludG8gYSByZWxhdGlvbmFsIGRhdGFiYXNlIGFuZCBzdG9yZSBpdCBpbgorICAg ICAgcmVndWxhciBTUUwgY29sdW1ucyBhcyBjaGFyYWN0ZXIgb3IgYmluYXJ5IHN0cmluZ3Mu CisgICAgPC9wYXJhPgorICA8L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+ CisgICAgICBHZW5lcmF0ZSBKU09OIG9iamVjdHMgYW5kIGFycmF5cyBmcm9tIHJlbGF0aW9u YWwgZGF0YS4KKyAgICA8L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT4KKyAg ICA8cGFyYT4KKyAgICAgIFF1ZXJ5IEpTT04gZGF0YSB1c2luZyBTUUwvSlNPTiBxdWVyeSBm dW5jdGlvbnMgYW5kIFNRTC9KU09OIHBhdGgKKyAgICAgIGxhbmd1YWdlIGV4cHJlc3Npb25z LgorICAgIDwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyA8L2l0ZW1pemVkbGlzdD4KKworIDxw YXJhPgorICAgQWxsIFNRTC9KU09OIGZ1bmN0aW9ucyBmYWxsIGludG8gb25lIG9mIHR3byBn cm91cHMuCisgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtc3FsanNvbi1wcm9kdWNpbmci PkNvbnN0cnVjdG9yIGZ1bmN0aW9uczwvbGluaz4KKyAgIGdlbmVyYXRlIEpTT04gZGF0YSBm cm9tIHZhbHVlcyBvZiBTUUwgdHlwZXMuCisgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMt c3FsanNvbi1xdWVyeWluZyI+UXVlcnkgZnVuY3Rpb25zPC9saW5rPgorICAgZXZhbHVhdGUg U1FML0pTT04gcGF0aCBsYW5ndWFnZSBleHByZXNzaW9ucyBhZ2FpbnN0IEpTT04gdmFsdWVz CisgICBhbmQgcHJvZHVjZSB2YWx1ZXMgb2YgU1FML0pTT04gdHlwZXMsIHdoaWNoIGFyZSBj b252ZXJ0ZWQgdG8gU1FMIHR5cGVzLgorIDwvcGFyYT4KKworICA8c2VjdDMgaWQ9ImZ1bmN0 aW9ucy1zcWxqc29uLXByb2R1Y2luZyI+CisgICA8dGl0bGU+UHJvZHVjaW5nIEpTT04gQ29u dGVudDwvdGl0bGU+CisKKyAgPHBhcmE+CisgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8 L3Byb2R1Y3RuYW1lPiBwcm92aWRlcyBzZXZlcmFsIGZ1bmN0aW9ucworICAgIHRoYXQgZ2Vu ZXJhdGUgSlNPTiBkYXRhLiBUYWtpbmcgdmFsdWVzIG9mIFNRTCB0eXBlcyBhcyBpbnB1dCwg dGhlc2UKKyAgICBmdW5jdGlvbnMgY29uc3RydWN0IEpTT04gb2JqZWN0cywgSlNPTiBhcnJh eXMgb3IgSlNPTiBzY2FsYXJzIHJlcHJlc2VudGVkCisgICAgYXMgPHR5cGU+anNvbjwvdHlw ZT4gb3IgPHR5cGU+anNvbmI8L3R5cGU+IHR5cGVzLCBTUUwgY2hhcmFjdGVyIG9yIGJpbmFy eSBzdHJpbmdzLgorICA8L3BhcmE+CisKKyAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0 ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtanNv bnBhcnNlIj48bGl0ZXJhbD5KU09OPC9saXRlcmFsPjwvbGluaz4KKyAgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAg IDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29uc2NhbGFyIj48bGl0ZXJhbD5KU09OX1ND QUxBUjwvbGl0ZXJhbD48L2xpbms+CisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICA8bGluayBsaW5rZW5kPSJm dW5jdGlvbnMtanNvbm9iamVjdCI+PGxpdGVyYWw+SlNPTl9PQkpFQ1Q8L2xpdGVyYWw+PC9s aW5rPgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgPGxpbmsgbGlua2VuZD0iZnVuY3Rpb25zLWpzb25vYmpl Y3RhZ2ciPjxsaXRlcmFsPkpTT05fT0JKRUNUQUdHPC9saXRlcmFsPjwvbGluaz4KKyAgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgIDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29uYXJyYXkiPjxsaXRlcmFs PkpTT05fQVJSQVk8L2xpdGVyYWw+PC9saW5rPgorICAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgPGxpbmsgbGlu a2VuZD0iZnVuY3Rpb25zLWpzb25hcnJheWFnZyI+PGxpdGVyYWw+SlNPTl9BUlJBWUFHRzwv bGl0ZXJhbD48L2xpbms+CisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC9p dGVtaXplZGxpc3Q+CisKKyAgPHNlY3Q0IGlkPSJmdW5jdGlvbnMtanNvbnBhcnNlIj4KKyAg IDx0aXRsZT48bGl0ZXJhbD5KU09OPC9saXRlcmFsPjwvdGl0bGU+CisgICA8aW5kZXh0ZXJt PjxwcmltYXJ5Pmpzb248L3ByaW1hcnk+PC9pbmRleHRlcm0+Cis8c3lub3BzaXM+Cis8ZnVu Y3Rpb24+SlNPTjwvZnVuY3Rpb24+ICgKKyAgPHBhcmFtZXRlcj5leHByZXNzaW9uPC9wYXJh bWV0ZXI+IDxvcHRpb25hbD4gRk9STUFUIEpTT04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4 IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4geyBXSVRIIHwgV0lUSE9V VCB9IFVOSVFVRSA8b3B0aW9uYWw+IEtFWVMgPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAg PG9wdGlvbmFsPiBSRVRVUk5JTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpz b25fZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKykKKzwvc3lub3BzaXM+ CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAg ICAgPHBhcmE+CisgICAgICA8ZnVuY3Rpb24+SlNPTjwvZnVuY3Rpb24+IGZ1bmN0aW9uIGdl bmVyYXRlcyBhIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+CisgICAgICBmcm9tIGEgdGV4dCBk YXRhLgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAg PHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAgIDxsaXRlcmFsPjxw YXJhbWV0ZXI+ZXhwcmVzc2lvbjwvcGFyYW1ldGVyPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09O IDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFsPjwvbGl0 ZXJhbD4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICBTdHJpbmcgZXhwcmVzc2lvbiB0aGF0IHByb3ZpZGVzIHRoZSA8 YWNyb255bT5KU09OPC9hY3JvbnltPiB0ZXh0IGRhdGEuCisgICAgICAgICAgQWNjZXB0ZWQg YW55IGNoYXJhY3RlciBzdHJpbmdzICg8dHlwZT50ZXh0PC90eXBlPiwgPHR5cGU+Y2hhcjwv dHlwZT4sIGV0Yy4pCisgICAgICAgICAgb3IgYmluYXJ5IHN0cmluZ3MgKDx0eXBlPmJ5dGVh PC90eXBlPikgaW4gVVRGOCBlbmNvZGluZy4KKyAgICAgICAgICBGb3IgbnVsbCBpbnB1dCwg PGFjcm9ueW0+U1FMPC9hY3JvbnltPiBudWxsIHZhbHVlIGlzIHJldHVybmVkLgorICAgICAg ICAgPC9wYXJhPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgIFRoZSBvcHRpb25hbCA8 bGl0ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+IGNsYXVzZSBpcyBwcm92aWRlZCB0byBjb25mb3Jt CisgICAgICAgICAgIHRvIHRoZSBTUUwvSlNPTiBzdGFuZGFyZC4KKyAgICAgICAgIDwvcGFy YT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAgIDxsaXRlcmFsPnsg V0lUSCB8IFdJVEhPVVQgfSBVTklRVUUgPG9wdGlvbmFsPiBLRVlTIDwvb3B0aW9uYWw+PC9s aXRlcmFsPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg PHBhcmE+CisgICAgICAgICBEZWZpbmVzIHdoZXRoZXIgZHVwbGljYXRlIGtleXMgYXJlIGFs bG93ZWQ6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSE9VVDwv bGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICA8cGFy YT4KKyAgICAgICAgICAgIERlZmF1bHQuIFRoZSBjb25zdHJ1Y3RlZAorICAgICAgICAgICAg PGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0IGNhbiBjb250YWluIGR1cGxpY2F0ZSBr ZXlzLgorICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAg ICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAg ICA8dGVybT48bGl0ZXJhbD5XSVRIPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgICAgPGxp c3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgRHVwbGljYXRlIGtl eXMgYXJlIG5vdCBhbGxvd2VkLgorICAgICAgICAgICAgIElmIHRoZSBpbnB1dCBkYXRhIGNv bnRhaW5zIGR1cGxpY2F0ZSBrZXlzLCBhbiBlcnJvciBpcyByZXR1cm5lZC4KKyAgICAgICAg ICAgIDwvcGFyYT4KKyAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgIDwvdmFybGlz dGVudHJ5PgorICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgPHBhcmE+CisgICAg ICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCB0aGUgPGxpdGVyYWw+S0VZUzwvbGl0ZXJh bD4ga2V5d29yZCBmb3IKKyAgICAgICAgIHNlbWFudGljIGNsYXJpdHkuCisgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAg ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAgIDxsaXRlcmFs PlJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl9kYXRhX3R5 cGU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIG91dHB1dCBjbGF1c2Ug dGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgKDx0eXBlPmpzb248L3R5cGU+IG9yCisgICAgICAg ICA8dHlwZT5qc29uYjwvdHlwZT4pIG9mIHRoZSBnZW5lcmF0ZWQgPGFjcm9ueW0+SlNPTjwv YWNyb255bT4uCisgICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3NlY3Q1Pgor CisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICA8cGFyYT4K KyAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29uc3RydWN0IDxhY3JvbnltPkpTT048 L2Fjcm9ueW0+IHZhbHVlcyBzaW1wbHkKKyAgICAgIHVzaW5nIDxwcm9kdWN0bmFtZT5Qb3N0 Z3JlU1FMPC9wcm9kdWN0bmFtZT4tc3BlY2lmaWMgY2FzdHMgdG8gCisgICAgICA8dHlwZT5q c29uPC90eXBlPiBhbmQgPHR5cGU+anNvbmI8L3R5cGU+IHR5cGVzLgorICAgICA8L3BhcmE+ CisgICAgPC9zZWN0NT4KKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0 bGU+CisgICAgIDxwYXJhPgorICAgICAgQ29uc3RydWN0IGEgSlNPTiB0aGUgcHJvdmlkZWQg c3RyaW5nczoKKyAgICAgPC9wYXJhPgorPHNjcmVlbj4KK1NFTEVDVCBKU09OKCd7ICJhIiA6 IDEyMywgImIiOiBbIHRydWUsICJmb28iIF0sICJhIiA6ICJiYXIiIH0nKTsKKyAgICAgICAg ICAgICAgICAgICAgICAganNvbiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsgImEiIDogMTIz LCAiYiI6IFsgdHJ1ZSwgImZvbyIgXSwgImEiIDogImJhciIgfQorKDEgcm93KQorCisKK1NF TEVDVCBKU09OKCd7ImEiOiAxMjMsICJiIjogW3RydWUsICJmb28iXSwgImEiOiAiYmFyIn0n IFJFVFVSTklORyBqc29uYik7CisgICAgICAgICAgICAgICBqc29uICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJhIjogImJhciIsICJi IjogW3RydWUsICJmb28iXX0KKygxIHJvdykKKworU0VMRUNUIEpTT04oJ3siYSI6IDEyMywg ImIiOiBbdHJ1ZSwgImZvbyJdLCAiYSI6ICJiYXIifScgV0lUSCBVTklRVUUgS0VZUyk7CitF UlJPUjogIGR1cGxpY2F0ZSBKU09OIG9iamVjdCBrZXkgdmFsdWUKKzwvc2NyZWVuPgorICAg IDwvc2VjdDU+CisgICA8L3NlY3Q0PgorCisgIDxzZWN0NCBpZD0iZnVuY3Rpb25zLWpzb25z Y2FsYXIiPgorICAgPHRpdGxlPjxsaXRlcmFsPkpTT05fU0NBTEFSPC9saXRlcmFsPjwvdGl0 bGU+CisgICA8aW5kZXh0ZXJtPjxwcmltYXJ5Pmpzb25fc2NhbGFyPC9wcmltYXJ5PjwvaW5k ZXh0ZXJtPgorCis8c3lub3BzaXM+Cis8ZnVuY3Rpb24+SlNPTl9TQ0FMQVI8L2Z1bmN0aW9u PiAoCisgIDxwYXJhbWV0ZXI+ZXhwcmVzc2lvbjwvcGFyYW1ldGVyPgorICA8b3B0aW9uYWw+ IFJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl9kYXRhX3R5 cGU8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorKQorPC9zeW5vcHNpcz4KKworICAgIDxz ZWN0NT4KKyAgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgICA8cGFyYT4K KyAgICAgIDxmdW5jdGlvbj5KU09OX1NDQUxBUjwvZnVuY3Rpb24+IGZ1bmN0aW9uIGdlbmVy YXRlcyBhIHNjYWxhcgorICAgICAgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gZnJvbSBhIDxh Y3JvbnltPlNRTDwvYWNyb255bT4gZGF0YS4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDU+ CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKyAgICAg IDx2YXJpYWJsZWxpc3Q+CisgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+ CisgICAgICAgICA8bGl0ZXJhbD48cGFyYW1ldGVyPmV4cHJlc3Npb248L3BhcmFtZXRlcj48 L2xpdGVyYWw+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgRXhwcmVzc2lvbiB0aGF0IHByb3ZpZGVzIHRoZSBkYXRh IGZvciBjb25zdHJ1Y3RpbmcgYQorICAgICAgICAgIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+ LgorICAgICAgICAgIEZvciBudWxsIGlucHV0LCA8YWNyb255bT5TUUw8L2Fjcm9ueW0+ICBu dWxsCisgICAgICAgICAgKG5vdCBhIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IG51bGwpIHZh bHVlIGlzIHJldHVybmVkLgorICAgICAgICAgIEZvciBhbnkgc2NhbGFyIG90aGVyIHRoYW4g YSBudW1iZXIsIGEgQm9vbGVhbiwgdGhlIHRleHQgcmVwcmVzZW50YXRpb24KKyAgICAgICAg ICB3aWxsIGJlIHVzZWQsIHdpdGggZXNjYXBpbmcgYXMgbmVjZXNzYXJ5IHRvIG1ha2UgaXQg YSB2YWxpZAorICAgICAgICAgIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IHN0cmluZyB2YWx1 ZS4KKyAgICAgICAgICBGb3IgZGV0YWlscywgc2VlCisgICAgICAgICAgPGZ1bmN0aW9uPnRv X2pzb24oKTwvZnVuY3Rpb24+LzxmdW5jdGlvbj50b19qc29uYigpPC9mdW5jdGlvbj4KKyAg ICAgICAgICBpbiA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbi1jcmVhdGlvbi10YWJs ZSIvPi4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8 L3Zhcmxpc3RlbnRyeT4KKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4K KyAgICAgICAgIDxsaXRlcmFsPlJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+anNvbl9kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4KKyAgICAgICAg PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg VGhlIG91dHB1dCBjbGF1c2UgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgKDx0eXBlPmpzb248 L3R5cGU+IG9yCisgICAgICAgICA8dHlwZT5qc29uYjwvdHlwZT4pIG9mIHRoZSBnZW5lcmF0 ZWQgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gc2NhbGFyLgorICAgICAgICAgPC9wYXJhPgor ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPC92YXJp YWJsZWxpc3Q+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPk5v dGVzPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2Fu IGNvbnN0cnVjdCA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3RzIGJ5CisgICAgICB1 c2luZyA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+LXNwZWNpZmljCisg ICAgICA8ZnVuY3Rpb24+dG9fanNvbigpPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPnRvX2pzb25i KCk8L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCisgICAgICBTZWUgPHhyZWYgbGlua2VuZD0iZnVu Y3Rpb25zLWpzb24tY3JlYXRpb24tdGFibGUiLz4gZm9yIGRldGFpbHMuCisgICAgIDwvcGFy YT4KKyAgICA8L3NlY3Q1PgorICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90 aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICBDb25zdHJ1Y3QgYSBKU09OIGZyb20gdGhlIHBy b3ZpZGVkIHZhbHVlcyB2YXJpb3VzIHR5cGVzOgorICAgICA8L3BhcmE+Cis8c2NyZWVuPgor U0VMRUNUIEpTT05fU0NBTEFSKDEyMy40NSk7CisganNvbl9zY2FsYXIKKy0tLS0tLS0tLS0t LS0KKyAxMjMuNDUKKygxIHJvdykKKworU0VMRUNUIEpTT05fU0NBTEFSKCcxMjMnKTsKKyBq c29uX3NjYWxhcgorLS0tLS0tLS0tLS0tLQorICIxMjMiCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1NDQUxBUih0cnVlKTsKKyBqc29uX3NjYWxhcgorLS0tLS0tLS0tLS0tLQorIHRydWUK KygxIHJvdykKKzwvc2NyZWVuPgorICAgIDwvc2VjdDU+CisgICA8L3NlY3Q0PgorCisgICA8 c2VjdDQgaWQ9ImZ1bmN0aW9ucy1qc29ub2JqZWN0Ij4KKyAgICA8dGl0bGU+PGxpdGVyYWw+ SlNPTl9PQkpFQ1Q8L2xpdGVyYWw+PC90aXRsZT4KKyAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5 Pmpzb25fb2JqZWN0PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorCis8c3lub3BzaXM+Cis8ZnVu Y3Rpb24+SlNPTl9PQkpFQ1Q8L2Z1bmN0aW9uPiAoCisgIDxvcHRpb25hbD4geyA8cGFyYW1l dGVyPmtleV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+IHsgVkFMVUUgfCAnOicgfQorICAgICAg PHBhcmFtZXRlcj52YWx1ZV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+IDxvcHRpb25hbD4gRk9S TUFUIEpTT04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4IDwvb3B0aW9uYWw+IDwvb3B0aW9u YWw+IH08b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiA8L29wdGlvbmFsPgorICA8b3B0aW9u YWw+IHsgTlVMTCB8IEFCU0VOVCB9IE9OIE5VTEwgPC9vcHRpb25hbD4KKyAgPG9wdGlvbmFs PiB7IFdJVEggfCBXSVRIT1VUIH0gVU5JUVVFIDxvcHRpb25hbD4gS0VZUyA8L29wdGlvbmFs PiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IFJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBGT1JN QVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25h bD4gPC9vcHRpb25hbD4KKykKKzwvc3lub3BzaXM+CisKKyAgICA8c2VjdDU+CisgICAgIDx0 aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGZ1 bmN0aW9uPkpTT05fT0JKRUNUPC9mdW5jdGlvbj4gZnVuY3Rpb24gZ2VuZXJhdGVzIGEgPGFj cm9ueW0+SlNPTjwvYWNyb255bT4KKyAgICAgIG9iamVjdCBmcm9tIDxhY3JvbnltPlNRTDwv YWNyb255bT4gb3IgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gZGF0YS4KKyAgICAgPC9wYXJh PgorICAgIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKyAgPHZhcmlhYmxlbGlzdD4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT4KKyAgICAgIDxsaXRlcmFsPgorICAgICAgIDxwYXJhbWV0ZXI+a2V5X2V4cHJlc3Np b248L3BhcmFtZXRlcj4geyBWQUxVRSB8ICc6JyB9CisgICAgICAgPHBhcmFtZXRlcj52YWx1 ZV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+IDxvcHRpb25hbD4gRk9STUFUIEpTT04gPG9wdGlv bmFsPiBFTkNPRElORyBVVEY4IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgICAgICA8L2xp dGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAg IFRoZSBpbnB1dCBjbGF1c2UgdGhhdCBwcm92aWRlcyB0aGUgZGF0YSBmb3IgY29uc3RydWN0 aW5nIGEgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0OgorICAgIDwvcGFyYT4KKyAg ICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICAgICAgPHBhcmFtZXRlcj5rZXlfZXhwcmVzc2lvbjwvcGFy YW1ldGVyPiBpcyBhIHNjYWxhciBleHByZXNzaW9uCisgICAgICAgICAgICAgIGRlZmluaW5n IHRoZSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBrZXksIHdoaWNoIGlzIGltcGxpY2l0bHkK KyAgICAgICAgICAgICAgY29udmVydGVkIHRvIHRoZSA8dHlwZT50ZXh0PC90eXBlPiB0eXBl LgorICAgICAgICAgICAgICBUaGUgcHJvdmlkZWQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgPGxp dGVyYWw+TlVMTDwvbGl0ZXJhbD4gb3IKKyAgICAgICAgICAgICAgYmVsb25nIHRvIGEgdHlw ZSB0aGF0IGhhcyBhIGNhc3QgdG8gPHR5cGU+anNvbjwvdHlwZT4uCisgICAgICAgICAgICA8 L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZV9leHBy ZXNzaW9uPC9wYXJhbWV0ZXI+IGlzIGFuIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgdGhh dCBwcm92aWRlcyB0aGUgaW5wdXQgZm9yIHRoZSA8YWNyb255bT5KU09OPC9hY3JvbnltPiB2 YWx1ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBU aGUgb3B0aW9uYWwgPGxpdGVyYWw+Rk9STUFUPC9saXRlcmFsPiBjbGF1c2UgaXMgcHJvdmlk ZWQgdG8KKyAgICAgICAgICAgICAgY29uZm9ybSB0byB0aGUgU1FML0pTT04gc3RhbmRhcmQu CisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg ICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDxwYXJhPgorICAgICAgICBZb3UgbXVzdCB1 c2UgYSBjb2xvbiBvciB0aGUgPGxpdGVyYWw+VkFMVUU8L2xpdGVyYWw+IGtleXdvcmQgYXMg YQorICAgICAgICBkZWxpbWl0ZXIgYmV0d2VlbiB0aGUga2V5IGFuZCB0aGUgdmFsdWUuIE11 bHRpcGxlIGtleS92YWx1ZSBwYWlycyBhcmUKKyAgICAgICAgc2VwYXJhdGVkIGJ5IGNvbW1h cy4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPnsgTlVM TCB8IEFCU0VOVCB9IE9OIE5VTEw8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgICBEZWZpbmVzIHdoZXRoZXIgPGxpdGVyYWw+ TlVMTDwvbGl0ZXJhbD4gdmFsdWVzIGFyZSBhbGxvd2VkIGluIHRoZSBjb25zdHJ1Y3RlZAor ICAgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmplY3Q6CisgICAgICAgIDwvcGFy YT4KKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+PC90ZXJtPgorICAgICAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIERl ZmF1bHQuIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHZhbHVlcyBhcmUgYWxsb3dlZC4KKyAg ICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAg IDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAg IDx0ZXJtPjxsaXRlcmFsPkFCU0VOVDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIElmIHRoZSB2 YWx1ZSBpcyA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiwKKyAgICAgICAgICAgICAgdGhlIGNv cnJlc3BvbmRpbmcga2V5L3ZhbHVlIHBhaXIgaXMgb21pdHRlZCBmcm9tIHRoZSBnZW5lcmF0 ZWQKKyAgICAgICAgICAgICAgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0LgorICAg ICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAg PC92YXJsaXN0ZW50cnk+CisgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPC9saXN0 aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+CisgICAgIDxsaXRlcmFsPnsgV0lUSCB8IFdJVEhPVVQgfSBVTklRVUUgPG9wdGlv bmFsPiBLRVlTIDwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPkRlZmluZXMgd2hldGhlciBkdXBsaWNhdGUga2V5cyBhcmUg YWxsb3dlZDoKKyAgICAgPC9wYXJhPgorICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5XSVRIT1VUPC9s aXRlcmFsPjwvdGVybT4KKyAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgICBEZWZhdWx0LiBUaGUgY29uc3RydWN0ZWQKKyAgICAgICAg ICAgICAgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0IGNhbiBjb250YWluIGR1cGxp Y2F0ZSBrZXlzLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRy eT4KKyAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAg ICAgIER1cGxpY2F0ZSBrZXlzIGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgICAgICAgSWYg dGhlIGlucHV0IGRhdGEgY29udGFpbnMgZHVwbGljYXRlIGtleXMsIGFuIGVycm9yIGlzIHJl dHVybmVkLgorICAgICAgICAgICAgICBUaGlzIGNoZWNrIGlzIHBlcmZvcm1lZCBiZWZvcmUg cmVtb3ZpbmcgSlNPTiBpdGVtcyB3aXRoIE5VTEwgdmFsdWVzLgorICAgICAgICAgICAgIDwv cGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50 cnk+CisgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHBhcmE+CisgICAgICAgT3B0 aW9uYWxseSwgeW91IGNhbiBhZGQgdGhlIDxsaXRlcmFsPktFWVM8L2xpdGVyYWw+IGtleXdv cmQgZm9yIHNlbWFudGljIGNsYXJpdHkuCisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgPC92YXJsaXN0ZW50cnk+CisKKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4K KyAgICAgPGxpdGVyYWw+UkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRp b25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFsPjwvbGl0ZXJhbD4K KyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgICBUaGUg b3V0cHV0IGNsYXVzZSB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZ2VuZXJhdGVk IDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IG9iamVjdC4KKyAgICAgICBGb3IgZGV0YWlscywg c2VlIDx4cmVmIGxpbmtlbmQ9InNxbGpzb24tb3V0cHV0LWNsYXVzZSIvPi4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPC92YXJp YWJsZWxpc3Q+CisgICAgPC9zZWN0NT4KKworIDxzZWN0NT4KKyAgPHRpdGxlPk5vdGVzPC90 aXRsZT4KKyAgPHBhcmE+QWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb25zdHJ1Y3QgPGFjcm9u eW0+SlNPTjwvYWNyb255bT4gb2JqZWN0cyBieSB1c2luZworICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+LXNwZWNpZmljIDxmdW5jdGlvbj5qc29uX2J1aWxkX29i amVjdCgpPC9mdW5jdGlvbj4vCisgIDxmdW5jdGlvbj5qc29uYl9idWlsZF9vYmplY3QoKTwv ZnVuY3Rpb24+IGZ1bmN0aW9ucy4KKyAgU2VlIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1q c29uLWNyZWF0aW9uLXRhYmxlIi8+IGZvciBkZXRhaWxzLgorICA8L3BhcmE+CisgPC9zZWN0 NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKyAgPHBh cmE+CisgICBDb25zdHJ1Y3QgYSBKU09OIG9iamVjdCBmcm9tIHRoZSBwcm92aWRlZCBrZXkv dmFsdWUgcGFpcnMgb2YgdmFyaW91cyB0eXBlczoKKyAgPC9wYXJhPgorPHNjcmVlbj4KK1NF TEVDVCBKU09OX09CSkVDVCgKKy0tIHNjYWxhciBKU09OIHR5cGVzCisgJ2tleTEnOiAnc3Ry aW5nJywKKyAna2V5Mic6ICdbMSwgMl0nLAorICdrZXkzJyBWQUxVRSAxMjMsIC0tIGFsdGVy bmF0aXZlIHN5bnRheCBmb3Iga2V5LXZhbHVlIGRlbGltaXRlcgorICdrZXk0JzogTlVMTCwK Ky0tIG90aGVyIHR5cGVzCisgJ2tleTUnOiBBUlJBWVsxLCAyLCAzXSwgLS0gcG9zdGdyZXMg YXJyYXkKKyAna2V5Nic6IGpzb25iICd7ImEiOiBbImIiLCAxXX0nLCAtLSBjb21wb3NpdGUg anNvbi9qc29uYgorICdrZXk3JzogZGF0ZSAnMjAxNy0wOS0zMCcsIC0tIGRhdGV0aW1lIHR5 cGUKKyAna2V5OCc6IHJvdygxLCAnYScpLCAtLSByb3cgdHlwZQorICdrZXk5JzogJ1sxLCAy XScgRk9STUFUIEpTT04sIC0tIHNhbWUgdmFsdWUgYXMgZm9yIGtleTIsIGJ1dCB3aXRoIEZP Uk1BVAorLS0ga2V5IGNhbiBiZSBhbiBleHByZXNzaW9uCisgICdrZXknIHx8ICdsYXN0JyA6 IFRSVUUKK0FCU0VOVCBPTiBOVUxMKSBBUyBqc29uOworICAgICAgICAgICAgICAgICAgICAg ICBqc29uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCit7ImtleTEiIDogInN0cmluZyIsICJrZXkyIiA6ICJbMSwgMl0iLCAia2V5MyIg OiAxMjMsCisgImtleTUiIDogWzEsMiwzXSwgImtleTYiIDogeyJhIjogWyJiIiwgMV19LAor ICJrZXk3IiA6ICIyMDE3LTA5LTMwIiwgImtleTgiIDogeyJmMSI6MSwiZjIiOiJhIn0sCisg ImtleTkiIDogWzEsIDJdLCAia2V5bGFzdCIgOiB0cnVlfQorKDEgcm93KQorPC9zY3JlZW4+ CisKKyAgPHBhcmE+CisgICBGcm9tIHRoZSA8c3RydWN0bmFtZT5maWxtczwvc3RydWN0bmFt ZT4gdGFibGUsIHNlbGVjdCBzb21lIGRhdGEKKyAgIGFib3V0IHRoZSBmaWxtcyBkaXN0cmli dXRlZCBieSBQYXJhbW91bnQgUGljdHVyZXMKKyAgICg8bGl0ZXJhbD5kaWQ8L2xpdGVyYWw+ ID0gMTAzKSBhbmQgcmV0dXJuIEpTT04gb2JqZWN0czoKKyAgPC9wYXJhPgorPHNjcmVlbj4K K1NFTEVDVAorSlNPTl9PQkpFQ1QoCisgJ2NvZGUnIFZBTFVFIGYuY29kZSwKKyAndGl0bGUn IFZBTFVFIGYudGl0bGUsCisgJ2RpZCcgVkFMVUUgZi5kaWQKKykgQVMgcGFyYW1vdW50CitG Uk9NIGZpbG1zIEFTIGYKK1dIRVJFIGYuZGlkID0gMTAzOworICAgICAgICAgICAgICAgICAg ICBwYXJhbW91bnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK3siY29kZSIgOiAiUF8zMDEiLCAidGl0bGUiIDogIlZlcnRpZ28iLCAi ZGlkIiA6IDEwM30KK3siY29kZSIgOiAiUF8zMDIiLCAidGl0bGUiIDogIkJlY2tldCIsICJk aWQiIDogMTAzfQoreyJjb2RlIiA6ICJQXzMwMyIsICJ0aXRsZSIgOiAiNDggSHJzIiwgImRp ZCIgOiAxMDN9CisoMyByb3dzKQorPC9zY3JlZW4+CisgICAgPC9zZWN0NT4KKyAgIDwvc2Vj dDQ+CisKKyAgIDxzZWN0NCBpZD0iZnVuY3Rpb25zLWpzb25vYmplY3RhZ2ciPgorICAgPHRp dGxlPjxsaXRlcmFsPkpTT05fT0JKRUNUQUdHPC9saXRlcmFsPjwvdGl0bGU+CisgICA8aW5k ZXh0ZXJtPjxwcmltYXJ5Pmpzb25fb2JqZWN0YWdnPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgor ICAgCis8c3lub3BzaXM+Cis8ZnVuY3Rpb24+SlNPTl9PQkpFQ1RBR0c8L2Z1bmN0aW9uPiAo CisgIDxvcHRpb25hbD4geyA8cGFyYW1ldGVyPmtleV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+ IHsgVkFMVUUgfCAnOicgfSA8cGFyYW1ldGVyPnZhbHVlX2V4cHJlc3Npb248L3BhcmFtZXRl cj4gfSA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IHsgTlVMTCB8IEFCU0VOVCB9IE9OIE5V TEwgPC9vcHRpb25hbD4KKyAgPG9wdGlvbmFsPiB7IFdJVEggfCBXSVRIT1VUIH0gVU5JUVVF IDxvcHRpb25hbD4gS0VZUyA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+ IFJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9y ZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5H IFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKykKKworPC9zeW5v cHNpcz4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4K KworICAgICA8cGFyYT4KKyAgICAgIFRoZSA8ZnVuY3Rpb24+SlNPTl9PQkpFQ1RBR0c8L2Z1 bmN0aW9uPiBmdW5jdGlvbiBhZ2dyZWdhdGVzIHRoZSBwcm92aWRlZCBkYXRhCisgICAgICBp bnRvIGEgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0LiBZb3UgY2FuIHVzZSB0aGlz IGZ1bmN0aW9uIHRvIGNvbWJpbmUgdmFsdWVzCisgICAgICBzdG9yZWQgaW4gZGlmZmVyZW50 IHRhYmxlIGNvbHVtbnMgaW50byBwYWlycy4gSWYgeW91IHNwZWNpZnkgYSA8Y29tbWFuZD5H Uk9VUCBCWTwvY29tbWFuZD4KKyAgICAgIG9yIGFuIDxjb21tYW5kPk9SREVSIEJZPC9jb21t YW5kPiBjbGF1c2UsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHNlcGFyYXRlIEpTT04gb2Jq ZWN0CisgICAgICBmb3IgZWFjaCB0YWJsZSByb3cuCisgICAgPC9wYXJhPgorICAgIDwvc2Vj dDU+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKwor ICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAg PGxpdGVyYWw+PHBhcmFtZXRlcj5rZXlfZXhwcmVzc2lvbjwvcGFyYW1ldGVyPiB7IFZBTFVF IHwgJzonIH0gPHBhcmFtZXRlcj52YWx1ZV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+PC9saXRl cmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAg IFRoZSBpbnB1dCBjbGF1c2UgdGhhdCBwcm92aWRlcyB0aGUgZGF0YSB0byBiZSBhZ2dyZWdh dGVkIGFzIGEgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0OgorICAgIDwvcGFyYT4K KyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgPHBhcmFtZXRlcj5rZXlfZXhwcmVzc2lvbjwv cGFyYW1ldGVyPiBpcyBhIHNjYWxhciBleHByZXNzaW9uCisgICAgICAgICAgICAgIGRlZmlu aW5nIHRoZSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBrZXksIHdoaWNoIGlzIGltcGxpY2l0 bHkKKyAgICAgICAgICAgICAgY29udmVydGVkIHRvIHRoZSA8dHlwZT50ZXh0PC90eXBlPiB0 eXBlLgorICAgICAgICAgICAgICBUaGUgcHJvdmlkZWQgZXhwcmVzc2lvbiBjYW5ub3QgYmUg PGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gb3IKKyAgICAgICAgICAgICAgYmVsb25nIHRvIGEg dHlwZSB0aGF0IGhhcyBhIGNhc3QgdG8gPHR5cGU+anNvbjwvdHlwZT4uCisgICAgICAgICAg ICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZV9l eHByZXNzaW9uPC9wYXJhbWV0ZXI+IGlzIGFuIGV4cHJlc3Npb24gdGhhdAorICAgICAgICAg ICAgICBwcm92aWRlcyB0aGUgaW5wdXQgZm9yIHRoZSA8YWNyb255bT5KU09OPC9hY3Jvbnlt PiB2YWx1ZSBwcmVjZWRlZAorICAgICAgICAgICAgICBieSBpdHMgdHlwZS4KKyAgICAgICAg ICAgICAgRm9yIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IHNjYWxhciB0eXBlcywgeW91IGNh biBvbWl0IHRoZSB0eXBlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPG5v dGU+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBpbnB1dCB2 YWx1ZSBvZiB0aGUgPGxpdGVyYWw+Ynl0ZWE8L2xpdGVyYWw+IHR5cGUgbXVzdCBiZSBzdG9y ZWQgaW4gPGxpdGVyYWw+VVRGODwvbGl0ZXJhbD4KKyAgICAgICAgICAgICAgICBhbmQgY29u dGFpbiBhIHZhbGlkIDxsaXRlcmFsPlVURjg8L2xpdGVyYWw+IHN0cmluZy4gT3RoZXJ3aXNl LCBhbiBlcnJvciBvY2N1cnMuCisgICAgICAgICAgICAgICAgPHByb2R1Y3RuYW1lPlBvc3Rn cmVTUUw8L3Byb2R1Y3RuYW1lPiBjdXJyZW50bHkgc3VwcG9ydHMgb25seSA8bGl0ZXJhbD5V VEY4PC9saXRlcmFsPi4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9u b3RlPgorICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICA8L2l0ZW1pemVkbGlz dD4KKyAgICAgIDxwYXJhPgorICAgICAgICBZb3UgbXVzdCB1c2UgYSBjb2xvbiBvciB0aGUg PGxpdGVyYWw+VkFMVUU8L2xpdGVyYWw+IGtleXdvcmQgYXMgYSBkZWxpbWl0ZXIgYmV0d2Vl bgorICAgICAgICBrZXlzIGFuZCB2YWx1ZXMuIE11bHRpcGxlIGtleS92YWx1ZSBwYWlycyBh cmUgc2VwYXJhdGVkIGJ5IGNvbW1hcy4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ CisgICAgIDxsaXRlcmFsPnsgTlVMTCB8IEFCU0VOVCB9IE9OIE5VTEw8L2xpdGVyYWw+Cisg ICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgICBEZWZp bmVzIHdoZXRoZXIgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gdmFsdWVzIGFyZSBhbGxvd2Vk IGluIHRoZSBjb25zdHJ1Y3RlZAorICAgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBv YmplY3Q6CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5OVUxMPC9saXRl cmFsPjwvdGVybT4KKyAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJh PgorICAgICAgICAgICAgICBEZWZhdWx0LiA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB2YWx1 ZXMgYXJlIGFsbG93ZWQuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9s aXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5BQlNFTlQ8L2xpdGVyYWw+PC90 ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAg ICAgICAgICAgICBJZiB0aGUgdmFsdWUgaXMgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4sCisg ICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGtleS92YWx1ZSBwYWlyIGlzIG9taXR0 ZWQgZnJvbSB0aGUgZ2VuZXJhdGVkCisgICAgICAgICAgICAgIDxhY3JvbnltPkpTT048L2Fj cm9ueW0+IG9iamVjdC4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xp c3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8L3ZhcmlhYmxl bGlzdD4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IFdJVEggfCBXSVRI T1VUIH0gVU5JUVVFIDxvcHRpb25hbD4gS0VZUyA8L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAg ICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT5EZWZpbmVzIHdoZXRoZXIg ZHVwbGljYXRlIGtleXMgYXJlIGFsbG93ZWQ6CisgICAgIDwvcGFyYT4KKyAgICAgICAgPHZh cmlhYmxlbGlzdD4KKyAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx0ZXJt PjxsaXRlcmFsPldJVEhPVVQ8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIERlZmF1bHQuIFRoZSBj b25zdHJ1Y3RlZAorICAgICAgICAgICAgICA8YWNyb255bT5KU09OPC9hY3JvbnltPiBvYmpl Y3QgY2FuIGNvbnRhaW4gZHVwbGljYXRlIGtleXMuCisgICAgICAgICAgICAgPC9wYXJhPgor ICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAg ICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5XSVRI PC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICAgICAgRHVwbGljYXRlIGtleXMgYXJlIG5vdCBhbGxvd2Vk LgorICAgICAgICAgICAgICBJZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBkdXBsaWNhdGUg a2V5cywgYW4gZXJyb3IgaXMgcmV0dXJuZWQuCisgICAgICAgICAgICAgIFRoaXMgY2hlY2sg aXMgcGVyZm9ybWVkIGJlZm9yZSByZW1vdmluZyBKU09OIGl0ZW1zIHdpdGggTlVMTCB2YWx1 ZXMuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAg ICA8cGFyYT4KKyAgICAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBhZGQgdGhlIDxsaXRlcmFs PktFWVM8L2xpdGVyYWw+IGtleXdvcmQgZm9yIHNlbWFudGljIGNsYXJpdHkuCisgICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+CisKKyAgPHZhcmxp c3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+UkVUVVJOSU5HIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9u YWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8 L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgICBUaGUgb3V0cHV0IGNsYXVzZSB0aGF0IHNwZWNpZmllcyB0aGUg dHlwZSBvZiB0aGUgZ2VuZXJhdGVkIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IG9iamVjdC4K KyAgICAgICBGb3IgZGV0YWlscywgc2VlIDx4cmVmIGxpbmtlbmQ9InNxbGpzb24tb3V0cHV0 LWNsYXVzZSIvPi4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0PgorICAgIDwvc2VjdDU+CisKKyA8c2Vj dDU+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisgIDxwYXJhPkFsdGVybmF0aXZlbHksIHlv dSBjYW4gY3JlYXRlIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IG9iamVjdHMgYnkgdXNpbmcK KyAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPi1zcGVjaWZpYyA8ZnVu Y3Rpb24+anNvbl9vYmplY3RfYWdnKCk8L2Z1bmN0aW9uPi8KKyAgPGZ1bmN0aW9uPmpzb25i X29iamVjdF9hZ2coKTwvZnVuY3Rpb24+IGFnZ3JlZ2F0ZSBmdW5jdGlvbnMuCisgIFNlZSA8 eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtYWdncmVnYXRlIi8+IGZvciBkZXRhaWxzLgorICA8 L3BhcmE+CisgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVz PC90aXRsZT4KKworICA8cGFyYT4KKyAgICBGb3IgZmlsbXMgd2l0aCA8bGl0ZXJhbD5kaWQ8 L2xpdGVyYWw+ID0gMTAzLCBhZ2dyZWdhdGUga2V5L3ZhbHVlIHBhaXJzCisgICAgb2YgZmls bSBnZW5yZSAoPGxpdGVyYWw+Zi5raW5kPC9saXRlcmFsPikgYW5kIHRpdGxlICg8bGl0ZXJh bD5mLnRpdGxlPC9saXRlcmFsPikKKyAgICBpbnRvIGEgc2luZ2xlIG9iamVjdDoKKyAgPC9w YXJhPgorPHNjcmVlbj4KK1NFTEVDVAorSlNPTl9PQkpFQ1RBR0coCisgZi5raW5kIFZBTFVF IGYudGl0bGUpCisgQVMgZmlsbXNfbGlzdAorRlJPTSBmaWxtcyBBUyBmCit3aGVyZSBmLmRp ZCA9IDEwMzsKKyAgICAgICAgICAgICAgICAgZmlsbXNfbGlzdAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoreyAiQWN0aW9uIiA6ICJW ZXJ0aWdvIiwgIkRyYW1hIiA6ICJCZWNrZXQiLCAiQWN0aW9uIiA6ICI0OCBIcnMiIH0KKzwv c2NyZWVuPgorCisgIDxwYXJhPgorICAgIFJldHVybiB0aGUgc2FtZSBvYmplY3QgYXMgPHR5 cGU+anNvbmI8L3R5cGU+LiBOb3RlIHRoYXQgb25seSBhIHNpbmdsZSBmaWxtIG9mCisgICAg dGhlIGFjdGlvbiBnZW5yZSBpcyBpbmNsdWRlZCBhcyB0aGUgPHR5cGU+anNvbmI8L3R5cGU+ IHR5cGUgZG9lcyBub3QgYWxsb3cgZHVwbGljYXRlIGtleXMuCisgIDwvcGFyYT4KKzxzY3Jl ZW4+CitTRUxFQ1QKK0pTT05fT0JKRUNUQUdHKAorICBmLmtpbmQgVkFMVUUgZi50aXRsZQor ICBSRVRVUk5JTkcganNvbmIpCitBUyBmaWxtc19saXN0CitGUk9NIGZpbG1zIEFTIGYKK3do ZXJlIGYuZGlkID0gMTAzOworICAgICAgICAgICAgICAgICBmaWxtc19saXN0CistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit7IkRyYW1h IjogIkJlY2tldCIsICJBY3Rpb24iOiAiNDggSHJzIn0KKzwvc2NyZWVuPgorCisgIDxwYXJh PgorICAgIFJldHVybiBvYmplY3RzIG9mIGZpbG0gdGl0bGVzIGFuZCBsZW5ndGgsIGdyb3Vw ZWQgYnkgdGhlIGZpbG0gZ2VucmU6CisgIDwvcGFyYT4KKzxzY3JlZW4+CitTRUxFQ1QKKyAg Zi5raW5kLAorICBKU09OX09CSkVDVEFHRygKKyAgICBmLnRpdGxlIFZBTFVFIGYubGVuCisp IEFTIGZpbG1zX2xpc3QKK0ZST00gZmlsbXMgQVMgZgorR1JPVVAgQlkgZi5raW5kOworCisg ICAgIGtpbmQgICAgfCAgICAgICAgZmlsbXNfbGlzdAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNdXNpY2FsICAgICAgfCB7ICJXZXN0IFNp ZGUgU3RvcnkiIDogIjAyOjMyOjAwIiwgIlRoZSBLaW5nIGFuZCBJIiA6ICIwMjoxMzowMCIs ICJCZWQgS25vYnMgYW5kIEJyb29tc3RpY2tzIiA6ICIwMTo1NzowMCIgfQorUm9tYW50aWMg ICAgIHwgeyAiVGhlIEFmcmljYW4gUXVlZW4iIDogIjAxOjQzOjAwIiwgIlVuZSBGZW1tZSBl c3QgdW5lIEZlbW1lIiA6ICIwMToyNTowMCIsICJTdG9yaWEgZGkgdW5hIGRvbm5hIiA6ICIw MTozMDowMCIgfQorQ29tZWR5ICAgICAgIHwgeyAiQmFuYW5hcyIgOiAiMDE6MjI6MDAiLCAi VGhlcmUncyBhIEdpcmwgaW4gbXkgU291cCIgOiAiMDE6MzY6MDAiIH0KK0RyYW1hICAgICAg ICB8IHsgIlRoZSBUaGlyZCBNYW4iIDogIjAxOjQ0OjAwIiwgIkJlY2tldCIgOiAiMDI6Mjg6 MDAiLCAiV2FyIGFuZCBQZWFjZSIgOiAiMDU6NTc6MDAiLCAiWW9qaW1ibyIgOiAiMDE6NTA6 MDAiLCAiRGFzIEJvb3QiIDogIjAyOjI5OjAwIiB9CitBY3Rpb24gICAgICAgfCB7ICJWZXJ0 aWdvIiA6ICIwMjowODowMCIsICI0OCBIcnMiIDogIjAxOjM3OjAwIiwgIlRheGkgRHJpdmVy IiA6ICIwMTo1NDowMCIsICJBYnNlbmNlIG9mIE1hbGljZSIgOiAiMDE6NTU6MDAiIH0KKyg1 IHJvd3MpCis8L3NjcmVlbj4KKyAgICA8L3NlY3Q1PgorICAgPC9zZWN0ND4KKworICAgPHNl Y3Q0IGlkPSJmdW5jdGlvbnMtanNvbmFycmF5Ij4KKyAgICA8dGl0bGU+PGxpdGVyYWw+SlNP Tl9BUlJBWTwvbGl0ZXJhbD48L3RpdGxlPgorICAgIDxpbmRleHRlcm0+PHByaW1hcnk+anNv bl9hcnJheTwvcHJpbWFyeT48L2luZGV4dGVybT4KKworPHN5bm9wc2lzPgorPGZ1bmN0aW9u PkpTT05fQVJSQVk8L2Z1bmN0aW9uPiAoCisgIDxvcHRpb25hbD4geyA8cGFyYW1ldGVyPnZh bHVlX2V4cHJlc3Npb248L3BhcmFtZXRlcj4gPG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8L29w dGlvbmFsPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgIDxv cHRpb25hbD4geyBOVUxMIHwgQUJTRU5UIH0gT04gTlVMTCA8L29wdGlvbmFsPgorICA8b3B0 aW9uYWw+IFJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90 eXBlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8b3B0aW9uYWw+IEVO Q09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKykKKzwv c3lub3BzaXM+Cis8c3lub3BzaXM+SlNPTl9BUlJBWSAoCisgIDxvcHRpb25hbD4gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnF1ZXJ5X2V4cHJlc3Npb248L3JlcGxhY2VhYmxl PiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IFJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBGT1JN QVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25h bD4gPC9vcHRpb25hbD4KKykKKzwvc3lub3BzaXM+CisKKyAgICA8c2VjdDU+CisgICAgIDx0 aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGZ1 bmN0aW9uPkpTT05fQVJSQVk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgPGFj cm9ueW0+SlNPTjwvYWNyb255bT4gYXJyYXkgZnJvbQorICAgICAgdGhlIHByb3ZpZGVkIDxh Y3JvbnltPlNRTDwvYWNyb255bT4gb3IgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gZGF0YS4K KyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRs ZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgICA8dGVybT4KKyAgICAgICAgPGxpdGVyYWw+PHBhcmFtZXRlcj52YWx1 ZV9leHByZXNzaW9uPC9wYXJhbWV0ZXI+PC9saXRlcmFsPgorICAgICAgPC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBpbnB1dCBj bGF1c2UgdGhhdCBwcm92aWRlcyB0aGUgZGF0YSBmb3IgY29uc3RydWN0aW5nIGEgSlNPTiBh cnJheS4KKyAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZh bHVlX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBpcyBhbiBleHByZXNzaW9uCisgICAgICAg ICAgdGhhdCBwcm92aWRlcyB0aGUgaW5wdXQgZm9yIHRoZSA8YWNyb255bT5KU09OPC9hY3Jv bnltPiB2YWx1ZSBwcmVjZWRlZCBieSBpdHMgdHlwZS4KKyAgICAgICAgICBGb3IgPGFjcm9u eW0+SlNPTjwvYWNyb255bT4gc2NhbGFyIHR5cGVzLCB5b3UgY2FuIG9taXQgdGhlIHR5cGUu CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICBUaGUgaW5wdXQgdmFsdWUgb2YgdGhlIDxsaXRlcmFsPmJ5dGVhPC9saXRl cmFsPiB0eXBlIG11c3QgYmUgc3RvcmVkIGluIDxsaXRlcmFsPlVURjg8L2xpdGVyYWw+Cisg ICAgICAgICAgICBhbmQgY29udGFpbiBhIHZhbGlkIDxsaXRlcmFsPlVURjg8L2xpdGVyYWw+ IHN0cmluZy4gT3RoZXJ3aXNlLCBhbiBlcnJvciBvY2N1cnMuCisgICAgICAgICAgICA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGN1cnJlbnRseSBzdXBwb3J0cyBv bmx5IDxsaXRlcmFsPlVURjg8L2xpdGVyYWw+LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAg ICAgPC9ub3RlPgorCisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPgorICAgICAgICA8bGl0ZXJhbD48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVlcnlfZXhwcmVzc2lvbjwvcmVwbGFjZWFi bGU+PC9saXRlcmFsPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBBbiBTUUwgcXVlcnkgdGhhdCBwcm92aWRlcyB0aGUgZGF0 YSBmb3IgY29uc3RydWN0aW5nIGEgSlNPTiBhcnJheS4KKyAgICAgICAgICBUaGUgcXVlcnkg bXVzdCByZXR1cm4gYSBzaW5nbGUgY29sdW1uIHRoYXQgaG9sZHMgdGhlIHZhbHVlcyB0byBi ZQorICAgICAgICAgIHVzZWQgaW4gdGhlIGFycmF5LgorICAgICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+eyBOVUxMIHwgQUJTRU5UIH0gT04gTlVMTDwv bGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Cisg ICAgICAgIERlZmluZXMgd2hldGhlciA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB2YWx1ZXMg YXJlIGFsbG93ZWQgaW4gdGhlIGdlbmVyYXRlZCA8YWNyb255bT5KU09OPC9hY3JvbnltPiBh cnJheToKKyAgICAgIDwvcGFyYT4KKyAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+TlVMTDwvbGl0ZXJh bD48L3Rlcm0+CisgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gdmFsdWVzIGFyZSBhbGxv d2VkLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgICAgICAgPHRlcm0+PGxpdGVyYWw+QUJTRU5UPC9saXRlcmFsPjwvdGVybT4KKyAgICAg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAg RGVmYXVsdC4gSWYgdGhlIHZhbHVlIGlzIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+LAorICAg ICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBrZXkvdmFsdWUgcGFpciBpcyBvbWl0dGVk IGZyb20gdGhlIGdlbmVyYXRlZAorICAgICAgICAgICAgICA8YWNyb255bT5KU09OPC9hY3Jv bnltPiBvYmplY3QuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPC92YXJpYWJsZWxp c3Q+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgY2xhdXNlIGlzIG9ubHkgc3Vw cG9ydGVkIGZvciBhcnJheXMgYnVpbHQgZnJvbSBhbiBleHBsaWNpdCBsaXN0IG9mIHZhbHVl cy4KKyAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGFuIFNRTCBxdWVyeSB0byBnZW5lcmF0 ZSBhbiBhcnJheSwgTlVMTCB2YWx1ZXMgYXJlIGFsd2F5cworICAgICAgICAgIG9taXR0ZWQu CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlJF VFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBs YWNlYWJsZT4gPG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVU RjggPC9vcHRpb25hbD4gPC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICAgVGhlIG91dHB1dCBjbGF1c2UgdGhh dCBzcGVjaWZpZXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBjb25zdHJ1Y3RlZCA8YWNyb255 bT5KU09OPC9hY3JvbnltPiBhcnJheS4KKyAgICAgICBGb3IgZGV0YWlscywgc2VlIDx4cmVm IGxpbmtlbmQ9InNxbGpzb24tb3V0cHV0LWNsYXVzZSIvPi4KKyAgICAgIDwvcGFyYT4KKyAg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCis8L3ZhcmlhYmxlbGlzdD4K KyAgICA8L3NlY3Q1PgorCisgPHNlY3Q1PgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorICA8 cGFyYT5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNyZWF0ZSA8YWNyb255bT5KU09OPC9hY3Jv bnltPiBhcnJheXMgYnkgdXNpbmcKKyAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPi1zcGVjaWZpYyA8ZnVuY3Rpb24+anNvbl9idWlsZF9hcnJheSgpPC9mdW5jdGlv bj4vCisgIDxmdW5jdGlvbj5qc29uYl9idWlsZF9hcnJheSgpPC9mdW5jdGlvbj4gZnVuY3Rp b25zLgorICBTZWUgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWpzb24iLz4gZm9yIGRldGFp bHMuCisgIDwvcGFyYT4KKyA8L3NlY3Q1PgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+ RXhhbXBsZXM8L3RpdGxlPgorICA8cGFyYT4KKyAgICBGcm9tIHRoZSA8c3RydWN0bmFtZT5m aWxtczwvc3RydWN0bmFtZT4gdGFibGUsIHNlbGVjdCBzb21lIGRhdGEKKyAgICBhYm91dCB0 aGUgZmlsbXMgZGlzdHJpYnV0ZWQgYnkgUGFyYW1vdW50IFBpY3R1cmVzCisgICAgKDxsaXRl cmFsPmRpZDwvbGl0ZXJhbD4gPSAxMDMpIGFuZCByZXR1cm4gSlNPTiBhcnJheXM6CisgIDwv cGFyYT4KKzxzY3JlZW4+CitTRUxFQ1QKK0pTT05fQVJSQVkoCisgIGYuY29kZSwKKyAgZi50 aXRsZSwKKyAgZi5kaWQKKykgQVMgZmlsbXMKK0ZST00gZmlsbXMgQVMgZgorV0hFUkUgZi5k aWQgPSAxMDM7CisgICAgICAgICAgICAgICAgICAgICAgIGZpbG1zCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitbImNvZGUiIDogIlBf MzAxIiwgInRpdGxlIiA6ICJWZXJ0aWdvIiwgImRpZCIgOiAxMDNdCitbImNvZGUiIDogIlBf MzAyIiwgInRpdGxlIiA6ICJCZWNrZXQiLCAiZGlkIiA6IDEwM10KK1siY29kZSIgOiAiUF8z MDMiLCAidGl0bGUiIDogIjQ4IEhycyIsICJkaWQiIDogMTAzXQorKDMgcm93cykKKzwvc2Ny ZWVuPgorICA8cGFyYT4KKyAgICBDb25zdHJ1Y3QgYSBKU09OIGFycmF5IGZyb20gdGhlIGxp c3Qgb2YgZmlsbSB0aXRsZXMgcmV0dXJuZWQgZnJvbSB0aGUKKyAgICA8c3RydWN0bmFtZT5m aWxtczwvc3RydWN0bmFtZT4gdGFibGUgYnkgYSBzdWJxdWVyeToKKyAgPC9wYXJhPgorPHNj cmVlbj4KK1NFTEVDVAorSlNPTl9BUlJBWSgKKyAgU0VMRUNUCisgIGYudGl0bGUKK0ZST00g ZmlsbXMgQVMgZgord2hlcmUgZi5kaWQgPSAxMDMpCitBUyBmaWxtX3RpdGxlczsKKyAgICAg ICAgICAgICAgICAgICAgZmlsbV90aXRsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1siVmVydGlnbyIsICJCZWNrZXQiLCAiNDgg SHJzIl0KKygxIHJvdykKKzwvc2NyZWVuPgorICAgIDwvc2VjdDU+CisgICA8L3NlY3Q0Pgor CisgICA8c2VjdDQgaWQ9ImZ1bmN0aW9ucy1qc29uYXJyYXlhZ2ciPgorICAgIDx0aXRsZT48 bGl0ZXJhbD5KU09OX0FSUkFZQUdHPC9saXRlcmFsPjwvdGl0bGU+CisgICAgPGluZGV4dGVy bT48cHJpbWFyeT5qc29uX2FycmF5YWdnPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorCis8c3lu b3BzaXM+Cis8ZnVuY3Rpb24+SlNPTl9BUlJBWUFHRzwvZnVuY3Rpb24+ICgKKyAgPG9wdGlv bmFsPiA8cGFyYW1ldGVyPnZhbHVlX2V4cHJlc3Npb248L3BhcmFtZXRlcj4gPC9vcHRpb25h bD4KKyAgPG9wdGlvbmFsPiBPUkRFUiBCWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+c29ydF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgPG9wdGlv bmFsPiB7IE5VTEwgfCBBQlNFTlQgfSBPTiBOVUxMIDwvb3B0aW9uYWw+CisgIDxvcHRpb25h bD4gUkVUVVJOSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJ TkcgVVRGOCA8L29wdGlvbmFsPiA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorKQorCis8L3N5 bm9wc2lzPgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxl PgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIDxmdW5jdGlvbj5KU09OX0FSUkFZQUdHPC9m dW5jdGlvbj4gZnVuY3Rpb24gYWdncmVnYXRlcyB0aGUgcHJvdmlkZWQgPGFjcm9ueW0+U1FM PC9hY3JvbnltPgorICAgICAgb3IgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gZGF0YSBpbnRv IGEgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gYXJyYXkuCisgICAgIDwvcGFyYT4KKyAgICA8 L3NlY3Q1PgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+ CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+ CisgICAgICAgIDxsaXRlcmFsPjxwYXJhbWV0ZXI+dmFsdWVfZXhwcmVzc2lvbjwvcGFyYW1l dGVyPjwvbGl0ZXJhbD4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKworICAg ICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgaW5wdXQgY2xhdXNlIHRoYXQgcHJvdmlkZXMg dGhlIGlucHV0IGRhdGEgdG8gYmUgYWdncmVnYXRlZCBhcworICAgICAgICAgIGEgPGFjcm9u eW0+SlNPTjwvYWNyb255bT4gYXJyYXkuCisgICAgICAgICAgVGhlIDxwYXJhbWV0ZXI+dmFs dWVfZXhwcmVzc2lvbjwvcGFyYW1ldGVyPiBjYW4gYmUgYSB2YWx1ZSBvciBhIHF1ZXJ5Cisg ICAgICAgICAgcmV0dXJuaW5nIHRoZSB2YWx1ZXMgdG8gYmUgdXNlZCBhcyBpbnB1dCBpbiBh cnJheSBjb25zdHJ1Y3Rpb24uCisgICAgICAgICAgWW91IGNhbiBwcm92aWRlIG11bHRpcGxl IGlucHV0IHZhbHVlcyBzZXBhcmF0ZWQgYnkgY29tbWFzLgorICAgICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCis8dmFybGlzdGVudHJ5Pgor ICAgICAgPHRlcm0+CisgICAgICAgIDxsaXRlcmFsPk9SREVSIEJZPC9saXRlcmFsPgorICAg ICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg ICBTb3J0cyB0aGUgaW5wdXQgZGF0YSB0byBiZSBhZ2dyZWdhdGVkIGFzIGEgPGFjcm9ueW0+ SlNPTjwvYWNyb255bT4gYXJyYXkuCisgICAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlIGV4 YWN0IHN5bnRheCBvZiB0aGUgPGxpdGVyYWw+T1JERVIgQlk8L2xpdGVyYWw+IGNsYXVzZSwg c2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1vcmRlcmJ5Ii8+LgorICAgICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+eyBOVUxMIHwgQUJTRU5UIH0gT04gTlVM TDwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgIERlZmluZXMgd2hldGhlciA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB2YWx1 ZXMgYXJlIGFsbG93ZWQgaW4gdGhlIGNvbnN0cnVjdGVkIGFycmF5OgorICAgICAgICAgIDxp dGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+ICZtZGFzaDsg PGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gdmFsdWVzIGFyZSBhbGxvd2VkLgorICAgICAgICAg ICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxp c3RpdGVtPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8bGl0ZXJh bD5BQlNFTlQ8L2xpdGVyYWw+IChkZWZhdWx0KSAmbWRhc2g7IDxsaXRlcmFsPk5VTEw8L2xp dGVyYWw+CisgICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBvbWl0dGVkIGZyb20gdGhlIGdl bmVyYXRlZCBhcnJheS4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9s aXN0aXRlbT4KKyAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+UkVUVVJOSU5HIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+ IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29wdGlvbmFsPiA8L29w dGlvbmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgICBUaGUgb3V0cHV0IGNsYXVzZSB0aGF0IHNwZWNpZmllcyB0aGUgcmV0 dXJuIHR5cGUgb2YgdGhlIGNvbnN0cnVjdGVkIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IGFy cmF5LgorICAgICAgIEZvciBkZXRhaWxzLCBzZWUgPHhyZWYgbGlua2VuZD0ic3FsanNvbi1v dXRwdXQtY2xhdXNlIi8+LgorICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworPC92YXJpYWJsZWxpc3Q+CisgICAgPC9zZWN0NT4KKworPHNl Y3Q1PgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorICA8cGFyYT5BbHRlcm5hdGl2ZWx5LCB5 b3UgY2FuIGNyZWF0ZSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBhcnJheXMgYnkgdXNpbmcK KyAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPi1zcGVjaWZpYyA8ZnVu Y3Rpb24+anNvbl9hZ2coKTwvZnVuY3Rpb24+LworICA8ZnVuY3Rpb24+anNvbmJfYWdnKCk8 L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCisgIFNlZSA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMt YWdncmVnYXRlIi8+IGZvciBkZXRhaWxzLgorICA8L3BhcmE+CisgPC9zZWN0NT4KKworICAg IDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKyAgICAgPHBhcmE+Cisg ICAgICAgQ29uc3RydWN0IGFuIGFycmF5IG9mIGZpbG0gdGl0bGVzIHNvcnRlZCBpbiBhbHBo YWJldGljYWwgb3JkZXI6CisgICAgIDwvcGFyYT4KKzxzY3JlZW4+CitTRUxFQ1QKK0pTT05f QVJSQVlBR0coCisgIGYudGl0bGUKK09SREVSIEJZIGYudGl0bGUgQVNDKSBBUyBmaWxtX3Rp dGxlcworRlJPTSBmaWxtcyBBUyBmOworICAgICAgICAgICAgICAgICAgICBmaWxtX3RpdGxl cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorWyI0OCBIcnMiLCAiQWJzZW5jZSBvZiBNYWxpY2UiLCAiQmFuYW5hcyIsICJCZWNrZXQi LCAiQmVkIEtub2JzIGFuZCBCcm9vbXN0aWNrcyIsICJEYXMgQm9vdCIsICJTdG9yaWEgZGkg dW5hIGRvbm5hIiwgIlRheGkgRHJpdmVyIiwgIlRoZSBBZnJpY2FuIFF1ZWVuIiwgIlRoZSBL aW5nIGFuZCBJIiwgIlRoZXJlJ3MgYSBHaXJsIGluIG15IFNvdXAiLCAiVGhlIFRoaXJkIE1h biIsICJVbmUgRmVtbWUgZXN0IHVuZSBGZW1tZSIsICJWZXJ0aWdvIiwgIldhciBhbmQgUGVh Y2UiLCAiV2VzdCBTaWRlIFN0b3J5IiwgIllvamltYm8iXQorKDEgcm93KQorPC9zY3JlZW4+ CisgICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+CisgIDwvc2VjdDM+CisKKyAgPHNlY3QzIGlk PSJmdW5jdGlvbnMtc3FsanNvbi1xdWVyeWluZyI+CisgICA8dGl0bGU+UXVlcnlpbmcgSlNP TjwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucyBl dmFsdWF0ZSBTUUwvSlNPTiBwYXRoIGxhbmd1YWdlIGV4cHJlc3Npb25zCisgICAgYWdhaW5z dCBKU09OIHZhbHVlcywgcHJvZHVjaW5nIHZhbHVlcyBvZiBTUUwvSlNPTiB0eXBlcywgd2hp Y2ggYXJlCisgICAgY29udmVydGVkIHRvIFNRTCB0eXBlcy4gQWxsIFNRTC9KU09OIHF1ZXJ5 IGZ1bmN0aW9ucyBhY2NlcHQgc2V2ZXJhbAorICAgIGNvbW1vbiBjbGF1c2VzIGRlc2NyaWJl ZCBpbiA8eHJlZiBsaW5rZW5kPSJzcWxqc29uLWNvbW1vbi1jbGF1c2VzIi8+LgorICAgIEZv ciBkZXRhaWxzIG9uIHRoZSBTUUwvSlNPTiBwYXRoIGxhbmd1YWdlLAorICAgIHNlZSA8eHJl ZiBsaW5rZW5kPSJmdW5jdGlvbnMtc3FsanNvbi1wYXRoIi8+LgorICAgPC9wYXJhPgorCisg IDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg PGxpbmsgbGlua2VuZD0iZnVuY3Rpb25zLWlzanNvbi1wcmVkaWNhdGUiPjxsaXRlcmFsPklT IEpTT048L2xpdGVyYWw+PC9saW5rPgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgPGxpbmsgbGlua2VuZD0i ZnVuY3Rpb25zLWpzb25leGlzdHMiPjxsaXRlcmFsPkpTT05fRVhJU1RTPC9saXRlcmFsPjwv bGluaz4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgIDxwYXJhPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29udmFs dWUiPjxsaXRlcmFsPkpTT05fVkFMVUU8L2xpdGVyYWw+PC9saW5rPgorICAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAg ICAgPGxpbmsgbGlua2VuZD0iZnVuY3Rpb25zLWpzb25xdWVyeSI+PGxpdGVyYWw+SlNPTl9R VUVSWTwvbGl0ZXJhbD48L2xpbms+CisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgPC9pdGVtaXplZGxpc3Q+CisKKyAgPHBhcmE+CisgICAgIEluIHNvbWUgdXNhZ2UgZXhh bXBsZXMgZm9yIHRoZXNlIGZ1bmN0aW9ucywKKyAgICAgdGhlIGZvbGxvd2luZyBzbWFsbCB0 YWJsZSBzdG9yaW5nIHNvbWUgSlNPTiBkYXRhIHdpbGwgYmUgdXNlZDoKKzxwcm9ncmFtbGlz dGluZz4KK0NSRUFURSBUQUJMRSBteV9maWxtcyAoCisgIGpzICAgICAgIHRleHQgKTsKKwor SU5TRVJUIElOVE8gbXlfZmlsbXMgVkFMVUVTICgKKyd7ICJmYXZvcml0ZXMiIDogWworICAg eyAia2luZCIgOiAiY29tZWR5IiwgImZpbG1zIiA6IFsKKyAgICAgeyAidGl0bGUiIDogIkJh bmFuYXMiLAorICAgICAgICJkaXJlY3RvciIgOiAiV29vZHkgQWxsZW4ifSwKKyAgICAgeyAi dGl0bGUiIDogIlRoZSBEaW5uZXIgR2FtZSIsCisgICAgICAgImRpcmVjdG9yIiA6ICJGcmFu Y2lzIFZlYmVyIiB9IF0gfSwKKyAgIHsgImtpbmQiIDogImhvcnJvciIsICJmaWxtcyIgOiBb CisgICAgIHsgInRpdGxlIiA6ICJQc3ljaG8iLAorICAgICAgICJkaXJlY3RvciIgOiAiQWxm cmVkIEhpdGNoY29jayIgfSBdIH0sCisgICB7ICJraW5kIiA6ICJ0aHJpbGxlciIsICJmaWxt cyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJWZXJ0aWdvIiwKKyAgICAgICAiZGlyZWN0b3Ii IDogIkFsZnJlZCBIaXRjaGNvY2siIH0gXSB9LAorICAgeyAia2luZCIgOiAiZHJhbWEiLCAi ZmlsbXMiIDogWworICAgICB7ICJ0aXRsZSIgOiAiWW9qaW1ibyIsCisgICAgICAgImRpcmVj dG9yIiA6ICJBa2lyYSBLdXJvc2F3YSIgfSBdIH0KKyAgXSB9Jyk7Cis8L3Byb2dyYW1saXN0 aW5nPgorICAgICA8L3BhcmE+CisKKyAgIDxzZWN0NCBpZD0iZnVuY3Rpb25zLWpzb25leGlz dHMiPgorICAgIDx0aXRsZT48bGl0ZXJhbD5KU09OX0VYSVNUUzwvbGl0ZXJhbD48L3RpdGxl PgorICAgIDxpbmRleHRlcm0+PHByaW1hcnk+anNvbl9leGlzdHM8L3ByaW1hcnk+PC9pbmRl eHRlcm0+CisKKzxzeW5vcHNpcz4KKzxmdW5jdGlvbj5KU09OX0VYSVNUUzwvZnVuY3Rpb24+ ICgKKyAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFj ZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBQQVNTSU5H IHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnZh cm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+PC9vcHRp b25hbD4KKyAgPG9wdGlvbmFsPiBSRVRVUk5JTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgIDxvcHRpb25h bD4geyBUUlVFIHwgRkFMU0UgfCBVTktOT1dOIHwgRVJST1IgfSBPTiBFUlJPUiA8L29wdGlv bmFsPgorKQorPC9zeW5vcHNpcz4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkRlc2Ny aXB0aW9uPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIDxmdW5jdGlvbj5KU09OX0VY SVNUUzwvZnVuY3Rpb24+IGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZAor ICAgICAgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gcGF0aCBleHByZXNzaW9uIGNhbiByZXR1 cm4gYW55IDxhY3JvbnltPlNRTC9KU09OPC9hY3JvbnltPiBpdGVtcy4KKyAgICAgPC9wYXJh PgorICAgIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRp b25hbD4gUEFTU0lORyB7IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IEFTIDxy ZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29w dGlvbmFsPjwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGlucHV0IGRhdGEgdG8gcXVlcnksIHRoZSBK U09OIHBhdGggZXhwcmVzc2lvbiBkZWZpbmluZyB0aGUgcXVlcnksIGFuZCBhbiBvcHRpb25h bCA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiBjbGF1c2UuCisgICAgIFNlZSA8eHJlZiBs aW5rZW5kPSJzcWxqc29uLWlucHV0LWNsYXVzZSIvPiBmb3IgZGV0YWlscy4KKyAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5SRVRVUk5JTkcgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+PC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgIFRo ZSBvdXRwdXQgY2xhdXNlIHRoYXQgc3BlY2lmaWVzIHRoZSBkYXRhIHR5cGUgb2YgdGhlIHJl dHVybmVkIHZhbHVlLgorICAgICAgIFRoZSBzcGVjaWZpZWQgZGF0YSB0eXBlIHNob3VsZCBo YXZlIGEgY2FzdCBmcm9tIGEgPGxpdGVyYWw+Ym9vbGVhbjwvbGl0ZXJhbD4KKyAgICAgICB0 eXBlLCB3aGljaCBpcyByZXR1cm5lZCBieSBkZWZhdWx0LgorICAgICA8L3BhcmE+CisgICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IFRSVUUgfCBGQUxTRSB8IFVOS05PV04gfCBF UlJPUiB9IE9OIEVSUk9SPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgIERlZmluZXMgdGhlIHJldHVybiB2YWx1ZSBpZiBhbiBl cnJvciBvY2N1cnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPkZBTFNFPC9saXRl cmFsPi4KKyAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDwvdmFyaWFibGVsaXN0PgorICAgIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+ CisgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICAgQ2hlY2sg d2hldGhlciB0aGUgcHJvdmlkZWQgPHR5cGU+anNvbmI8L3R5cGU+IGRhdGEgY29udGFpbnMg YQorICAgIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIDxsaXRlcmFsPmtleTE8L2xpdGVyYWw+ IGtleSwgYW5kIGl0cyB2YWx1ZQorICAgIGNvbnRhaW5zIGFuIGFycmF5IHdpdGggb25lIG9y IG1vcmUgZWxlbWVudHMgYmlnZ2VyIHRoYW4gMjoKKyAgPC9wYXJhPgorPHNjcmVlbj4KK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJrZXkxIjogWzEsMiwzXX0nLCAnc3RyaWN0ICQu a2V5MVsqXSA/IChAID4gMiknKTsKKyBqc29uX2V4aXN0cworLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKzwvc2NyZWVuPgorCisgIDxwYXJhPgorICAgTm90ZSB0aGUgZGlmZmVyZW5j ZSBiZXR3ZWVuIHN0cmljdCBhbmQgbGF4IG1vZGVzCisgICBpZiB0aGUgcmVxdWlyZWQgaXRl bSBkb2VzIG5vdCBleGlzdDoKKyAgPC9wYXJhPgorPHNjcmVlbj4KKy0tIFN0cmljdCBtb2Rl IHdpdGggRVJST1Igb24gRVJST1IgY2xhdXNlCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg J3siYSI6IFsxLDIsM119JywgJ3N0cmljdCAkLmFbNV0nIEVSUk9SIE9OIEVSUk9SKTsKK0VS Uk9SOiBJbnZhbGlkIFNRTC9KU09OIHN1YnNjcmlwdAorKDEgcm93KQorPC9zY3JlZW4+CisK KzxzY3JlZW4+CistLSBMYXggbW9kZQorU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEi OiBbMSwyLDNdfScsICdsYXggJC5hWzVdJyBFUlJPUiBPTiBFUlJPUik7CisganNvbl9leGlz dHMKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCis8L3NjcmVlbj4KKworPHNjcmVlbj4K Ky0tIFN0cmljdCBtb2RlIHVzaW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgT04gRVJS T1IgY2xhdXNlCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IFsxLDIsM119Jywg J3N0cmljdCAkLmFbNV0nKTsKKyBqc29uX2V4aXN0cworLS0tLS0tLS0tLS0tLQorIGYKKygx IHJvdykKKzwvc2NyZWVuPgorCisgICAgPC9zZWN0NT4KKyAgIDwvc2VjdDQ+CisKKyAgIDxz ZWN0NCBpZD0iZnVuY3Rpb25zLWpzb252YWx1ZSI+CisgICAgPHRpdGxlPjxsaXRlcmFsPkpT T05fVkFMVUU8L2xpdGVyYWw+PC90aXRsZT4KKyAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5Pmpz b25fdmFsdWU8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisKKzxzeW5vcHNpcz4KKzxmdW5jdGlv bj5KU09OX1ZBTFVFPC9mdW5jdGlvbj4gKAorICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVt PC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2Vh YmxlPiA8b3B0aW9uYWw+IFBBU1NJTkcgeyA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2Vh YmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFs PiwgLi4uPC9vcHRpb25hbD48L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IFJFVFVSTklORyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4g PC9vcHRpb25hbD4KKyAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8IERFRkFVTFQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9 IE9OIEVNUFRZIDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwgfCBE RUZBVUxUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBs YWNlYWJsZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorKQorICA8L3N5bm9wc2lzPgorCisg ICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJh PgorICAgPGZ1bmN0aW9uPkpTT05fVkFMVUU8L2Z1bmN0aW9uPiBmdW5jdGlvbiBleHRyYWN0 cyBhIHZhbHVlIGZyb20gdGhlIHByb3ZpZGVkCisgICA8YWNyb255bT5KU09OPC9hY3Jvbnlt PiBkYXRhIGFuZCBjb252ZXJ0cyBpdCB0byBhbiA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IHNj YWxhci4KKyAgIElmIHRoZSBzcGVjaWZpZWQgSlNPTiBwYXRoIGV4cHJlc3Npb24gcmV0dXJu cyBtb3JlIHRoYW4gb25lCisgICA8YWNyb255bT5TUUwvSlNPTjwvYWNyb255bT4gaXRlbSwg YW4gZXJyb3Igb2NjdXJzLiBUbyBleHRyYWN0CisgICBhbiA8YWNyb255bT5TUUwvSlNPTjwv YWNyb255bT4gYXJyYXkgb3Igb2JqZWN0LCB1c2UgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25z LWpzb25xdWVyeSIvPi4KKyAgPC9wYXJhPgorICAgIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+ CisgICAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0Pgor CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD48cmVwbGFj ZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4 cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IFBBU1NJTkcgeyA8cmVwbGFjZWFi bGU+dmFsdWU8L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFj ZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29wdGlvbmFsPjwvbGl0ZXJh bD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIFRo ZSBpbnB1dCBkYXRhIHRvIHF1ZXJ5LCB0aGUgSlNPTiBwYXRoIGV4cHJlc3Npb24gZGVmaW5p bmcgdGhlIHF1ZXJ5LCBhbmQgYW4gb3B0aW9uYWwgPGxpdGVyYWw+UEFTU0lORzwvbGl0ZXJh bD4gY2xhdXNlLgorICAgICBGb3IgZGV0YWlscywgc2VlIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0 aW9ucy1zcWxqc29uLXBhdGgiLz4uCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAg ICA8bGl0ZXJhbD5SRVRVUk5JTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRh dGFfdHlwZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgIFRoZSBvdXRwdXQgY2xhdXNlIHRoYXQgc3Bl Y2lmaWVzIHRoZSBkYXRhIHR5cGUgb2YgdGhlIHJldHVybmVkIHZhbHVlLgorICAgICAgIE91 dCBvZiB0aGUgYm94LCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+Cisg ICAgICAgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyB0eXBlczogPGxpdGVyYWw+anNvbjwvbGl0 ZXJhbD4sIDxsaXRlcmFsPmpzb25iPC9saXRlcmFsPiwKKyAgICAgICA8bGl0ZXJhbD5ieXRl YTwvbGl0ZXJhbD4sIGFuZCBjaGFyYWN0ZXIgc3RyaW5nIHR5cGVzICg8bGl0ZXJhbD50ZXh0 PC9saXRlcmFsPiwgPGxpdGVyYWw+Y2hhcjwvbGl0ZXJhbD4sCisgICAgICAgPGxpdGVyYWw+ dmFyY2hhcjwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD5uY2hhcjwvbGl0ZXJhbD4pLgorICAg ICAgIFRoZSBleHRyYWN0ZWQgdmFsdWUgbXVzdCBiZSBhIHNpbmdsZSA8YWNyb255bT5TUUwv SlNPTjwvYWNyb255bT4gc2NhbGFyIGl0ZW0KKyAgICAgICBhbmQgaGF2ZSBhIGNhc3QgdG8g dGhlIHNwZWNpZmllZCB0eXBlLiBPdGhlcndpc2UsIGFuIGVycm9yIG9jY3Vycy4KKyAgICAg ICBCeSBkZWZhdWx0LCA8ZnVuY3Rpb24+SlNPTl9WQUxVRTwvZnVuY3Rpb24+IHJldHVybnMg YSBzdHJpbmcKKyAgICAgICBvZiB0aGUgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4gdHlwZS4K KyAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK KyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+eyBFUlJPUiB8 IE5VTEwgfCBERUZBVUxUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWTwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgICBEZWZpbmVzIHRoZSByZXR1cm4g dmFsdWUgaWYgbm8gSlNPTiB2YWx1ZSBpcyBmb3VuZC4gVGhlIGRlZmF1bHQgaXMKKyAgICAg ICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPi4gSWYgeW91IHVzZQorICAgICAgIDxsaXRlcmFs PkRFRkFVTFQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPjwvbGl0ZXJhbD4sCisgICAgICAgdGhlIHByb3ZpZGVkIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gaXMKKyAgICAg ICBldmFsdWF0ZWQgYW5kIGNhc3QgdG8gdGhlIHR5cGUgc3BlY2lmaWVkIGluIHRoZSA8Y29t bWFuZD5SRVRVUk5JTkc8L2NvbW1hbmQ+IGNsYXVzZS4KKyAgICAgPC9wYXJhPgorICAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+eyBFUlJPUiB8IE5VTEwgfCBERUZBVUxUIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g fSBPTiBFUlJPUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgICBEZWZpbmVzIHRoZSByZXR1cm4gdmFsdWUgaWYgYW4gdW5oYW5k bGVkIGVycm9yIG9jY3Vycy4gVGhlIGRlZmF1bHQgaXMKKyAgICAgICA8bGl0ZXJhbD5OVUxM PC9saXRlcmFsPi4gSWYgeW91IHVzZQorICAgICAgIDxsaXRlcmFsPkRFRkFVTFQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD4sCisgICAgICAgdGhlIHByb3ZpZGVkIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gaXMKKyAgICAgICBldmFsdWF0ZWQgYW5k IGNhc3QgdG8gdGhlIHR5cGUgc3BlY2lmaWVkIGluIHRoZSA8Y29tbWFuZD5SRVRVUk5JTkc8 L2NvbW1hbmQ+IGNsYXVzZS4KKyAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDwvdmFyaWFibGVsaXN0PgorICAgIDwvc2VjdDU+CisK KyAgICA8c2VjdDU+CisgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgICAgPHBh cmE+CisgICAgICBFeHRyYWN0IGFuIFNRTC9KU09OIHZhbHVlIGFuZCByZXR1cm4gaXQgYXMg YW4gU1FMCisgICAgICBzY2FsYXIgb2YgdGhlIHNwZWNpZmllZCB0eXBlLiBOb3RlIHRoYXQK KyAgICAgIDxjb21tYW5kPkpTT05fVkFMVUU8L2NvbW1hbmQ+IGNhbiBvbmx5IHJldHVybiBh CisgICAgICBzaW5nbGUgc2NhbGFyLCBhbmQgdGhlIHJldHVybmVkIHZhbHVlIG11c3QgaGF2 ZSBhCisgICAgICBjYXN0IHRvIHRoZSBzcGVjaWZpZWQgcmV0dXJuIHR5cGU6CisgICAgIDwv cGFyYT4KKworPHNjcmVlbj4KK1NFTEVDVCBKU09OX1ZBTFVFKCciMTIzLjQ1IicsICckJyBS RVRVUk5JTkcgZmxvYXQpOworIGpzb25fdmFsdWUKKy0tLS0tLS0tLS0tLQorICAgICAxMjMu NDUKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoJzEyMy40NScsICckJyBSRVRVUk5J TkcgaW50IEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlCistLS0tLS0tLS0tLS0KKyAg ICAgICAgMTIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKCciMDM6MDQgMjAxNS0w Mi0wMSInLCAnJC5kYXRldGltZSgiSEgyNDpNSSBZWVlZLU1NLUREIiknIFJFVFVSTklORyBk YXRlKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMjAxNS0wMi0wMQorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9WQUxVRSgnIjEyMy40NSInLCAnJCcgUkVUVVJOSU5HIGludCBF UlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciBpbnRl Z2VyOiAiMTIzLjQ1IgorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzFdJywgJ3N0cmlj dCAkJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogU1FML0pTT04gc2NhbGFyIHJlcXVpcmVk CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwyXScsICdzdHJpY3QgJFsqXScgRVJS T1IgT04gRVJST1IpOworRVJST1I6IG1vcmUgdGhhbiBvbmUgU1FML0pTT04gaXRlbQorPC9z Y3JlZW4+CisKKyAgICAgPHBhcmE+CisgICAgICAgSWYgdGhlIHBhdGggZXhwcmVzc2lvbiBy ZXR1cm5zIGFuIGFycmF5LCBhbiBvYmplY3QsIG9yCisgICAgICAgbXVsdGlwbGUgU1FML0pT T04gaXRlbXMsIGFuIGVycm9yIGlzIHJldHVybmVkLCBhcyBzcGVjaWZpZWQKKyAgICAgICBp biB0aGUgPGNvbW1hbmQ+T04gRVJST1I8L2NvbW1hbmQ+IGNsYXVzZToKKyAgICAgPC9wYXJh PgorPHNjcmVlbj4KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMV0nLCAnc3RyaWN0ICQn IEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiBTUUwvSlNPTiBzY2FsYXIgcmVxdWlyZWQKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDF9JywgJ3N0cmljdCAkJyBFUlJPUiBP TiBFUlJPUik7CitFUlJPUjogU1FML0pTT04gc2NhbGFyIHJlcXVpcmVkCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdbMSwyXScsICdzdHJpY3QgJFsqXScgRVJST1IgT04gRVJST1Ip OworRVJST1I6IG1vcmUgdGhhbiBvbmUgU1FML0pTT04gaXRlbQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnWzEsMl0nLCAnc3RyaWN0ICRbKl0nIERFRkFVTFQgMSBPTiBFUlJPUik7 CisxCis8L3NjcmVlbj4KKworICAgIDwvc2VjdDU+CisgICA8L3NlY3Q0PgorCisgICA8c2Vj dDQgaWQ9ImZ1bmN0aW9ucy1qc29ucXVlcnkiPgorICAgIDx0aXRsZT48bGl0ZXJhbD5KU09O X1FVRVJZPC9saXRlcmFsPjwvdGl0bGU+CisgICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29u X3F1ZXJ5PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorCis8c3lub3BzaXM+Cis8ZnVuY3Rpb24+ SlNPTl9RVUVSWTwvZnVuY3Rpb24+ICgKKyAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gPG9wdGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJs ZT4gQVMgPHJlcGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4s IC4uLjwvb3B0aW9uYWw+PC9vcHRpb25hbD4KKyAgPG9wdGlvbmFsPiBSRVRVUk5JTkcgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDxv cHRpb25hbD4gRk9STUFUIEpTT04gPG9wdGlvbmFsPiBFTkNPRElORyBVVEY4IDwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgIDxvcHRpb25hbD4geyBXSVRIT1VUIHwg V0lUSCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFsPlVOQ09ORElUSU9OQUw8L29wdGlvbmFs PiB9IH0gPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFsPiBXUkFQUEVSIDwvb3B0aW9uYWw+ CisgIDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9IFFVT1RFUyA8b3B0aW9uYWw+IE9OIFND QUxBUiBTVFJJTkcgPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgPG9wdGlvbmFsPiB7IEVS Uk9SIHwgTlVMTCB8IEVNUFRZIHsgPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFsPiB8IE9C SkVDVCB9IHwgREVGQVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVz c2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRU1QVFkgPC9vcHRpb25hbD4KKyAgPG9wdGlvbmFs PiB7IEVSUk9SIHwgTlVMTCB8IEVNUFRZIHsgPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFs PiB8IE9CSkVDVCB9IHwgREVGQVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRVJST1IgPC9vcHRpb25hbD4KKykKKyAg PC9zeW5vcHNpcz4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90 aXRsZT4KKworICA8cGFyYT4KKyAgIDxmdW5jdGlvbj5KU09OX1FVRVJZPC9mdW5jdGlvbj4g ZnVuY3Rpb24gZXh0cmFjdHMgYW4gPGFjcm9ueW0+U1FML0pTT048L2Fjcm9ueW0+CisgICBh cnJheSBvciBvYmplY3QgZnJvbSA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhLiBUaGlz IGZ1bmN0aW9uIG11c3QgcmV0dXJuCisgICBhIEpTT04gc3RyaW5nLCBzbyBpZiB0aGUgcGF0 aCBleHByZXNzaW9uIHJldHVybnMgYSBzY2FsYXIgb3IgbXVsdGlwbGUgU1FML0pTT04KKyAg IGl0ZW1zLCB5b3UgbXVzdCB3cmFwIHRoZSByZXN1bHQgdXNpbmcgdGhlIDxsaXRlcmFsPldJ VEggV1JBUFBFUjwvbGl0ZXJhbD4gY2xhdXNlLgorICAgVG8gZXh0cmFjdCBhIHNpbmdsZSA8 YWNyb255bT5TUUwvSlNPTjwvYWNyb255bT4gdmFsdWUsIHlvdSBjYW4gdXNlIDx4cmVmIGxp bmtlbmQ9ImZ1bmN0aW9ucy1qc29udmFsdWUiLz4uCisgIDwvcGFyYT4KKyAgICA8L3NlY3Q1 PgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAg IDx2YXJpYWJsZWxpc3Q+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAg IDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJl cGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFT U0lORyB7IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJs ZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwv b3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAg ICA8cGFyYT4KKyAgICAgVGhlIGlucHV0IGRhdGEgdG8gcXVlcnksIHRoZSBKU09OIHBhdGgg ZXhwcmVzc2lvbiBkZWZpbmluZyB0aGUgcXVlcnksIGFuZCBhbiBvcHRpb25hbCA8bGl0ZXJh bD5QQVNTSU5HPC9saXRlcmFsPiBjbGF1c2UuCisgICAgIEZvciBkZXRhaWxzLCBzZWUgPHhy ZWYgbGlua2VuZD0iZnVuY3Rpb25zLXNxbGpzb24tcGF0aCIvPi4KKyAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBGT1JN QVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25h bD48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICAgVGhlIG91dHB1dCBjbGF1c2UgdGhhdCBzcGVjaWZpZXMgdGhlIGRhdGEgdHlw ZSBvZiB0aGUgcmV0dXJuZWQgdmFsdWUuCisgICAgICAgRm9yIGRldGFpbHMsIHNlZSA8eHJl ZiBsaW5rZW5kPSJzcWxqc29uLW91dHB1dC1jbGF1c2UiLz4uCisgICAgIDwvcGFyYT4KKyAg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IFdJVEhPVVQgfCBXSVRIIHsgQ09ORElU SU9OQUwgfCA8b3B0aW9uYWw+VU5DT05ESVRJT05BTDwvb3B0aW9uYWw+IH0gfSA8b3B0aW9u YWw+IEFSUkFZIDwvb3B0aW9uYWw+IFdSQVBQRVI8L2xpdGVyYWw+CisgICAgPC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICAgRGVmaW5lcyB3aGV0aGVyIHRv IHdyYXAgYSByZXR1cm5lZCBzZXF1ZW5jZSBvZiA8YWNyb255bT5TUUwvSlNPTjwvYWNyb255 bT4KKyAgICAgICBpdGVtcyBpbnRvIGEgPGFjcm9ueW0+U1FML0pTT048L2Fjcm9ueW0+IGFy cmF5LgorICAgICA8L3BhcmE+CisgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSE9VVCBXUkFQUEVSPC9s aXRlcmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgor ICAgICAgICAgICAgRG8gbm90IHdyYXAgdGhlIHJlc3VsdC4KKyAgICAgICAgICAgIFRoaXMg aXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaWYgdGhlIDxsaXRlcmFsPldSQVBQRVI8L2xpdGVy YWw+CisgICAgICAgICAgICBjbGF1c2UgaXMgb21pdHRlZC4KKyAgICAgICAgICA8L3BhcmE+ CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5XSVRIIDxvcHRpb25h bD5VTkNPTkRJVElPTkFMPC9vcHRpb25hbD4gV1JBUFBFUjwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFsd2F5 cyB3cmFwIHRoZSByZXN1bHQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSCBDT05ESVRJT05BTCBXUkFQUEVSPC9saXRl cmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAg ICAgICAgICAgV3JhcCB0aGUgcmVzdWx0IGlmIHRoZSBwYXRoCisgICAgICAgICAgICBleHBy ZXNzaW9uIHJldHVybnMgYW55dGhpbmcgb3RoZXIgdGhhbiBhIHNpbmdsZQorICAgICAgICAg ICAgPGFjcm9ueW0+U1FML0pTT048L2Fjcm9ueW0+IGFycmF5IG9yIG9iamVjdC4KKyAgICAg ICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVu dHJ5PgorICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICA8cGFyYT4KKyAgICAgICBPcHRp b25hbGx5LCB5b3UgY2FuIGFkZCB0aGUgPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IGtleXdv cmQgZm9yIHNlbWFudGljIGNsYXJpdHkuCisgICAgIDwvcGFyYT4KKyAgICAgPGltcG9ydGFu dD4KKyAgICAgIDxwYXJhPllvdSBjYW5ub3QgdXNlIHRoaXMgY2xhdXNlIHRvZ2V0aGVyIHdp dGggdGhlIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBjbGF1c2UuCisgICAgICA8L3Bh cmE+CisgICAgIDwvaW1wb3J0YW50PgorICAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFs PnsgS0VFUCB8IE9NSVQgfSBRVU9URVMgPG9wdGlvbmFsPiBPTiBTQ0FMQVIgU1RSSU5HIDwv b3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgIERlZmluZXMgd2hldGhlciB0byBrZWVwIG9yIG9taXQgcXVvdGVz IGlmIGEgc2NhbGFyIHN0cmluZyBpcyByZXR1cm5lZC4KKyAgICAgICBCeSBkZWZhdWx0LCBz Y2FsYXIgc3RyaW5ncyBhcmUgcmV0dXJuZWQgd2l0aCBxdW90ZXMuIFVzaW5nIHRoaXMKKyAg ICAgICBjbGF1c2UgdG9nZXRoZXIgd2l0aCB0aGUgPGNvbW1hbmQ+V0lUSCBXUkFQUEVSPC9j b21tYW5kPiBjbGF1c2UgaXMgbm90IGFsbG93ZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBh cmE+CisgICAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBhZGQgdGhlIDxsaXRlcmFsPk9OIFND QUxBUiBTVFJJTkc8L2xpdGVyYWw+IGtleXdvcmRzIGZvciBzZW1hbnRpYyBjbGFyaXR5Lgor ICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IEVSUk9SIHwg TlVMTCB8IEVNUFRZIHsgPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFsPiB8IE9CSkVDVCB9 IHwgREVGQVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+IH0gT04gRU1QVFk8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICAgRGVmaW5lcyB0aGUgcmV0dXJuIHZhbHVl IGlmIG5vIEpTT04gdmFsdWUgaXMgZm91bmQuIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPk5V TEw8L2xpdGVyYWw+LgorICAgICAgIElmIHlvdSB1c2UgPGxpdGVyYWw+RU1QVFkgPG9wdGlv bmFsPkFSUkFZPC9vcHRpb25hbD48L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkVNUFRZIE9CSkVD VDwvbGl0ZXJhbD4sCisgICAgICAgYW4gZW1wdHkgSlNPTiBhcnJheSBbXSBvciBvYmplY3Qg e30gaXMgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS4KKyAgICAgICBJZiB5b3UgdXNlIDxsaXRl cmFsPkRFRkFVTFQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4sCisgICAgICAgdGhlIHByb3ZpZGVkIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gaXMgZXZh bHVhdGVkIGFuZCBjYXN0CisgICAgICAgdG8gdGhlIHR5cGUgc3BlY2lmaWVkIGluIHRoZSA8 Y29tbWFuZD5SRVRVUk5JTkc8L2NvbW1hbmQ+IGNsYXVzZS4KKyAgICAgPC9wYXJhPgorICAg ICA8cGFyYT4KKyAgICAgICBZb3UgY2Fubm90IHVzZSB0aGlzIGNsYXVzZSB0b2dldGhlciB3 aXRoIHRoZSA8bGl0ZXJhbD5XUkFQUEVSPC9saXRlcmFsPiBjbGF1c2UuCisgICAgIDwvcGFy YT4KKyAgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPnsgRVJST1IgfCBOVUxMIHwg RU1QVFkgeyA8b3B0aW9uYWw+IEFSUkFZIDwvb3B0aW9uYWw+IHwgT0JKRUNUIH0gfCBERUZB VUxUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gfSBPTiBFUlJPUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgICBEZWZpbmVzIHRoZSByZXR1cm4gdmFsdWUgaWYgYW4g dW5oYW5kbGVkIGVycm9yIG9jY3Vycy4gVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+TlVMTDwv bGl0ZXJhbD4uCisgICAgICAgSWYgeW91IHVzZSA8bGl0ZXJhbD5FTVBUWSA8b3B0aW9uYWw+ QVJSQVk8L29wdGlvbmFsPjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+RU1QVFkgT0JKRUNUPC9s aXRlcmFsPiwKKyAgICAgICBhbiBlbXB0eSBKU09OIGFycmF5IDxsaXRlcmFsPltdPC9saXRl cmFsPiBvciBvYmplY3QgPGxpdGVyYWw+e308L2xpdGVyYWw+IGFyZSByZXR1cm5lZCwgcmVz cGVjdGl2ZWx5LgorICAgICAgIElmIHlvdSB1c2UgPGxpdGVyYWw+REVGQVVMVCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+PC9saXRl cmFsPiwKKyAgICAgICB0aGUgcHJvdmlkZWQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBpcyBldmFsdWF0ZWQgYW5kIGNhc3QKKyAg ICAgICB0byB0aGUgdHlwZSBzcGVjaWZpZWQgaW4gdGhlIDxjb21tYW5kPlJFVFVSTklORzwv Y29tbWFuZD4gY2xhdXNlLgorICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9zZWN0NT4KKwor ICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICAgICA8cGFy YT4KKyAgICAgIEV4dHJhY3QgYWxsIGZpbG0gZ2VucmVzIGxpc3RlZCBpbiB0aGUgPHN0cnVj dG5hbWU+bXlfZmlsbXM8L3N0cnVjdG5hbWU+IHRhYmxlOgorICAgICA8L3BhcmE+CisgICAg IDxzY3JlZW4+CitTRUxFQ1QKKyAgICBKU09OX1FVRVJZKGpzLCAnJC5mYXZvcml0ZXNbKl0u a2luZCcgV0lUSCBXUkFQUEVSIEVSUk9SIE9OIEVSUk9SKQorRlJPTSBteV9maWxtczsKKyBq c29uX3F1ZXJ5CistLS0tLS0tLS0tLS0KKyBbImNvbWVkeSIsICJob3Jyb3IiLCAidGhyaWxs ZXIiLCAiZHJhbWEiXQorKDEgcm93KQorPC9zY3JlZW4+CisKKyAgICAgPHBhcmE+CisgICAg ICBOb3RlIHRoYXQgdGhlIHNhbWUgcXVlcnkgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IgaWYg eW91IG9taXQgdGhlCisgICAgICA8Y29tbWFuZD5XSVRIIFdSQVBQRVI8L2NvbW1hbmQ+IGNs YXVzZSwgYXMgaXQgcmV0dXJucyBtdWx0aXBsZSBTUUwvSlNPTiBpdGVtczoKKyAgICAgPC9w YXJhPgorICAgICA8c2NyZWVuPgorU0VMRUNUCisgICAgSlNPTl9RVUVSWShqcywgJyQuZmF2 b3JpdGVzWypdLmtpbmQnIEVSUk9SIE9OIEVSUk9SKQorRlJPTSBteV9maWxtczsKK0VSUk9S OiBtb3JlIHRoYW4gb25lIFNRTC9KU09OIGl0ZW0gCis8L3NjcmVlbj4KKworICAgICA8cGFy YT4KKyAgICAgICBDb21wYXJlIHRoZSBlZmZlY3Qgb2YgZGlmZmVyZW50IDxsaXRlcmFsPldS QVBQRVI8L2xpdGVyYWw+IGNsYXVzZXM6CisgICAgIDwvcGFyYT4KKyAgICAgPHNjcmVlbj4K K1NFTEVDVAorICAgIGpzLAorICAgIEpTT05fUVVFUlkoanMsICdsYXggJFsqXScpIEFTICJ3 aXRob3V0IiwKKyAgICBKU09OX1FVRVJZKGpzLCAnbGF4ICRbKl0nIFdJVEggV1JBUFBFUikg IEFTICJ3aXRoIHVuY29uZCIsCisgICAgSlNPTl9RVUVSWShqcywgJ2xheCAkWypdJyBXSVRI IENPTkRJVElPTkFMIFdSQVBQRVIpIEFTICJ3aXRoIGNvbmQiCitGUk9NCisgICAgKFZBTFVF UyAoanNvbmIgJ1tdJyksICgnWzFdJyksICgnW1sxLDIsM11dJyksICAoJ1t7ImEiOiAxfV0n KSwgKCdbMSwgbnVsbCwgIjIiXScpKSBmb28oanMpOworICAgICAgIGpzICAgICAgIHwgIHdp dGhvdXQgIHwgIHdpdGggdW5jb25kICAgfCAgIHdpdGggY29uZAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyBbXSAg ICAgICAgICAgICB8IChudWxsKSAgICB8IChudWxsKSAgICAgICAgIHwgKG51bGwpCisgWzFd ICAgICAgICAgICAgfCAxICAgICAgICAgfCBbMV0gICAgICAgICAgICB8IFsxXQorIFtbMSwg MiwgM11dICAgIHwgWzEsIDIsIDNdIHwgW1sxLCAyLCAzXV0gICAgfCBbMSwgMiwgM10KKyBb eyJhIjogMX1dICAgICB8IHsiYSI6IDF9ICB8IFt7ImEiOiAxfV0gICAgIHwgeyJhIjogMX0K KyBbMSwgbnVsbCwgIjIiXSB8IChudWxsKSAgICB8IFsxLCBudWxsLCAiMiJdIHwgWzEsIG51 bGwsICIyIl0KKyg1IHJvd3MpCis8L3NjcmVlbj4KKworPHBhcmE+Q29tcGFyZSBxdW90ZSBo YW5kbGluZyBmb3Igc2NhbGFyIHR5cGVzIHdpdGggYW5kIHdpdGhvdXQgdGhlIDxjb21tYW5k Pk9NSVQgUVVPVEVTPC9jb21tYW5kPiBjbGF1c2U6Cis8L3BhcmE+CisgICAgIDxzY3JlZW4+ CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQp OworIGpzb25fcXVlcnkKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBPTUlUIFFV T1RFUyk7CisganNvbl9xdWVyeQorLS0tLS0tLS0tLS0tCisgYWFhCisoMSByb3cpCis8L3Nj cmVlbj4KKyAgICA8L3NlY3Q1PgorICAgPC9zZWN0ND4KKworICAgPHNlY3Q0IGlkPSJmdW5j dGlvbnMtaXNqc29uLXByZWRpY2F0ZSI+CisgICAgPHRpdGxlPjxsaXRlcmFsPklTIEpTT048 L2xpdGVyYWw+PC90aXRsZT4KKyAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PmlzX2pzb248L3By aW1hcnk+PC9pbmRleHRlcm0+CisKKzxzeW5vcHNpcz4KKzxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgSVMgPG9wdGlvbmFsPiBO T1QgPC9vcHRpb25hbD4gSlNPTiAKKyAgPG9wdGlvbmFsPiB7IFZBTFVFIHwgU0NBTEFSIHwg QVJSQVkgfCBPQkpFQ1QgfSA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IHsgV0lUSCB8IFdJ VEhPVVQgfSBVTklRVUUgPG9wdGlvbmFsPiBLRVlTIDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+ Cis8L3N5bm9wc2lzPgorCisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RGVzY3JpcHRpb248 L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIDxjb21tYW5kPklTIEpTT048L2NvbW1hbmQ+ IHByZWRpY2F0ZSB0ZXN0cyB3aGV0aGVyIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyB2YWxpZAor ICAgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gZGF0YS4gSWYgeW91IHByb3ZpZGUgYSBzcGVj aWZpYyBKU09OIGRhdGEgdHlwZSBhcyBhIHBhcmFtZXRlciwKKyAgIHlvdSBjYW4gY2hlY2sg d2hldGhlciB0aGUgdmFsdWUgYmVsb25ncyB0byB0aGlzIHR5cGUuCisgICBZb3UgY2FuIGFs c28gdXNlIHRoaXMgcHJlZGljYXRlIGluIHRoZSA8Y29tbWFuZD5JUyBOT1QgSlNPTjwvY29t bWFuZD4gZm9ybS4KKyAgIFRoZSByZXR1cm4gdmFsdWVzIGFyZToKKyAgIDxpdGVtaXplZGxp c3Q+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnQ8 L2xpdGVyYWw+IGlmIHRoZSB2YWx1ZSBzYXRpc2ZpZXMgdGhlIHNwZWNpZmllZCBjb25kaXRp b24uCisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+ZjwvbGl0ZXJhbD4gaWYgdGhlIHZhbHVl IGRvZXMgbm90IHNhdGlzZnkgdGhlIHNwZWNpZmllZCBjb25kaXRpb24uCisgICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvaXRlbWl6ZWRsaXN0PgorICA8L3BhcmE+Cisg ICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAgPHRpdGxlPlBhcmFtZXRlcnM8L3Rp dGxlPgorCis8dmFyaWFibGVsaXN0PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PgorICAgICA8bGl0ZXJhbD48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVz c2lvbjwvcmVwbGFjZWFibGU+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoZSBpbnB1dCBjbGF1c2UgZGVmaW5pbmcgdGhl IHZhbHVlIHRvIHRlc3QuIFlvdSBjYW4gcHJvdmlkZSB0aGUgdmFsdWVzCisgICAgICBvZiA8 bGl0ZXJhbD5qc29uPC9saXRlcmFsPiwgPGxpdGVyYWw+anNvbmI8L2xpdGVyYWw+LAorICAg ICAgPGxpdGVyYWw+Ynl0ZWE8L2xpdGVyYWw+LCBvciBjaGFyYWN0ZXIgc3RyaW5nIHR5cGVz LgorICAgIDwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICAg CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5WQUxVRSB8 IFNDQUxBUiB8IEFSUkFZIHwgT0JKRUNUPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB0aGUgPGFjcm9ueW0+ SlNPTjwvYWNyb255bT4gZGF0YSB0eXBlIHRvIHRlc3QgZm9yOgorICAgICAgPGl0ZW1pemVk bGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAg ICAgPGxpdGVyYWw+VkFMVUU8L2xpdGVyYWw+IChkZWZhdWx0KSAmbWRhc2g7IGFueSA8YWNy b255bT5KU09OPC9hY3JvbnltPiB0eXBlLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAg ICAgICAgICAgPGxpdGVyYWw+U0NBTEFSPC9saXRlcmFsPiAmbWRhc2g7IDxhY3JvbnltPkpT T048L2Fjcm9ueW0+IG51bWJlciwgc3RyaW5nLCBvciBib29sZWFuLgorICAgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAg ICAgIDxwYXJhPgorICAgICAgICAgICAgPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+ICZtZGFz aDsgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gYXJyYXkuCisgICAgICAgICAgPC9wYXJhPgor ICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBh cmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5PQkpFQ1Q8L2xpdGVyYWw+ICZtZGFzaDsgPGFj cm9ueW0+SlNPTjwvYWNyb255bT4gb2JqZWN0LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAg ICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD57IFdJVEggfCBXSVRIT1VUIH0gVU5JUVVF IDxvcHRpb25hbD4gS0VZUyA8L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT5EZWZpbmVzIHdoZXRoZXIgZHVwbGljYXRlIGtl eXMgYXJlIGFsbG93ZWQ6CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5XSVRIT1VUPC9s aXRlcmFsPiAoZGVmYXVsdCkgJm1kYXNoOyB0aGUKKyAgICAgICAgICAgIDxhY3JvbnltPkpT T048L2Fjcm9ueW0+IG9iamVjdCBjYW4gY29udGFpbiBkdXBsaWNhdGUga2V5cy4KKyAgICAg ICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsPldJVEg8L2xpdGVyYWw+ ICZtZGFzaDsgZHVwbGljYXRlIGtleXMgYXJlIG5vdCBhbGxvd2VkLgorICAgICAgICAgICAg SWYgdGhlIGlucHV0IGRhdGEgY29udGFpbnMgZHVwbGljYXRlIGtleXMsIGl0IGlzIGNvbnNp ZGVyZWQgdG8gYmUgaW52YWxpZCBKU09OLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgT3B0aW9uYWxseSwg eW91IGNhbiBhZGQgdGhlIDxsaXRlcmFsPktFWVM8L2xpdGVyYWw+IGtleXdvcmQgZm9yIHNl bWFudGljIGNsYXJpdHkuCisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92 YXJsaXN0ZW50cnk+CisgICA8L3ZhcmlhYmxlbGlzdD4KKworICAgIDwvc2VjdDU+CisKKyAg ICA8c2VjdDU+CisgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgICAgPHBhcmE+ CisgICAgICBDb21wYXJlIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIDxmdW5jdGlvbj5J UyBKU09OPC9mdW5jdGlvbj4KKyAgICAgIHByZWRpY2F0ZSBmb3IgZGlmZmVyZW50IGRhdGEg dHlwZXM6CisgICAgIDwvcGFyYT4KKyAgICAgPHNjcmVlbj4KK1NFTEVDVAorICAgIGpzLCAK KyAgICBqcyBJUyBKU09OICJpcyBqc29uIiwgCisgICAganMgSVMgTk9UIEpTT04gImlzIG5v dCBqc29uIiwKKyAgICBqcyBJUyBKU09OIFNDQUxBUiAiaXMgc2NhbGFyIiwKKyAgICBqcyBJ UyBKU09OIE9CSkVDVCAiaXMgb2JqZWN0IiwKKyAgICBqcyBJUyBKU09OIEFSUkFZICJpcyBh cnJheSIKK0ZST00gCisgICAgKFZBTFVFUyAoJzEyMycpLCAoJyJhYmMiJyksICgneyJhIjog ImIifScpLCAoJ1sxLDJdJyksICgnYWJjJykpIGZvbyhqcyk7CisKKyAgICAganMgICAgIHwg aXMganNvbiB8IGlzIG5vdCBqc29uIHwgaXMgc2NhbGFyIHwgaXMgb2JqZWN0IHwgaXMgYXJy YXkgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLQorIDEyMyAgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICAgfCBmCisgImFiYyIgICAgICB8IHQg ICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgICB8IGYKKyB7ImEi OiAiYiJ9IHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAg IHwgZgorIFsxLDJdICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICAgICAg fCBmICAgICAgICAgfCB0CisgYWJjICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgICB8 IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKKyg1IHJvd3MpCis8L3NjcmVlbj4KKyAgICA8 L3NlY3Q1PgorICAgPC9zZWN0ND4KKworCisgIDwvc2VjdDM+CisKKyAgPHNlY3QzIGlkPSJm dW5jdGlvbnMtc3FsanNvbi1zZXJpYWxpemluZyI+CisgICA8dGl0bGU+U2VyaWFsaXppbmcg SlNPTiBkYXRhPC90aXRsZT4KKyAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgPGxpbmsgbGlua2VuZD0iZnVuY3Rpb25zLWpzb25zZXJp YWxpemUiPjxsaXRlcmFsPkpTT05fU0VSSUFMSVpFPC9saXRlcmFsPjwvbGluaz4KKyAgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgIDxz ZWN0NCBpZD0iZnVuY3Rpb25zLWpzb25zZXJpYWxpemUiPgorICAgIDx0aXRsZT48bGl0ZXJh bD5KU09OX1NFUklBTEFJWkU8L2xpdGVyYWw+PC90aXRsZT4KKyAgICA8aW5kZXh0ZXJtPjxw cmltYXJ5Pmpzb25fc2VyaWFsaXplPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorCis8c3lub3Bz aXM+CitKU09OX1NFUklBTElaRSAoCisgIDxwYXJhbWV0ZXI+ZXhwcmVzc2lvbjwvcGFyYW1l dGVyPiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8 L29wdGlvbmFsPiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+IFJFVFVSTklORyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPG9wdGlv bmFsPiBGT1JNQVQgSlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4g PC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKykKKzwvc3lub3BzaXM+CisKKyAgICA8c2VjdDU+ CisgICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAg ICA8ZnVuY3Rpb24+SlNPTl9TRVJJQUxJWkU8L2Z1bmN0aW9uPiBmdW5jdGlvbiB0cmFuc2Zv cm1zIGEgU1FML0pTT04gdmFsdWUKKyAgICAgIGludG8gYSBjaGFyYWN0ZXIgb3IgYmluYXJ5 IHN0cmluZy4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDU+CisKKyAgICA8c2VjdDU+Cisg ICAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+Cisg ICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+CisgICAgICAgICA8bGl0ZXJh bD48cGFyYW1ldGVyPmV4cHJlc3Npb248L3BhcmFtZXRlcj4gPG9wdGlvbmFsPiBGT1JNQVQg SlNPTiA8b3B0aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25hbD48 L2xpdGVyYWw+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgPGFjcm9ueW0+SlNPTjwvYWNyb255bT4gdHlwZWQgZXhw cmVzc2lvbiB0aGF0IHByb3ZpZGVzIGEgZGF0YSBmb3IKKyAgICAgICAgICBzZXJpYWxpemF0 aW9uLiAgQWNjZXB0ZWQgSlNPTiB0eXBlcyAoPHR5cGU+anNvbjwvdHlwZT4gYW5kCisgICAg ICAgICAgPHR5cGU+anNvbmI8L3R5cGU+KSwgYW55IGNoYXJhY3RlciBzdHJpbmcgdHlwZXMg KDx0eXBlPnRleHQ8L3R5cGU+LAorICAgICAgICAgIDx0eXBlPmNoYXI8L3R5cGU+LCBldGMu KSwgYmluYXJ5IHN0cmluZ3MgKDx0eXBlPmJ5dGVhPC90eXBlPikgaW4KKyAgICAgICAgICBV VEY4IGVuY29kaW5nLgorICAgICAgICAgIEZvciBudWxsIGlucHV0LCBudWxsIHZhbHVlIGlz IHJldHVybmVkLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+IGNsYXVzZSBpcyBw cm92aWRlZCB0byBjb25mb3JtCisgICAgICAgICAgIHRvIHRoZSBTUUwvSlNPTiBzdGFuZGFy ZC4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zh cmxpc3RlbnRyeT4KKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAg ICAgICAgIDxsaXRlcmFsPlJFVFVSTklORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBGT1JNQVQgSlNPTiA8b3B0 aW9uYWw+IEVOQ09ESU5HIFVURjggPC9vcHRpb25hbD4gPC9vcHRpb25hbD48L2xpdGVyYWw+ CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4K KyAgICAgICAgIFRoZSBvdXRwdXQgY2xhdXNlIHRoYXQgc3BlY2lmaWVzIHRoZSB0YXJnZXQg Y2hhcmFjdGVyIG9yIGJpbmFyeSBzdHJpbmcKKyAgICAgICAgIHR5cGUgKDx0eXBlPnRleHQ8 L3R5cGU+LCA8dHlwZT5jaGFyPC90eXBlPiwgPHR5cGU+Ynl0ZWE8L3R5cGU+LCBldGMuKS4K KyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3Rl bnRyeT4KKyAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0 NT4KKyAgICAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICBBbHRl cm5hdGl2ZWx5LCB5b3UgY2FuIGNvbnN0cnVjdCA8YWNyb255bT5KU09OPC9hY3JvbnltPiB2 YWx1ZXMgc2ltcGx5CisgICAgICB1c2luZyA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+LXNwZWNpZmljIGNhc3RzIHRvIAorICAgICAgPHR5cGU+anNvbjwvdHlwZT4g YW5kIDx0eXBlPmpzb25iPC90eXBlPiB0eXBlcy4KKyAgICAgPC9wYXJhPgorICAgIDwvc2Vj dDU+CisgICAgPHNlY3Q1PgorICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorICAgICA8 cGFyYT4KKyAgICAgIENvbnN0cnVjdCBhIEpTT04gdGhlIHByb3ZpZGVkIHN0cmluZ3M6Cisg ICAgIDwvcGFyYT4KKzxzY3JlZW4+CitTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoSlNPTl9TQ0FM QVIoJ2ZvbycpKTsKKyBqc29uX3NlcmlhbGl6ZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyAiZm9v IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoJ3siZm9vIjogImJhciIsICJi YXoiOiBbMSwgMiwgM119JyBSRVRVUk5JTkcgYnl0ZWEpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAganNvbl9zZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgXHg3YjIyNjY2ZjZmMjIzYTIwMjI2MjYxNzIyMjJjMjAyMjYyNjE3 YTIyM2EyMDViMzEyYzIwMzIyYzIwMzM1ZDdkCisoMSByb3cpCisKKzwvc2NyZWVuPgorICAg IDwvc2VjdDU+CisgICA8L3NlY3Q0PgorCisgIDwvc2VjdDM+CisgCisgIDxzZWN0MyBpZD0i c3FsanNvbi1jb21tb24tY2xhdXNlcyI+CisgICA8dGl0bGU+U1FML0pTT04gQ29tbW9uIENs YXVzZXM8L3RpdGxlPgorCisgICA8c2VjdDQgaWQ9InNxbGpzb24taW5wdXQtY2xhdXNlIj4K KyAgICA8dGl0bGU+U1FML0pTT04gSW5wdXQgQ2xhdXNlPC90aXRsZT4KKworICAgIDx2YXJp YWJsZWxpc3Q+CisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFs PjxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxl PnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+Cis8b3B0aW9uYWw+IFBBU1NJTkcgeyA8 cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFt ZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29wdGlvbmFs PjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgICBUaGUgaW5wdXQgY2xhdXNlIHNwZWNpZmllcyB0aGUgSlNPTiBkYXRhIHRvIHF1 ZXJ5IGFuZAorICAgICAgIHRoZSBleGFjdCBxdWVyeSBwYXRoIHRvIGJlIHBhc3NlZCB0byBT UUwvSlNPTiBxdWVyeSBmdW5jdGlvbnM6CisgICAgIDwvcGFyYT4KKyAgICA8aXRlbWl6ZWRs aXN0PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPHJlcGxh Y2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+IGlzIHRoZSBKU09OIGRhdGEgdG8g cXVlcnkuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRl bT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gaXMgYW4gU1FML0pTT04gcGF0aAorICAgICAgIGV4cHJlc3Np b24gdGhhdCBzcGVjaWZpZXMgdGhlIGl0ZW1zIHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBK U09OCisgICAgICAgZGF0YS4gRm9yIGRldGFpbHMgb24gcGF0aCBleHByZXNzaW9uIHN5bnRh eCwgc2VlCisgICAgICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXNxbGpzb24tcGF0aCIv Pi4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgb3B0aW9uYWwgPGNvbW1hbmQ+UEFTU0lORzwv Y29tbWFuZD4gY2xhdXNlIHByb3ZpZGVzIHRoZSB2YWx1ZXMgZm9yCisgICAgICAgdGhlIG5h bWVkIHZhcmlhYmxlcyB1c2VkIGluIHRoZSBTUUwvSlNPTiBwYXRoIGV4cHJlc3Npb24uCisg ICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+Cisg ICAgPHBhcmE+CisgICAgIFRoZSBpbnB1dCBjbGF1c2UgaXMgY29tbW9uIGZvciBhbGwgU1FM L0pTT04gcXVlcnkgZnVuY3Rpb25zLgorICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorCisgICA8L3NlY3Q0 PgorCisgICA8c2VjdDQgaWQ9InNxbGpzb24tb3V0cHV0LWNsYXVzZSI+CisgICAgPHRpdGxl PlNRTC9KU09OIE91dHB1dCBDbGF1c2U8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4K KyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+UkVUVVJOSU5H IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxl PiA8b3B0aW9uYWw+IEZPUk1BVCBKU09OIDxvcHRpb25hbD4gRU5DT0RJTkcgVVRGOCA8L29w dGlvbmFsPiA8L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgICBUaGUgb3V0cHV0IGNsYXVzZSB0aGF0IHNwZWNp ZmllcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGdlbmVyYXRlZAorICAgICAgIDxhY3Jvbnlt PkpTT048L2Fjcm9ueW0+IG9iamVjdC4gT3V0IG9mIHRoZSBib3gsIDxwcm9kdWN0bmFtZT5Q b3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4KKyAgICAgICBzdXBwb3J0cyB0aGUgZm9sbG93aW5n IHR5cGVzOiA8dHlwZT5qc29uPC90eXBlPiwgPHR5cGU+anNvbmI8L3R5cGU+LAorICAgICAg IDx0eXBlPmJ5dGVhPC90eXBlPiwgYW5kIGNoYXJhY3RlciBzdHJpbmcgdHlwZXMgKDx0eXBl PnRleHQ8L3R5cGU+LCA8dHlwZT5jaGFyPC90eXBlPiwKKyAgICAgICA8dHlwZT52YXJjaGFy PC90eXBlPiwgYW5kIDx0eXBlPm5jaGFyPC90eXBlPikuCisgICAgICAgVG8gdXNlIG90aGVy IHR5cGVzLCB5b3UgbXVzdCBjcmVhdGUgdGhlIDxsaXRlcmFsPkNBU1Q8L2xpdGVyYWw+IGZy b20gPHR5cGU+anNvbjwvdHlwZT4gZm9yIHRoaXMgdHlwZS4KKyAgICAgICBCeSBkZWZhdWx0 LCB0aGUgPHR5cGU+anNvbjwvdHlwZT4gdHlwZSBpcyByZXR1cm5lZC4KKyAgICAgPC9wYXJh PgorICAgICA8cGFyYT4KKyAgICAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+Rk9STUFUPC9s aXRlcmFsPiBjbGF1c2UgaXMgcHJvdmlkZWQgdG8gY29uZm9ybSB0byB0aGUgU1FML0pTT04g c3RhbmRhcmQuCisgICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgIFRoZSBvdXRw dXQgY2xhdXNlIGlzIGNvbW1vbiBmb3IgYm90aCBjb25zdHJ1Y3RvciBhbmQgcXVlcnkgU1FM L0pTT04gZnVuY3Rpb25zLgorICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKworICAgPC9zZWN0ND4KKyAg PC9zZWN0Mz4KKyAgPC9zZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImZ1bmN0 aW9ucy1zZXF1ZW5jZSI+CkBAIC0xOTcxOSw2ICsyMTYzNywxMTUgQEAgU0VMRUNUIE5VTExJ Rih2YWx1ZSwgJyhub25lKScpIC4uLgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAg IDxlbnRyeT5ObzwvZW50cnk+CiAgICAgICA8L3Jvdz4KKyAgICAgIAorICAgICAgPHJvdz4K KyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVu Y19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+ anNvbl9hZ2dfc3RyaWN0PC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAg ICAgPGZ1bmN0aW9uPmpzb25fYWdnX3N0cmljdDwvZnVuY3Rpb24+ICggPHR5cGU+YW55ZWxl bWVudDwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+anNvbjwvcmV0dXJudmFsdWU+ CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4K KyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pmpzb25iX2FnZ19zdHJp Y3Q8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+ anNvbmJfYWdnX3N0cmljdDwvZnVuY3Rpb24+ICggPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4g KQorICAgICAgICA8cmV0dXJudmFsdWU+anNvbmI8L3JldHVybnZhbHVlPgorICAgICAgIDwv cGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQ29sbGVjdHMgYWxsIHRoZSBpbnB1dCB2 YWx1ZXMsIHNraXBwaW5nIG51bGxzLCBpbnRvIGEgSlNPTiBhcnJheS4KKyAgICAgICAgVmFs dWVzIGFyZSBjb252ZXJ0ZWQgdG8gSlNPTiBhcyBwZXIgPGZ1bmN0aW9uPnRvX2pzb248L2Z1 bmN0aW9uPgorICAgICAgICBvciA8ZnVuY3Rpb24+dG9fanNvbmI8L2Z1bmN0aW9uPi4KKyAg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+Tm88L2VudHJ5PgorICAgICAg PC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVy bT4KKyAgICAgICAgIDxwcmltYXJ5Pmpzb25fb2JqZWN0X2FnZ19zdHJpY3Q8L3ByaW1hcnk+ CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+anNvbl9vYmplY3Rf YWdnX3N0cmljdDwvZnVuY3Rpb24+ICgKKyAgICAgICAgIDxwYXJhbWV0ZXI+a2V5PC9wYXJh bWV0ZXI+IDx0eXBlPiJhbnkiPC90eXBlPiwKKyAgICAgICAgIDxwYXJhbWV0ZXI+dmFsdWU8 L3BhcmFtZXRlcj4gPHR5cGU+ImFueSI8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVl Pmpzb248L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYSByb2xl PSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJp bWFyeT5qc29uYl9vYmplY3RfYWdnX3N0cmljdDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRl eHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29uYl9vYmplY3RfYWdnX3N0cmljdDwvZnVu Y3Rpb24+ICgKKyAgICAgICAgIDxwYXJhbWV0ZXI+a2V5PC9wYXJhbWV0ZXI+IDx0eXBlPiJh bnkiPC90eXBlPiwKKyAgICAgICAgIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5 cGU+ImFueSI8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmpzb25iPC9yZXR1cm52 YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIENvbGxlY3Rz IGFsbCB0aGUga2V5L3ZhbHVlIHBhaXJzIGludG8gYSBKU09OIG9iamVjdC4gIEtleSBhcmd1 bWVudHMKKyAgICAgICAgYXJlIGNvZXJjZWQgdG8gdGV4dDsgdmFsdWUgYXJndW1lbnRzIGFy ZSBjb252ZXJ0ZWQgYXMKKyAgICAgICAgcGVyIDxmdW5jdGlvbj50b19qc29uPC9mdW5jdGlv bj4gb3IgPGZ1bmN0aW9uPnRvX2pzb25iPC9mdW5jdGlvbj4uCisgICAgICAgIE51bGwgdmFs dWVzIGFyZSBza2lwcGVkLCBrZXlzIGNhbiBub3QgYmUgbnVsbC4KKyAgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+Tm88L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAg ICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAg IDxwcmltYXJ5Pmpzb25fb2JqZWN0X2FnZ191bmlxdWU8L3ByaW1hcnk+CisgICAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+anNvbl9vYmplY3RfYWdnX3VuaXF1ZTwv ZnVuY3Rpb24+ICgKKyAgICAgICAgIDxwYXJhbWV0ZXI+a2V5PC9wYXJhbWV0ZXI+IDx0eXBl PiJhbnkiPC90eXBlPiwKKyAgICAgICAgIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4g PHR5cGU+ImFueSI8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmpzb248L3JldHVy bnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYSByb2xlPSJmdW5jX3NpZ25h dHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5qc29uYl9v YmplY3RfYWdnX3VuaXF1ZTwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAg ICAgIDxmdW5jdGlvbj5qc29uYl9vYmplY3RfYWdnX3VuaXF1ZTwvZnVuY3Rpb24+ICgKKyAg ICAgICAgIDxwYXJhbWV0ZXI+a2V5PC9wYXJhbWV0ZXI+IDx0eXBlPiJhbnkiPC90eXBlPiwK KyAgICAgICAgIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+ImFueSI8L3R5 cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmpzb25iPC9yZXR1cm52YWx1ZT4KKyAgICAg ICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIENvbGxlY3RzIGFsbCB0aGUga2V5 L3ZhbHVlIHBhaXJzIGludG8gYSBKU09OIG9iamVjdC4gIEtleSBhcmd1bWVudHMKKyAgICAg ICAgYXJlIGNvZXJjZWQgdG8gdGV4dDsgdmFsdWUgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQg YXMKKyAgICAgICAgcGVyIDxmdW5jdGlvbj50b19qc29uPC9mdW5jdGlvbj4gb3IgPGZ1bmN0 aW9uPnRvX2pzb25iPC9mdW5jdGlvbj4uCisgICAgICAgIFZhbHVlcyBjYW4gYmUgbnVsbCwg YnV0IG5vdCBrZXlzLgorICAgICAgICBJbiBjYXNlIG9mIGR1cGxpY2F0ZSBrZXlzIGVycm9y IGlzIHRocm93bi4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+Tm88 L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJv bGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAg ICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pmpzb25fb2JqZWN0X2FnZ191 bmlxdWVfc3RyaWN0PC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAg PGZ1bmN0aW9uPmpzb25fb2JqZWN0X2FnZ191bmlxdWVfc3RyaWN0PC9mdW5jdGlvbj4gKAor ICAgICAgICAgPHBhcmFtZXRlcj5rZXk8L3BhcmFtZXRlcj4gPHR5cGU+ImFueSI8L3R5cGU+ LAorICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8dHlwZT4iYW55Ijwv dHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+anNvbjwvcmV0dXJudmFsdWU+CisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAg ICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pmpzb25iX29iamVjdF9hZ2dfdW5p cXVlX3N0cmljdDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxm dW5jdGlvbj5qc29uYl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3Q8L2Z1bmN0aW9uPiAoCisg ICAgICAgICA8cGFyYW1ldGVyPmtleTwvcGFyYW1ldGVyPiA8dHlwZT4iYW55IjwvdHlwZT4s CisgICAgICAgICA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPiJhbnkiPC90 eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5qc29uYjwvcmV0dXJudmFsdWU+CisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBDb2xsZWN0cyBhbGwgdGhlIGtl eS92YWx1ZSBwYWlycyBpbnRvIGEgSlNPTiBvYmplY3QuICBLZXkgYXJndW1lbnRzCisgICAg ICAgIGFyZSBjb2VyY2VkIHRvIHRleHQ7IHZhbHVlIGFyZ3VtZW50cyBhcmUgY29udmVydGVk IGFzCisgICAgICAgIHBlciA8ZnVuY3Rpb24+dG9fanNvbjwvZnVuY3Rpb24+IG9yIDxmdW5j dGlvbj50b19qc29uYjwvZnVuY3Rpb24+LgorICAgICAgICBOdWxsIHZhbHVlcyBhcmUgc2tp cHBlZCwga2V5cyBjYW4gbm90IGJlIG51bGwuCisgICAgICAgIEluIGNhc2Ugb2YgZHVwbGlj YXRlIGtleXMgZXJyb3IgaXMgdGhyb3duLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICAgIDxlbnRyeT5ObzwvZW50cnk+CisgICAgICA8L3Jvdz4KIAogICAgICAgPHJvdz4KICAg ICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19z aWduYXR1cmUiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2tleXdvcmRzL3NxbDIwMTYt MDItcmVzZXJ2ZWQudHh0IGIvZG9jL3NyYy9zZ21sL2tleXdvcmRzL3NxbDIwMTYtMDItcmVz ZXJ2ZWQudHh0CmluZGV4IGFlMTEwMTIzODguLjdiYTQyMDgzOTggMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9rZXl3b3Jkcy9zcWwyMDE2LTAyLXJlc2VydmVkLnR4dAorKysgYi9kb2Mv c3JjL3NnbWwva2V5d29yZHMvc3FsMjAxNi0wMi1yZXNlcnZlZC50eHQKQEAgLTE1NiwxMiAr MTU2LDE1IEBAIElOVEVSVkFMCiBJTlRPCiBJUwogSk9JTgorSlNPTgogSlNPTl9BUlJBWQog SlNPTl9BUlJBWUFHRwogSlNPTl9FWElTVFMKIEpTT05fT0JKRUNUCiBKU09OX09CSkVDVEFH RwogSlNPTl9RVUVSWQorSlNPTl9TQ0FMQVIKK0pTT05fU0VSSUFMSVpFCiBKU09OX1RBQkxF CiBKU09OX1RBQkxFX1BSSU1JVElWRQogSlNPTl9WQUxVRQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHByLmMKaW5kZXggODQ3MzU3YmY4MC4uMjUyNTNmNTM3NyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jCkBAIC00Nyw2ICs0Nyw5IEBACiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgi CisjaW5jbHVkZSAidXRpbHMvanNvbi5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCisj aW5jbHVkZSAidXRpbHMvanNvbnBhdGguaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC04NSw2ICs4OCw0MCBAQCBz dGF0aWMgdm9pZCBFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpzdGF0ZSwgQWdn U3RhdGUgKmFnZ3N0YXRlLAogCQkJCQkJCQkgIGJvb2wgbnVsbGNoZWNrKTsKIAogCitzdGF0 aWMgRXhwclN0YXRlICoKK0V4ZWNJbml0RXhwckludGVybmFsKEV4cHIgKm5vZGUsIFBsYW5T dGF0ZSAqcGFyZW50LCBQYXJhbUxpc3RJbmZvIGV4dF9wYXJhbXMsCisJCQkJCSBEYXR1bSAq Y2FzZXZhbCwgYm9vbCAqY2FzZW51bGwpCit7CisJRXhwclN0YXRlICAqc3RhdGU7CisJRXhw ckV2YWxTdGVwIHNjcmF0Y2ggPSB7MH07CisKKwkvKiBTcGVjaWFsIGNhc2U6IE5VTEwgZXhw cmVzc2lvbiBwcm9kdWNlcyBhIE5VTEwgRXhwclN0YXRlIHBvaW50ZXIgKi8KKwlpZiAobm9k ZSA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEluaXRpYWxpemUgRXhwclN0YXRl IHdpdGggZW1wdHkgc3RlcCBsaXN0ICovCisJc3RhdGUgPSBtYWtlTm9kZShFeHByU3RhdGUp OworCXN0YXRlLT5leHByID0gbm9kZTsKKwlzdGF0ZS0+cGFyZW50ID0gcGFyZW50OworCXN0 YXRlLT5leHRfcGFyYW1zID0gZXh0X3BhcmFtczsKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2 YWwgPSBjYXNldmFsOworCXN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSBjYXNlbnVsbDsK KworCS8qIEluc2VydCBFRU9QXypfRkVUQ0hTT01FIHN0ZXBzIGFzIG5lZWRlZCAqLworCUV4 ZWNJbml0RXhwclNsb3RzKHN0YXRlLCAoTm9kZSAqKSBub2RlKTsKKworCS8qIENvbXBpbGUg dGhlIGV4cHJlc3Npb24gcHJvcGVyICovCisJRXhlY0luaXRFeHByUmVjKG5vZGUsIHN0YXRl LCAmc3RhdGUtPnJlc3ZhbHVlLCAmc3RhdGUtPnJlc251bGwpOworCisJLyogRmluYWxseSwg YXBwZW5kIGEgRE9ORSBzdGVwICovCisJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0RPTkU7CisJ RXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCisJRXhlY1JlYWR5RXhwcihz dGF0ZSk7CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKIC8qCiAgKiBFeGVjSW5pdEV4cHI6IHBy ZXBhcmUgYW4gZXhwcmVzc2lvbiB0cmVlIGZvciBleGVjdXRpb24KICAqCkBAIC0xMjIsMzIg KzE1OSw3IEBAIHN0YXRpYyB2b2lkIEV4ZWNCdWlsZEFnZ1RyYW5zQ2FsbChFeHByU3RhdGUg KnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiBFeHByU3RhdGUgKgogRXhlY0luaXRFeHBy KEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50KQogewotCUV4cHJTdGF0ZSAgKnN0YXRl OwotCUV4cHJFdmFsU3RlcCBzY3JhdGNoID0gezB9OwotCi0JLyogU3BlY2lhbCBjYXNlOiBO VUxMIGV4cHJlc3Npb24gcHJvZHVjZXMgYSBOVUxMIEV4cHJTdGF0ZSBwb2ludGVyICovCi0J aWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIE5VTEw7Ci0KLQkvKiBJbml0aWFsaXplIEV4 cHJTdGF0ZSB3aXRoIGVtcHR5IHN0ZXAgbGlzdCAqLwotCXN0YXRlID0gbWFrZU5vZGUoRXhw clN0YXRlKTsKLQlzdGF0ZS0+ZXhwciA9IG5vZGU7Ci0Jc3RhdGUtPnBhcmVudCA9IHBhcmVu dDsKLQlzdGF0ZS0+ZXh0X3BhcmFtcyA9IE5VTEw7Ci0KLQkvKiBJbnNlcnQgRUVPUF8qX0ZF VENIU09NRSBzdGVwcyBhcyBuZWVkZWQgKi8KLQlFeGVjSW5pdEV4cHJTbG90cyhzdGF0ZSwg KE5vZGUgKikgbm9kZSk7Ci0KLQkvKiBDb21waWxlIHRoZSBleHByZXNzaW9uIHByb3BlciAq LwotCUV4ZWNJbml0RXhwclJlYyhub2RlLCBzdGF0ZSwgJnN0YXRlLT5yZXN2YWx1ZSwgJnN0 YXRlLT5yZXNudWxsKTsKLQotCS8qIEZpbmFsbHksIGFwcGVuZCBhIERPTkUgc3RlcCAqLwot CXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9ET05FOwotCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUs ICZzY3JhdGNoKTsKLQotCUV4ZWNSZWFkeUV4cHIoc3RhdGUpOwotCi0JcmV0dXJuIHN0YXRl OworCXJldHVybiBFeGVjSW5pdEV4cHJJbnRlcm5hbChub2RlLCBwYXJlbnQsIE5VTEwsIE5V TEwsIE5VTEwpOwogfQogCiAvKgpAQCAtMTU5LDMyICsxNzEsMjAgQEAgRXhlY0luaXRFeHBy KEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50KQogRXhwclN0YXRlICoKIEV4ZWNJbml0 RXhwcldpdGhQYXJhbXMoRXhwciAqbm9kZSwgUGFyYW1MaXN0SW5mbyBleHRfcGFyYW1zKQog ewotCUV4cHJTdGF0ZSAgKnN0YXRlOwotCUV4cHJFdmFsU3RlcCBzY3JhdGNoID0gezB9Owot Ci0JLyogU3BlY2lhbCBjYXNlOiBOVUxMIGV4cHJlc3Npb24gcHJvZHVjZXMgYSBOVUxMIEV4 cHJTdGF0ZSBwb2ludGVyICovCi0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIE5VTEw7 Ci0KLQkvKiBJbml0aWFsaXplIEV4cHJTdGF0ZSB3aXRoIGVtcHR5IHN0ZXAgbGlzdCAqLwot CXN0YXRlID0gbWFrZU5vZGUoRXhwclN0YXRlKTsKLQlzdGF0ZS0+ZXhwciA9IG5vZGU7Ci0J c3RhdGUtPnBhcmVudCA9IE5VTEw7Ci0Jc3RhdGUtPmV4dF9wYXJhbXMgPSBleHRfcGFyYW1z OwotCi0JLyogSW5zZXJ0IEVFT1BfKl9GRVRDSFNPTUUgc3RlcHMgYXMgbmVlZGVkICovCi0J RXhlY0luaXRFeHByU2xvdHMoc3RhdGUsIChOb2RlICopIG5vZGUpOwotCi0JLyogQ29tcGls ZSB0aGUgZXhwcmVzc2lvbiBwcm9wZXIgKi8KLQlFeGVjSW5pdEV4cHJSZWMobm9kZSwgc3Rh dGUsICZzdGF0ZS0+cmVzdmFsdWUsICZzdGF0ZS0+cmVzbnVsbCk7Ci0KLQkvKiBGaW5hbGx5 LCBhcHBlbmQgYSBET05FIHN0ZXAgKi8KLQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfRE9ORTsK LQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7Ci0KLQlFeGVjUmVhZHlFeHBy KHN0YXRlKTsKKwlyZXR1cm4gRXhlY0luaXRFeHBySW50ZXJuYWwobm9kZSwgTlVMTCwgZXh0 X3BhcmFtcywgTlVMTCwgTlVMTCk7Cit9CiAKLQlyZXR1cm4gc3RhdGU7CisvKgorICogRXhl Y0luaXRFeHByV2l0aENhc2VWYWx1ZTogcHJlcGFyZSBhbiBleHByZXNzaW9uIHRyZWUgZm9y IGV4ZWN1dGlvbgorICoKKyAqIFRoaXMgaXMgdGhlIHNhbWUgYXMgRXhlY0luaXRFeHByLCBl eGNlcHQgdGhhdCBhIHBvaW50ZXIgdG8gdGhlIHZhbHVlIGZvcgorICogQ2FzVGVzdEV4cHIg aXMgcGFzc2VkIGhlcmUuCisgKi8KK0V4cHJTdGF0ZSAqCitFeGVjSW5pdEV4cHJXaXRoQ2Fz ZVZhbHVlKEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50LAorCQkJCQkJICBEYXR1bSAq Y2FzZXZhbCwgYm9vbCAqY2FzZW51bGwpCit7CisJcmV0dXJuIEV4ZWNJbml0RXhwckludGVy bmFsKG5vZGUsIHBhcmVudCwgTlVMTCwgY2FzZXZhbCwgY2FzZW51bGwpOwogfQogCiAvKgpA QCAtMjQyOCw2ICsyNDI4LDI1MyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhw clN0YXRlICpzdGF0ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfSnNvblZhbHVl RXhwcjoKKwkJCXsKKwkJCQlKc29uVmFsdWVFeHByICpqdmUgPSAoSnNvblZhbHVlRXhwciAq KSBub2RlOworCisJCQkJRXhlY0luaXRFeHByUmVjKGp2ZS0+cmF3X2V4cHIsIHN0YXRlLCBy ZXN2LCByZXNudWxsKTsKKworCQkJCWlmIChqdmUtPmZvcm1hdHRlZF9leHByKQorCQkJCXsK KwkJCQkJRGF0dW0JICAgKmlubmVybW9zdF9jYXNldmFsID0gc3RhdGUtPmlubmVybW9zdF9j YXNldmFsOworCQkJCQlib29sCSAgICppbm5lcm1vc3RfaXNudWxsID0gc3RhdGUtPmlubmVy bW9zdF9jYXNlbnVsbDsKKworCQkJCQlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSByZXN2 OworCQkJCQlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcmVzbnVsbDsKKworCQkJCQlF eGVjSW5pdEV4cHJSZWMoanZlLT5mb3JtYXR0ZWRfZXhwciwgc3RhdGUsIHJlc3YsIHJlc251 bGwpOworCisJCQkJCXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9IGlubmVybW9zdF9jYXNl dmFsOworCQkJCQlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gaW5uZXJtb3N0X2lzbnVs bDsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBUX0pzb25Db25zdHJ1Y3Rv ckV4cHI6CisJCQl7CisJCQkJSnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciA9IChKc29uQ29u c3RydWN0b3JFeHByICopIG5vZGU7CisJCQkJTGlzdAkgICAqYXJncyA9IGN0b3ItPmFyZ3M7 CisJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJaW50CQkJbmFyZ3MgPSBsaXN0X2xlbmd0aChh cmdzKTsKKwkJCQlpbnQJCQlhcmdubyA9IDA7CisKKwkJCQlpZiAoY3Rvci0+ZnVuYykKKwkJ CQl7CisJCQkJCUV4ZWNJbml0RXhwclJlYyhjdG9yLT5mdW5jLCBzdGF0ZSwgcmVzdiwgcmVz bnVsbCk7CisJCQkJfQorCQkJCWVsc2UgaWYgKChjdG9yLT50eXBlID09IEpTQ1RPUl9KU09O X1BBUlNFICYmICFjdG9yLT51bmlxdWUpIHx8CisJCQkJCQkgY3Rvci0+dHlwZSA9PSBKU0NU T1JfSlNPTl9TRVJJQUxJWkUpCisJCQkJeworCQkJCQkvKiBVc2UgdGhlIHZhbHVlIG9mIHRo ZSBmaXJzdCBhcmd1bWVudCBhcyBhIHJlc3VsdCAqLworCQkJCQlFeGVjSW5pdEV4cHJSZWMo bGluaXRpYWwoYXJncyksIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKwkJCQl9CisJCQkJZWxz ZQorCQkJCXsKKwkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0pTT05fQ09OU1RSVUNUT1I7 CisJCQkJCXNjcmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLmNvbnN0cnVjdG9yID0gY3RvcjsK KwkJCQkJc2NyYXRjaC5kLmpzb25fY29uc3RydWN0b3IuYXJnX3ZhbHVlcyA9IHBhbGxvYyhz aXplb2YoRGF0dW0pICogbmFyZ3MpOworCQkJCQlzY3JhdGNoLmQuanNvbl9jb25zdHJ1Y3Rv ci5hcmdfbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbmFyZ3MpOworCQkJCQlzY3Jh dGNoLmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfdHlwZXMgPSBwYWxsb2Moc2l6ZW9mKE9pZCkg KiBuYXJncyk7CisJCQkJCXNjcmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLm5hcmdzID0gbmFy Z3M7CisKKwkJCQkJZm9yZWFjaChsYywgYXJncykKKwkJCQkJeworCQkJCQkJRXhwcgkgICAq YXJnID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKworCQkJCQkJc2NyYXRjaC5kLmpzb25fY29u c3RydWN0b3IuYXJnX3R5cGVzW2FyZ25vXSA9IGV4cHJUeXBlKChOb2RlICopIGFyZyk7CisK KwkJCQkJCWlmIChJc0EoYXJnLCBDb25zdCkpCisJCQkJCQl7CisJCQkJCQkJLyogRG9uJ3Qg ZXZhbHVhdGUgY29uc3QgYXJndW1lbnRzIGV2ZXJ5IHJvdW5kICovCisJCQkJCQkJQ29uc3QJ ICAgKmNvbiA9IChDb25zdCAqKSBhcmc7CisKKwkJCQkJCQlzY3JhdGNoLmQuanNvbl9jb25z dHJ1Y3Rvci5hcmdfdmFsdWVzW2FyZ25vXSA9IGNvbi0+Y29uc3R2YWx1ZTsKKwkJCQkJCQlz Y3JhdGNoLmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfbnVsbHNbYXJnbm9dID0gY29uLT5jb25z dGlzbnVsbDsKKwkJCQkJCX0KKwkJCQkJCWVsc2UKKwkJCQkJCXsKKwkJCQkJCQlFeGVjSW5p dEV4cHJSZWMoYXJnLCBzdGF0ZSwKKwkJCQkJCQkJCQkJJnNjcmF0Y2guZC5qc29uX2NvbnN0 cnVjdG9yLmFyZ192YWx1ZXNbYXJnbm9dLAorCQkJCQkJCQkJCQkmc2NyYXRjaC5kLmpzb25f Y29uc3RydWN0b3IuYXJnX251bGxzW2FyZ25vXSk7CisJCQkJCQl9CisJCQkJCQlhcmdubysr OworCQkJCQl9CisKKwkJCQkJLyogcHJlcGFyZSB0eXBlIGNhY2hlIGZvciBkYXR1bV90b19q c29uW2JdKCkgKi8KKwkJCQkJaWYgKGN0b3ItPnR5cGUgPT0gSlNDVE9SX0pTT05fU0NBTEFS KQorCQkJCQl7CisJCQkJCQlib29sCQlpc19qc29uYiA9CisJCQkJCQkJY3Rvci0+cmV0dXJu aW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9KU09OQjsKKworCQkJCQkJ c2NyYXRjaC5kLmpzb25fY29uc3RydWN0b3IuYXJnX3R5cGVfY2FjaGUgPQorCQkJCQkJCXBh bGxvYyhzaXplb2YoKnNjcmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLmFyZ190eXBlX2NhY2hl KSAqIG5hcmdzKTsKKworCQkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSsrKQor CQkJCQkJeworCQkJCQkJCWludAkJCWNhdGVnb3J5OworCQkJCQkJCU9pZAkJCW91dGZ1bmNp ZDsKKwkJCQkJCQlPaWQJCQl0eXBpZCA9IHNjcmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLmFy Z190eXBlc1tpXTsKKworCQkJCQkJCWlmIChpc19qc29uYikKKwkJCQkJCQl7CisJCQkJCQkJ CUpzb25iVHlwZUNhdGVnb3J5IGpiY2F0OworCisJCQkJCQkJCWpzb25iX2NhdGVnb3JpemVf dHlwZSh0eXBpZCwgJmpiY2F0LCAmb3V0ZnVuY2lkKTsKKworCQkJCQkJCQljYXRlZ29yeSA9 IChpbnQpIGpiY2F0OworCQkJCQkJCX0KKwkJCQkJCQllbHNlCisJCQkJCQkJeworCQkJCQkJ CQlKc29uVHlwZUNhdGVnb3J5IGpzY2F0OworCisJCQkJCQkJCWpzb25fY2F0ZWdvcml6ZV90 eXBlKHR5cGlkLCAmanNjYXQsICZvdXRmdW5jaWQpOworCisJCQkJCQkJCWNhdGVnb3J5ID0g KGludCkganNjYXQ7CisJCQkJCQkJfQorCisJCQkJCQkJc2NyYXRjaC5kLmpzb25fY29uc3Ry dWN0b3IuYXJnX3R5cGVfY2FjaGVbaV0ub3V0ZnVuY2lkID0gb3V0ZnVuY2lkOworCQkJCQkJ CXNjcmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLmFyZ190eXBlX2NhY2hlW2ldLmNhdGVnb3J5 ID0gY2F0ZWdvcnk7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQlFeHByRXZhbFB1c2hTdGVw KHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJfQorCisJCQkJaWYgKGN0b3ItPmNvZXJjaW9uKQor CQkJCXsKKwkJCQkJRGF0dW0JICAgKmlubmVybW9zdF9jYXNldmFsID0gc3RhdGUtPmlubmVy bW9zdF9jYXNldmFsOworCQkJCQlib29sCSAgICppbm5lcm1vc3RfaXNudWxsID0gc3RhdGUt PmlubmVybW9zdF9jYXNlbnVsbDsKKworCQkJCQlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwg PSByZXN2OworCQkJCQlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcmVzbnVsbDsKKwor CQkJCQlFeGVjSW5pdEV4cHJSZWMoY3Rvci0+Y29lcmNpb24sIHN0YXRlLCByZXN2LCByZXNu dWxsKTsKKworCQkJCQlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSBpbm5lcm1vc3RfY2Fz ZXZhbDsKKwkJCQkJc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbCA9IGlubmVybW9zdF9pc251 bGw7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0 ZToKKwkJCXsKKwkJCQlKc29uSXNQcmVkaWNhdGUgKnByZWQgPSAoSnNvbklzUHJlZGljYXRl ICopIG5vZGU7CisKKwkJCQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgcHJlZC0+ZXhwciwg c3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0lT X0pTT047CisJCQkJc2NyYXRjaC5kLmlzX2pzb24ucHJlZCA9IHByZWQ7CisKKwkJCQlFeHBy RXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJ Y2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0gY2FzdE5v ZGUoSnNvbkV4cHIsIG5vZGUpOworCQkJCUxpc3RDZWxsICAgKmFyZ2V4cHJsYzsKKwkJCQlM aXN0Q2VsbCAgICphcmduYW1lbGM7CisKKwkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSlNP TkVYUFI7CisJCQkJc2NyYXRjaC5kLmpzb25leHByLmpzZXhwciA9IGpleHByOworCisJCQkJ c2NyYXRjaC5kLmpzb25leHByLmZvcm1hdHRlZF9leHByID0KKwkJCQkJcGFsbG9jKHNpemVv Zigqc2NyYXRjaC5kLmpzb25leHByLmZvcm1hdHRlZF9leHByKSk7CisKKwkJCQlFeGVjSW5p dEV4cHJSZWMoKEV4cHIgKikgamV4cHItPmZvcm1hdHRlZF9leHByLCBzdGF0ZSwKKwkJCQkJ CQkJJnNjcmF0Y2guZC5qc29uZXhwci5mb3JtYXR0ZWRfZXhwci0+dmFsdWUsCisJCQkJCQkJ CSZzY3JhdGNoLmQuanNvbmV4cHIuZm9ybWF0dGVkX2V4cHItPmlzbnVsbCk7CisKKwkJCQlz Y3JhdGNoLmQuanNvbmV4cHIucGF0aHNwZWMgPQorCQkJCQlwYWxsb2Moc2l6ZW9mKCpzY3Jh dGNoLmQuanNvbmV4cHIucGF0aHNwZWMpKTsKKworCQkJCUV4ZWNJbml0RXhwclJlYygoRXhw ciAqKSBqZXhwci0+cGF0aF9zcGVjLCBzdGF0ZSwKKwkJCQkJCQkJJnNjcmF0Y2guZC5qc29u ZXhwci5wYXRoc3BlYy0+dmFsdWUsCisJCQkJCQkJCSZzY3JhdGNoLmQuanNvbmV4cHIucGF0 aHNwZWMtPmlzbnVsbCk7CisKKwkJCQlzY3JhdGNoLmQuanNvbmV4cHIucmVzX2V4cHIgPQor CQkJCQlwYWxsb2Moc2l6ZW9mKCpzY3JhdGNoLmQuanNvbmV4cHIucmVzX2V4cHIpKTsKKwor CQkJCXNjcmF0Y2guZC5qc29uZXhwci5yZXN1bHRfZXhwciA9IGpleHByLT5yZXN1bHRfY29l cmNpb24KKwkJCQkJPyBFeGVjSW5pdEV4cHJXaXRoQ2FzZVZhbHVlKChFeHByICopIGpleHBy LT5yZXN1bHRfY29lcmNpb24tPmV4cHIsCisJCQkJCQkJCQkJCQlzdGF0ZS0+cGFyZW50LAor CQkJCQkJCQkJCQkJJnNjcmF0Y2guZC5qc29uZXhwci5yZXNfZXhwci0+dmFsdWUsCisJCQkJ CQkJCQkJCQkmc2NyYXRjaC5kLmpzb25leHByLnJlc19leHByLT5pc251bGwpCisJCQkJCTog TlVMTDsKKworCQkJCXNjcmF0Y2guZC5qc29uZXhwci5kZWZhdWx0X29uX2VtcHR5ID0gIWpl eHByLT5vbl9lbXB0eSA/IE5VTEwgOgorCQkJCQlFeGVjSW5pdEV4cHIoKEV4cHIgKikgamV4 cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIsCisJCQkJCQkJCSBzdGF0ZS0+cGFyZW50KTsK KworCQkJCXNjcmF0Y2guZC5qc29uZXhwci5kZWZhdWx0X29uX2Vycm9yID0KKwkJCQkJRXhl Y0luaXRFeHByKChFeHByICopIGpleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByLAorCQkJ CQkJCQkgc3RhdGUtPnBhcmVudCk7CisKKwkJCQlpZiAoamV4cHItPm9taXRfcXVvdGVzIHx8 CisJCQkJCShqZXhwci0+cmVzdWx0X2NvZXJjaW9uICYmIGpleHByLT5yZXN1bHRfY29lcmNp b24tPnZpYV9pbykpCisJCQkJeworCQkJCQlPaWQJCQl0eXBpbnB1dDsKKworCQkJCQkvKiBs b29rdXAgdGhlIHJlc3VsdCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24gKi8KKwkJCQkJZ2V0VHlw ZUlucHV0SW5mbyhqZXhwci0+cmV0dXJuaW5nLT50eXBpZCwgJnR5cGlucHV0LAorCQkJCQkJ CQkJICZzY3JhdGNoLmQuanNvbmV4cHIuaW5wdXQudHlwaW9wYXJhbSk7CisJCQkJCWZtZ3Jf aW5mbyh0eXBpbnB1dCwgJnNjcmF0Y2guZC5qc29uZXhwci5pbnB1dC5mdW5jKTsKKwkJCQl9 CisKKwkJCQlzY3JhdGNoLmQuanNvbmV4cHIuYXJncyA9IE5JTDsKKworCQkJCWZvcmJvdGgo YXJnZXhwcmxjLCBqZXhwci0+cGFzc2luZ192YWx1ZXMsCisJCQkJCQlhcmduYW1lbGMsIGpl eHByLT5wYXNzaW5nX25hbWVzKQorCQkJCXsKKwkJCQkJRXhwcgkgICAqYXJnZXhwciA9IChF eHByICopIGxmaXJzdChhcmdleHBybGMpOworCQkJCQlTdHJpbmcJICAgKmFyZ25hbWUgPSBs Zmlyc3Rfbm9kZShTdHJpbmcsIGFyZ25hbWVsYyk7CisJCQkJCUpzb25QYXRoVmFyaWFibGVF dmFsQ29udGV4dCAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7CisKKwkJCQkJdmFyLT5u YW1lID0gcHN0cmR1cChhcmduYW1lLT5zdmFsKTsKKwkJCQkJdmFyLT50eXBpZCA9IGV4cHJU eXBlKChOb2RlICopIGFyZ2V4cHIpOworCQkJCQl2YXItPnR5cG1vZCA9IGV4cHJUeXBtb2Qo KE5vZGUgKikgYXJnZXhwcik7CisJCQkJCXZhci0+ZXN0YXRlID0gRXhlY0luaXRFeHByKGFy Z2V4cHIsIHN0YXRlLT5wYXJlbnQpOworCQkJCQl2YXItPmVjb250ZXh0ID0gTlVMTDsKKwkJ CQkJdmFyLT5ldmFsdWF0ZWQgPSBmYWxzZTsKKwkJCQkJdmFyLT52YWx1ZSA9IChEYXR1bSkg MDsKKwkJCQkJdmFyLT5pc251bGwgPSB0cnVlOworCisJCQkJCXNjcmF0Y2guZC5qc29uZXhw ci5hcmdzID0KKwkJCQkJCWxhcHBlbmQoc2NyYXRjaC5kLmpzb25leHByLmFyZ3MsIHZhcik7 CisJCQkJfQorCisJCQkJc2NyYXRjaC5kLmpzb25leHByLmNhY2hlID0gTlVMTDsKKworCQkJ CWlmIChqZXhwci0+Y29lcmNpb25zKQorCQkJCXsKKwkJCQkJSnNvbkNvZXJjaW9uICoqY29l cmNpb247CisJCQkJCXN0cnVjdCBKc29uQ29lcmNpb25TdGF0ZSAqY3N0YXRlOworCQkJCQlE YXR1bQkgICAqY2FzZXZhbDsKKwkJCQkJYm9vbAkgICAqY2FzZW51bGw7CisKKwkJCQkJc2Ny YXRjaC5kLmpzb25leHByLmNvZXJjaW9uX2V4cHIgPQorCQkJCQkJcGFsbG9jKHNpemVvZigq c2NyYXRjaC5kLmpzb25leHByLmNvZXJjaW9uX2V4cHIpKTsKKworCQkJCQljYXNldmFsID0g JnNjcmF0Y2guZC5qc29uZXhwci5jb2VyY2lvbl9leHByLT52YWx1ZTsKKwkJCQkJY2FzZW51 bGwgPSAmc2NyYXRjaC5kLmpzb25leHByLmNvZXJjaW9uX2V4cHItPmlzbnVsbDsKKworCQkJ CQlmb3IgKGNzdGF0ZSA9ICZzY3JhdGNoLmQuanNvbmV4cHIuY29lcmNpb25zLm51bGwsCisJ CQkJCQkgY29lcmNpb24gPSAmamV4cHItPmNvZXJjaW9ucy0+bnVsbDsKKwkJCQkJCSBjb2Vy Y2lvbiA8PSAmamV4cHItPmNvZXJjaW9ucy0+Y29tcG9zaXRlOworCQkJCQkJIGNvZXJjaW9u KyssIGNzdGF0ZSsrKQorCQkJCQl7CisJCQkJCQljc3RhdGUtPmNvZXJjaW9uID0gKmNvZXJj aW9uOworCQkJCQkJY3N0YXRlLT5lc3RhdGUgPSAqY29lcmNpb24gPworCQkJCQkJCUV4ZWNJ bml0RXhwcldpdGhDYXNlVmFsdWUoKEV4cHIgKikoKmNvZXJjaW9uKS0+ZXhwciwKKwkJCQkJ CQkJCQkJCQkgIHN0YXRlLT5wYXJlbnQsCisJCQkJCQkJCQkJCQkJICBjYXNldmFsLCBjYXNl bnVsbCkgOiBOVUxMOworCQkJCQl9CisJCQkJfQorCisJCQkJRXhwckV2YWxQdXNoU3RlcChz dGF0ZSwgJnNjcmF0Y2gpOworCQkJCWJyZWFrOworCQkJfQorCiAJCWRlZmF1bHQ6CiAJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBu b2RlVGFnKG5vZGUpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCmlu ZGV4IGQ2ZjdkN2MyZDcuLjA0ODMyNzlmOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHJJbnRlcnAuYwpAQCAtNTcsMjIgKzU3LDMxIEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv eGFjdC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxh bi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNp bmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3Mu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCisjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX2V4cHIuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJ1dGlscy9hcnJh eS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0 ZS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5k ZWRyZWNvcmQuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uLmgiCisjaW5jbHVkZSAidXRpbHMv anNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGls cy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKICNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3htbC5oIgpAQCAtNDc3LDYgKzQ4Niw5IEBAIEV4ZWNJbnRlcnBF eHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNu dWxsKQogCQkmJkNBU0VfRUVPUF9HUk9VUElOR19GVU5DLAogCQkmJkNBU0VfRUVPUF9XSU5E T1dfRlVOQywKIAkJJiZDQVNFX0VFT1BfU1VCUExBTiwKKwkJJiZDQVNFX0VFT1BfSlNPTl9D T05TVFJVQ1RPUiwKKwkJJiZDQVNFX0VFT1BfSVNfSlNPTiwKKwkJJiZDQVNFX0VFT1BfSlNP TkVYUFIsCiAJCSYmQ0FTRV9FRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUsCiAJCSYmQ0FT RV9FRU9QX0FHR19ERVNFUklBTElaRSwKIAkJJiZDQVNFX0VFT1BfQUdHX1NUUklDVF9JTlBV VF9DSEVDS19BUkdTLApAQCAtMTc4Niw3ICsxNzk4LDI3IEBAIEV4ZWNJbnRlcnBFeHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQog CQl7CiAJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxlbWVudGF0aW9uICov CiAJCQlFeGVjRXZhbEFnZ09yZGVyZWRUcmFuc1R1cGxlKHN0YXRlLCBvcCwgZWNvbnRleHQp OworCQkJRUVPX05FWFQoKTsKKwkJfQorCisJCUVFT19DQVNFKEVFT1BfSlNPTl9DT05TVFJV Q1RPUikKKwkJeworCQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRh dGlvbiAqLworCQkJRXhlY0V2YWxKc29uQ29uc3RydWN0b3Ioc3RhdGUsIG9wLCBlY29udGV4 dCk7CisJCQlFRU9fTkVYVCgpOworCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9JU19KU09OKQor CQl7CisJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxlbWVudGF0aW9uICov CisJCQlFeGVjRXZhbEpzb25Jc1ByZWRpY2F0ZShzdGF0ZSwgb3ApOworCQkJRUVPX05FWFQo KTsKKwkJfQorCisJCUVFT19DQVNFKEVFT1BfSlNPTkVYUFIpCisJCXsKKwkJCS8qIHRvbyBj b21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNFdmFsSnNv bihzdGF0ZSwgb3AsIGVjb250ZXh0KTsKIAkJCUVFT19ORVhUKCk7CiAJCX0KIApAQCAtMzkw MCw2ICszOTMyLDkxIEBAIEV4ZWNFdmFsWG1sRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wKQogCX0KIH0KIAordm9pZAorRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUo RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKK3sKKwlKc29uSXNQcmVkaWNh dGUgKnByZWQgPSBvcC0+ZC5pc19qc29uLnByZWQ7CisJRGF0dW0JCWpzID0gKm9wLT5yZXN2 YWx1ZTsKKwlPaWQJCQlleHBydHlwZTsKKwlib29sCQlyZXM7CisKKwlpZiAoKm9wLT5yZXNu dWxsKQorCXsKKwkJKm9wLT5yZXN2YWx1ZSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCXJl dHVybjsKKwl9CisKKwlleHBydHlwZSA9IGV4cHJUeXBlKHByZWQtPmV4cHIpOworCisJaWYg KGV4cHJ0eXBlID09IFRFWFRPSUQgfHwgZXhwcnR5cGUgPT0gSlNPTk9JRCkKKwl7CisJCXRl eHQJICAgKmpzb24gPSBEYXR1bUdldFRleHRQKGpzKTsKKworCQlpZiAocHJlZC0+dmFsdWVf dHlwZSA9PSBKU19UWVBFX0FOWSkKKwkJCXJlcyA9IHRydWU7CisJCWVsc2UKKwkJeworCQkJ c3dpdGNoIChqc29uX2dldF9maXJzdF90b2tlbihqc29uLCBmYWxzZSkpCisJCQl7CisJCQkJ Y2FzZSBKU09OX1RPS0VOX09CSkVDVF9TVEFSVDoKKwkJCQkJcmVzID0gcHJlZC0+dmFsdWVf dHlwZSA9PSBKU19UWVBFX09CSkVDVDsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBKU09OX1RP S0VOX0FSUkFZX1NUQVJUOgorCQkJCQlyZXMgPSBwcmVkLT52YWx1ZV90eXBlID09IEpTX1RZ UEVfQVJSQVk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgSlNPTl9UT0tFTl9TVFJJTkc6CisJ CQkJY2FzZSBKU09OX1RPS0VOX05VTUJFUjoKKwkJCQljYXNlIEpTT05fVE9LRU5fVFJVRToK KwkJCQljYXNlIEpTT05fVE9LRU5fRkFMU0U6CisJCQkJY2FzZSBKU09OX1RPS0VOX05VTEw6 CisJCQkJCXJlcyA9IHByZWQtPnZhbHVlX3R5cGUgPT0gSlNfVFlQRV9TQ0FMQVI7CisJCQkJ CWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCXJlcyA9IGZhbHNlOworCQkJCQlicmVhazsK KwkJCX0KKwkJfQorCisJCS8qCisJCSAqIERvIGZ1bGwgcGFyc2luZyBwYXNzIG9ubHkgZm9y IHVuaXF1ZW5lc3MgY2hlY2sgb3IgZm9yCisJCSAqIEpTT04gdGV4dCB2YWxpZGF0aW9uLgor CQkgKi8KKwkJaWYgKHJlcyAmJiAocHJlZC0+dW5pcXVlX2tleXMgfHwgZXhwcnR5cGUgPT0g VEVYVE9JRCkpCisJCQlyZXMgPSBqc29uX3ZhbGlkYXRlKGpzb24sIHByZWQtPnVuaXF1ZV9r ZXlzLCBmYWxzZSk7CisJfQorCWVsc2UgaWYgKGV4cHJ0eXBlID09IEpTT05CT0lEKQorCXsK KwkJaWYgKHByZWQtPnZhbHVlX3R5cGUgPT0gSlNfVFlQRV9BTlkpCisJCQlyZXMgPSB0cnVl OworCQllbHNlCisJCXsKKwkJCUpzb25iCSAgICpqYiA9IERhdHVtR2V0SnNvbmJQKGpzKTsK KworCQkJc3dpdGNoIChwcmVkLT52YWx1ZV90eXBlKQorCQkJeworCQkJCWNhc2UgSlNfVFlQ RV9PQkpFQ1Q6CisJCQkJCXJlcyA9IEpCX1JPT1RfSVNfT0JKRUNUKGpiKTsKKwkJCQkJYnJl YWs7CisJCQkJY2FzZSBKU19UWVBFX0FSUkFZOgorCQkJCQlyZXMgPSBKQl9ST09UX0lTX0FS UkFZKGpiKSAmJiAhSkJfUk9PVF9JU19TQ0FMQVIoamIpOworCQkJCQlicmVhazsKKwkJCQlj YXNlIEpTX1RZUEVfU0NBTEFSOgorCQkJCQlyZXMgPSBKQl9ST09UX0lTX0FSUkFZKGpiKSAm JiBKQl9ST09UX0lTX1NDQUxBUihqYik7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJ CQkJCXJlcyA9IGZhbHNlOworCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCS8qIEtleSB1 bmlxdWVuZXNzIGNoZWNrIGlzIHJlZHVuZGFudCBmb3IganNvbmIgKi8KKwl9CisJZWxzZQor CQlyZXMgPSBmYWxzZTsKKworCSpvcC0+cmVzdmFsdWUgPSBCb29sR2V0RGF0dW0ocmVzKTsK K30KKwogLyoKICAqIEV4ZWNFdmFsR3JvdXBpbmdGdW5jCiAgKgpAQCAtNDM4NiwzICs0NTAz LDYxMiBAQCBFeGVjQWdnUGxhaW5UcmFuc0J5UmVmKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdn U3RhdGVQZXJUcmFucyBwZXJ0cmFucywKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRD b250ZXh0KTsKIH0KKworLyoKKyAqIEV2YWx1YXRlIGEgSlNPTiBjb25zdHJ1Y3RvciBleHBy ZXNzaW9uLgorICovCit2b2lkCitFeGVjRXZhbEpzb25Db25zdHJ1Y3RvcihFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0 KQoreworCURhdHVtCQlyZXM7CisJSnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciA9IG9wLT5k Lmpzb25fY29uc3RydWN0b3IuY29uc3RydWN0b3I7CisJYm9vbAkJaXNfanNvbmIgPSBjdG9y LT5yZXR1cm5pbmctPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0pTT05COwor CWJvb2wJCWlzbnVsbCA9IGZhbHNlOworCisJaWYgKGN0b3ItPnR5cGUgPT0gSlNDVE9SX0pT T05fQVJSQVkpCisJCXJlcyA9IChpc19qc29uYiA/CisJCQkgICBqc29uYl9idWlsZF9hcnJh eV93b3JrZXIgOgorCQkJICAganNvbl9idWlsZF9hcnJheV93b3JrZXIpKG9wLT5kLmpzb25f Y29uc3RydWN0b3IubmFyZ3MsCisJCQkJCQkJCQkJb3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5h cmdfdmFsdWVzLAorCQkJCQkJCQkJCW9wLT5kLmpzb25fY29uc3RydWN0b3IuYXJnX251bGxz LAorCQkJCQkJCQkJCW9wLT5kLmpzb25fY29uc3RydWN0b3IuYXJnX3R5cGVzLAorCQkJCQkJ CQkJCW9wLT5kLmpzb25fY29uc3RydWN0b3IuY29uc3RydWN0b3ItPmFic2VudF9vbl9udWxs KTsKKwllbHNlIGlmIChjdG9yLT50eXBlID09IEpTQ1RPUl9KU09OX09CSkVDVCkKKwkJcmVz ID0gKGlzX2pzb25iID8KKwkJCSAgIGpzb25iX2J1aWxkX29iamVjdF93b3JrZXIgOgorCQkJ ICAganNvbl9idWlsZF9vYmplY3Rfd29ya2VyKShvcC0+ZC5qc29uX2NvbnN0cnVjdG9yLm5h cmdzLAorCQkJCQkJCQkJCSBvcC0+ZC5qc29uX2NvbnN0cnVjdG9yLmFyZ192YWx1ZXMsCisJ CQkJCQkJCQkJIG9wLT5kLmpzb25fY29uc3RydWN0b3IuYXJnX251bGxzLAorCQkJCQkJCQkJ CSBvcC0+ZC5qc29uX2NvbnN0cnVjdG9yLmFyZ190eXBlcywKKwkJCQkJCQkJCQkgb3AtPmQu anNvbl9jb25zdHJ1Y3Rvci5jb25zdHJ1Y3Rvci0+YWJzZW50X29uX251bGwsCisJCQkJCQkJ CQkJIG9wLT5kLmpzb25fY29uc3RydWN0b3IuY29uc3RydWN0b3ItPnVuaXF1ZSk7CisJZWxz ZSBpZiAoY3Rvci0+dHlwZSA9PSBKU0NUT1JfSlNPTl9TQ0FMQVIpCisJeworCQlpZiAob3At PmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfbnVsbHNbMF0pCisJCXsKKwkJCXJlcyA9IChEYXR1 bSkgMDsKKwkJCWlzbnVsbCA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQlEYXR1bQkJ dmFsdWUgPSBvcC0+ZC5qc29uX2NvbnN0cnVjdG9yLmFyZ192YWx1ZXNbMF07CisJCQlpbnQJ CQljYXRlZ29yeSA9IG9wLT5kLmpzb25fY29uc3RydWN0b3IuYXJnX3R5cGVfY2FjaGVbMF0u Y2F0ZWdvcnk7CisJCQlPaWQJCQlvdXRmdW5jaWQgPSBvcC0+ZC5qc29uX2NvbnN0cnVjdG9y LmFyZ190eXBlX2NhY2hlWzBdLm91dGZ1bmNpZDsKKworCQkJaWYgKGlzX2pzb25iKQorCQkJ CXJlcyA9IHRvX2pzb25iX3dvcmtlcih2YWx1ZSwgY2F0ZWdvcnksIG91dGZ1bmNpZCk7CisJ CQllbHNlCisJCQkJcmVzID0gdG9fanNvbl93b3JrZXIodmFsdWUsIGNhdGVnb3J5LCBvdXRm dW5jaWQpOworCQl9CisJfQorCWVsc2UgaWYgKGN0b3ItPnR5cGUgPT0gSlNDVE9SX0pTT05f UEFSU0UpCisJeworCQlpZiAob3AtPmQuanNvbl9jb25zdHJ1Y3Rvci5hcmdfbnVsbHNbMF0p CisJCXsKKwkJCXJlcyA9IChEYXR1bSkgMDsKKwkJCWlzbnVsbCA9IHRydWU7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQlEYXR1bQkJdmFsdWUgPSBvcC0+ZC5qc29uX2NvbnN0cnVjdG9yLmFy Z192YWx1ZXNbMF07CisJCQl0ZXh0CSAgICpqcyA9IERhdHVtR2V0VGV4dFAodmFsdWUpOwor CisJCQlpZiAoaXNfanNvbmIpCisJCQkJcmVzID0ganNvbmJfZnJvbV90ZXh0KGpzLCB0cnVl KTsKKwkJCWVsc2UKKwkJCXsKKwkJCQkodm9pZCkganNvbl92YWxpZGF0ZShqcywgdHJ1ZSwg dHJ1ZSk7CisJCQkJcmVzID0gdmFsdWU7CisJCQl9CisJCX0KKwl9CisJZWxzZQorCXsKKwkJ cmVzID0gKERhdHVtKSAwOworCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uQ29uc3RydWN0 b3JFeHByIHR5cGUgJWQiLCBjdG9yLT50eXBlKTsKKwl9CisKKwkqb3AtPnJlc3ZhbHVlID0g cmVzOworCSpvcC0+cmVzbnVsbCA9IGlzbnVsbDsKK30KKworLyoKKyAqIEV2YWx1YXRlIGEg SlNPTiBlcnJvci9lbXB0eSBiZWhhdmlvciByZXN1bHQuCisgKi8KK3N0YXRpYyBEYXR1bQor RXhlY0V2YWxKc29uQmVoYXZpb3IoRXhwckNvbnRleHQgKmVjb250ZXh0LCBKc29uQmVoYXZp b3IgKmJlaGF2aW9yLAorCQkJCQkgRXhwclN0YXRlICpkZWZhdWx0X2VzdGF0ZSwgYm9vbCAq aXNfbnVsbCkKK3sKKwkqaXNfbnVsbCA9IGZhbHNlOworCisJc3dpdGNoIChiZWhhdmlvci0+ YnR5cGUpCisJeworCQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFlfQVJSQVk6CisJCQlyZXR1 cm4gSnNvbmJQR2V0RGF0dW0oSnNvbmJNYWtlRW1wdHlBcnJheSgpKTsKKworCQljYXNlIEpT T05fQkVIQVZJT1JfRU1QVFlfT0JKRUNUOgorCQkJcmV0dXJuIEpzb25iUEdldERhdHVtKEpz b25iTWFrZUVtcHR5T2JqZWN0KCkpOworCisJCWNhc2UgSlNPTl9CRUhBVklPUl9UUlVFOgor CQkJcmV0dXJuIEJvb2xHZXREYXR1bSh0cnVlKTsKKworCQljYXNlIEpTT05fQkVIQVZJT1Jf RkFMU0U6CisJCQlyZXR1cm4gQm9vbEdldERhdHVtKGZhbHNlKTsKKworCQljYXNlIEpTT05f QkVIQVZJT1JfTlVMTDoKKwkJY2FzZSBKU09OX0JFSEFWSU9SX1VOS05PV046CisJCQkqaXNf bnVsbCA9IHRydWU7CisJCQlyZXR1cm4gKERhdHVtKSAwOworCisJCWNhc2UgSlNPTl9CRUhB VklPUl9ERUZBVUxUOgorCQkJcmV0dXJuIEV4ZWNFdmFsRXhwcihkZWZhdWx0X2VzdGF0ZSwg ZWNvbnRleHQsIGlzX251bGwpOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIFNRTC9KU09OIGJlaGF2aW9yICVkIiwgYmVoYXZpb3ItPmJ0eXBlKTsKKwkJ CXJldHVybiAoRGF0dW0pIDA7CisJfQorfQorCisvKgorICogRXZhbHVhdGUgYSBjb2VyY2lv biBvZiBhIEpTT04gaXRlbSB0byB0aGUgdGFyZ2V0IHR5cGUuCisgKi8KK3N0YXRpYyBEYXR1 bQorRXhlY0V2YWxKc29uRXhwckNvZXJjaW9uKEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250 ZXh0ICplY29udGV4dCwKKwkJCQkJCSBEYXR1bSByZXMsIGJvb2wgKmlzTnVsbCwgdm9pZCAq cCwgYm9vbCAqZXJyb3IpCit7CisJRXhwclN0YXRlICplc3RhdGUgPSBwOworCisJaWYgKGVz dGF0ZSkJCS8qIGNvZXJjZSB1c2luZyBzcGVjaWZpZWQgZXhwcmVzc2lvbiAqLworCQlyZXR1 cm4gRXhlY0V2YWxFeHByKGVzdGF0ZSwgZWNvbnRleHQsIGlzTnVsbCk7CisKKwlpZiAob3At PmQuanNvbmV4cHIuanNleHByLT5vcCAhPSBJU19KU09OX0VYSVNUUykKKwl7CisJCUpzb25D b2VyY2lvbiAqY29lcmNpb24gPSBvcC0+ZC5qc29uZXhwci5qc2V4cHItPnJlc3VsdF9jb2Vy Y2lvbjsKKwkJSnNvbkV4cHIgICAqamV4cHIgPSBvcC0+ZC5qc29uZXhwci5qc2V4cHI7CisJ CUpzb25iCSAgICpqYiA9ICppc051bGwgPyBOVUxMIDogRGF0dW1HZXRKc29uYlAocmVzKTsK KworCQlpZiAoKGNvZXJjaW9uICYmIGNvZXJjaW9uLT52aWFfaW8pIHx8CisJCQkoamV4cHIt Pm9taXRfcXVvdGVzICYmICEqaXNOdWxsICYmCisJCQkgSkJfUk9PVF9JU19TQ0FMQVIoamIp KSkKKwkJeworCQkJLyogc3RyaXAgcXVvdGVzIGFuZCBjYWxsIHR5cGlucHV0IGZ1bmN0aW9u ICovCisJCQljaGFyCSAgICpzdHIgPSAqaXNOdWxsID8gTlVMTCA6IEpzb25iVW5xdW90ZShq Yik7CisKKwkJCXJldHVybiBJbnB1dEZ1bmN0aW9uQ2FsbCgmb3AtPmQuanNvbmV4cHIuaW5w dXQuZnVuYywgc3RyLAorCQkJCQkJCQkJIG9wLT5kLmpzb25leHByLmlucHV0LnR5cGlvcGFy YW0sCisJCQkJCQkJCQkgamV4cHItPnJldHVybmluZy0+dHlwbW9kKTsKKwkJfQorCQllbHNl IGlmIChjb2VyY2lvbiAmJiBjb2VyY2lvbi0+dmlhX3BvcHVsYXRlKQorCQkJcmV0dXJuIGpz b25fcG9wdWxhdGVfdHlwZShyZXMsIEpTT05CT0lELAorCQkJCQkJCQkJICBqZXhwci0+cmV0 dXJuaW5nLT50eXBpZCwKKwkJCQkJCQkJCSAgamV4cHItPnJldHVybmluZy0+dHlwbW9kLAor CQkJCQkJCQkJICAmb3AtPmQuanNvbmV4cHIuY2FjaGUsCisJCQkJCQkJCQkgIGVjb250ZXh0 LT5lY3h0X3Blcl9xdWVyeV9tZW1vcnksCisJCQkJCQkJCQkgIGlzTnVsbCk7CisJfQorCisJ aWYgKG9wLT5kLmpzb25leHByLnJlc3VsdF9leHByKQorCXsKKwkJb3AtPmQuanNvbmV4cHIu cmVzX2V4cHItPnZhbHVlID0gcmVzOworCQlvcC0+ZC5qc29uZXhwci5yZXNfZXhwci0+aXNu dWxsID0gKmlzTnVsbDsKKworCQlyZXMgPSBFeGVjRXZhbEV4cHIob3AtPmQuanNvbmV4cHIu cmVzdWx0X2V4cHIsIGVjb250ZXh0LCBpc051bGwpOworCX0KKworCXJldHVybiByZXM7Cit9 CisKKy8qCisgKiBFdmFsdWF0ZSBhIEpTT04gcGF0aCB2YXJpYWJsZSBjYWNoaW5nIGNvbXB1 dGVkIHZhbHVlLgorICovCitpbnQKK0V2YWxKc29uUGF0aFZhcih2b2lkICpjeHQsIGNoYXIg KnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCUpzb25iVmFsdWUgKnZhbCwgSnNvbmJW YWx1ZSAqYmFzZU9iamVjdCkKK3sKKwlKc29uUGF0aFZhcmlhYmxlRXZhbENvbnRleHQgKnZh ciA9IE5VTEw7CisJTGlzdAkgICAqdmFycyA9IGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlp bnQJCQlpZCA9IDE7CisKKwlpZiAoIXZhck5hbWUpCisJCXJldHVybiBsaXN0X2xlbmd0aCh2 YXJzKTsKKworCWZvcmVhY2gobGMsIHZhcnMpCisJeworCQl2YXIgPSBsZmlyc3QobGMpOwor CisJCWlmICghc3RybmNtcCh2YXItPm5hbWUsIHZhck5hbWUsIHZhck5hbWVMZW4pKQorCQkJ YnJlYWs7CisKKwkJdmFyID0gTlVMTDsKKwkJaWQrKzsKKwl9CisKKwlpZiAoIXZhcikKKwkJ cmV0dXJuIC0xOworCisJaWYgKCF2YXItPmV2YWx1YXRlZCkKKwl7CisJCXZhci0+dmFsdWUg PSBFeGVjRXZhbEV4cHIodmFyLT5lc3RhdGUsIHZhci0+ZWNvbnRleHQsICZ2YXItPmlzbnVs bCk7CisJCXZhci0+ZXZhbHVhdGVkID0gdHJ1ZTsKKwl9CisKKwlpZiAodmFyLT5pc251bGwp CisJeworCQl2YWwtPnR5cGUgPSBqYnZOdWxsOworCQlyZXR1cm4gMDsKKwl9CisKKwlKc29u SXRlbUZyb21EYXR1bSh2YXItPnZhbHVlLCB2YXItPnR5cGlkLCB2YXItPnR5cG1vZCwgdmFs KTsKKworCSpiYXNlT2JqZWN0ID0gKnZhbDsKKwlyZXR1cm4gaWQ7Cit9CisKKy8qCisgKiBQ cmVwYXJlIFNRTC9KU09OIGl0ZW0gY29lcmNpb24gdG8gdGhlIG91dHB1dCB0eXBlLiBSZXR1 cm5lZCBhIGRhdHVtIG9mIHRoZQorICogY29ycmVzcG9uZGluZyBTUUwgdHlwZSBhbmQgYSBw b2ludGVyIHRvIHRoZSBjb2VyY2lvbiBzdGF0ZS4KKyAqLworRGF0dW0KK0V4ZWNQcmVwYXJl SnNvbkl0ZW1Db2VyY2lvbihKc29uYlZhbHVlICppdGVtLAorCQkJCQkJCUpzb25SZXR1cm5p bmcgKnJldHVybmluZywKKwkJCQkJCQlzdHJ1Y3QgSnNvbkNvZXJjaW9uc1N0YXRlICpjb2Vy Y2lvbnMsCisJCQkJCQkJc3RydWN0IEpzb25Db2VyY2lvblN0YXRlICoqcGNvZXJjaW9uKQor eworCXN0cnVjdCBKc29uQ29lcmNpb25TdGF0ZSAqY29lcmNpb247CisJRGF0dW0JCXJlczsK KwlKc29uYlZhbHVlCWJ1ZjsKKworCWlmIChpdGVtLT50eXBlID09IGpidkJpbmFyeSAmJgor CQlKc29uQ29udGFpbmVySXNTY2FsYXIoaXRlbS0+dmFsLmJpbmFyeS5kYXRhKSkKKwl7CisJ CWJvb2wJCXJlcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwkJcmVzID0gSnNvbmJF eHRyYWN0U2NhbGFyKGl0ZW0tPnZhbC5iaW5hcnkuZGF0YSwgJmJ1Zik7CisJCWl0ZW0gPSAm YnVmOworCQlBc3NlcnQocmVzKTsKKwl9CisKKwkvKiBnZXQgY29lcmNpb24gc3RhdGUgcmVm ZXJlbmNlIGFuZCBkYXR1bSBvZiB0aGUgY29ycmVzcG9uZGluZyBTUUwgdHlwZSAqLworCXN3 aXRjaCAoaXRlbS0+dHlwZSkKKwl7CisJCWNhc2UgamJ2TnVsbDoKKwkJCWNvZXJjaW9uID0g JmNvZXJjaW9ucy0+bnVsbDsKKwkJCXJlcyA9IChEYXR1bSkgMDsKKwkJCWJyZWFrOworCisJ CWNhc2UgamJ2U3RyaW5nOgorCQkJY29lcmNpb24gPSAmY29lcmNpb25zLT5zdHJpbmc7CisJ CQlyZXMgPSBQb2ludGVyR2V0RGF0dW0oCisJCQkJY3N0cmluZ190b190ZXh0X3dpdGhfbGVu KGl0ZW0tPnZhbC5zdHJpbmcudmFsLAorCQkJCQkJCQkJCSBpdGVtLT52YWwuc3RyaW5nLmxl bikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZOdW1lcmljOgorCQkJY29lcmNpb24gPSAm Y29lcmNpb25zLT5udW1lcmljOworCQkJcmVzID0gTnVtZXJpY0dldERhdHVtKGl0ZW0tPnZh bC5udW1lcmljKTsKKwkJCWJyZWFrOworCisJCWNhc2UgamJ2Qm9vbDoKKwkJCWNvZXJjaW9u ID0gJmNvZXJjaW9ucy0+Ym9vbGVhbjsKKwkJCXJlcyA9IEJvb2xHZXREYXR1bShpdGVtLT52 YWwuYm9vbGVhbik7CisJCQlicmVhazsKKworCQljYXNlIGpidkRhdGV0aW1lOgorCQkJcmVz ID0gaXRlbS0+dmFsLmRhdGV0aW1lLnZhbHVlOworCQkJc3dpdGNoIChpdGVtLT52YWwuZGF0 ZXRpbWUudHlwaWQpCisJCQl7CisJCQkJY2FzZSBEQVRFT0lEOgorCQkJCQljb2VyY2lvbiA9 ICZjb2VyY2lvbnMtPmRhdGU7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgVElNRU9JRDoKKwkJ CQkJY29lcmNpb24gPSAmY29lcmNpb25zLT50aW1lOworCQkJCQlicmVhazsKKwkJCQljYXNl IFRJTUVUWk9JRDoKKwkJCQkJY29lcmNpb24gPSAmY29lcmNpb25zLT50aW1ldHo7CisJCQkJ CWJyZWFrOworCQkJCWNhc2UgVElNRVNUQU1QT0lEOgorCQkJCQljb2VyY2lvbiA9ICZjb2Vy Y2lvbnMtPnRpbWVzdGFtcDsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FU1RBTVBUWk9J RDoKKwkJCQkJY29lcmNpb24gPSAmY29lcmNpb25zLT50aW1lc3RhbXB0ejsKKwkJCQkJYnJl YWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQganNvbmIg ZGF0ZXRpbWUgdHlwZSBvaWQgJWQiLAorCQkJCQkJIGl0ZW0tPnZhbC5kYXRldGltZS50eXBp ZCk7CisJCQkJCXJldHVybiAoRGF0dW0pIDA7CisJCQl9CisJCQlicmVhazsKKworCQljYXNl IGpidkFycmF5OgorCQljYXNlIGpidk9iamVjdDoKKwkJY2FzZSBqYnZCaW5hcnk6CisJCQlj b2VyY2lvbiA9ICZjb2VyY2lvbnMtPmNvbXBvc2l0ZTsKKwkJCXJlcyA9IEpzb25iUEdldERh dHVtKEpzb25iVmFsdWVUb0pzb25iKGl0ZW0pKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6 CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBqc29uYiB2YWx1ZSB0eXBlICVkIiwgaXRl bS0+dHlwZSk7CisJCQlyZXR1cm4gKERhdHVtKSAwOworCX0KKworCSpwY29lcmNpb24gPSBj b2VyY2lvbjsKKworCXJldHVybiByZXM7Cit9CisKK3R5cGVkZWYgRGF0dW0gKCpKc29uRnVu YykoRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJICBE YXR1bSBpdGVtLCBib29sICpyZXNudWxsLCB2b2lkICpwLCBib29sICplcnJvcik7CisKK3N0 YXRpYyBEYXR1bQorRXhlY0V2YWxKc29uRXhwclN1YnRyYW5zKEpzb25GdW5jIGZ1bmMsIEV4 cHJFdmFsU3RlcCAqb3AsCisJCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJ IERhdHVtIHJlcywgYm9vbCAqcmVzbnVsbCwKKwkJCQkJCSB2b2lkICpwLCBib29sICplcnJv ciwgYm9vbCBzdWJ0cmFucykKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJUmVz b3VyY2VPd25lciBvbGRvd25lcjsKKworCWlmICghc3VidHJhbnMpCisJCS8qIE5vIG5lZWQg dG8gdXNlIHN1YnRyYW5zYWN0aW9ucy4gKi8KKwkJcmV0dXJuIGZ1bmMob3AsIGVjb250ZXh0 LCByZXMsIHJlc251bGwsIHAsIGVycm9yKTsKKworCS8qCisJICogV2Ugc2hvdWxkIGNhdGNo IGV4Y2VwdGlvbnMgb2YgY2F0ZWdvcnkgRVJSQ09ERV9EQVRBX0VYQ0VQVElPTgorCSAqIGFu ZCBleGVjdXRlIHRoZSBjb3JyZXNwb25kaW5nIE9OIEVSUk9SIGJlaGF2aW9yIHRoZW4uCisJ ICovCisJb2xkY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCW9sZG93bmVyID0g Q3VycmVudFJlc291cmNlT3duZXI7CisKKwlBc3NlcnQoZXJyb3IpOworCisJQmVnaW5JbnRl cm5hbFN1YlRyYW5zYWN0aW9uKE5VTEwpOworCS8qIFdhbnQgdG8gZXhlY3V0ZSBleHByZXNz aW9ucyBpbnNpZGUgZnVuY3Rpb24ncyBtZW1vcnkgY29udGV4dCAqLworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCVBHX1RSWSgpOworCXsKKwkJcmVzID0gZnVu YyhvcCwgZWNvbnRleHQsIHJlcywgcmVzbnVsbCwgcCwgZXJyb3IpOworCisJCS8qIENvbW1p dCB0aGUgaW5uZXIgdHJhbnNhY3Rpb24sIHJldHVybiB0byBvdXRlciB4YWN0IGNvbnRleHQg Ki8KKwkJUmVsZWFzZUN1cnJlbnRTdWJUcmFuc2FjdGlvbigpOworCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xkb3du ZXI7CisJfQorCVBHX0NBVENIKCk7CisJeworCQlFcnJvckRhdGEgICplZGF0YTsKKworCQkv KiBTYXZlIGVycm9yIGluZm8gaW4gb2xkY29udGV4dCAqLworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisJCWVkYXRhID0gQ29weUVycm9yRGF0YSgpOworCQlGbHVz aEVycm9yU3RhdGUoKTsKKworCQkvKiBBYm9ydCB0aGUgaW5uZXIgdHJhbnNhY3Rpb24gKi8K KwkJUm9sbGJhY2tBbmRSZWxlYXNlQ3VycmVudFN1YlRyYW5zYWN0aW9uKCk7CisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJQ3VycmVudFJlc291cmNlT3duZXIg PSBvbGRvd25lcjsKKworCQlpZiAoRVJSQ09ERV9UT19DQVRFR09SWShlZGF0YS0+c3FsZXJy Y29kZSkgIT0KKwkJCUVSUkNPREVfREFUQV9FWENFUFRJT04pCisJCQlSZVRocm93RXJyb3Io ZWRhdGEpOworCisJCXJlcyA9IChEYXR1bSkgMDsKKwkJKmVycm9yID0gdHJ1ZTsKKwl9CisJ UEdfRU5EX1RSWSgpOworCisJcmV0dXJuIHJlczsKK30KKworCit0eXBlZGVmIHN0cnVjdAor eworCUpzb25QYXRoICAgKnBhdGg7CisJYm9vbAkgICAqZXJyb3I7CisJYm9vbAkJY29lcmNp b25JblN1YnRyYW5zOworfSBFeGVjRXZhbEpzb25FeHByQ29udGV4dDsKKworc3RhdGljIERh dHVtCitFeGVjRXZhbEpzb25FeHByKEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwKKwkJCQkgRGF0dW0gaXRlbSwgYm9vbCAqcmVzbnVsbCwgdm9pZCAqcGN4dCwK KwkJCQkgYm9vbCAqZXJyb3IpCit7CisJRXhlY0V2YWxKc29uRXhwckNvbnRleHQgKmN4dCA9 IHBjeHQ7CisJSnNvblBhdGggICAqcGF0aCA9IGN4dC0+cGF0aDsKKwlKc29uRXhwciAgICpq ZXhwciA9IG9wLT5kLmpzb25leHByLmpzZXhwcjsKKwlFeHByU3RhdGUgICplc3RhdGUgPSBO VUxMOworCWJvb2wJCWVtcHR5ID0gZmFsc2U7CisJRGF0dW0JCXJlcyA9IChEYXR1bSkgMDsK KworCXN3aXRjaCAoamV4cHItPm9wKQorCXsKKwkJY2FzZSBJU19KU09OX1FVRVJZOgorCQkJ cmVzID0gSnNvblBhdGhRdWVyeShpdGVtLCBwYXRoLCBqZXhwci0+d3JhcHBlciwgJmVtcHR5 LCBlcnJvciwKKwkJCQkJCQkJb3AtPmQuanNvbmV4cHIuYXJncyk7CisJCQlpZiAoZXJyb3Ig JiYgKmVycm9yKQorCQkJeworCQkJCSpyZXNudWxsID0gdHJ1ZTsKKwkJCQlyZXR1cm4gKERh dHVtKSAwOworCQkJfQorCQkJKnJlc251bGwgPSAhRGF0dW1HZXRQb2ludGVyKHJlcyk7CisJ CQlicmVhazsKKworCQljYXNlIElTX0pTT05fVkFMVUU6CisJCQl7CisJCQkJc3RydWN0IEpz b25Db2VyY2lvblN0YXRlICpqY3N0YXRlOworCQkJCUpzb25iVmFsdWUgKmpidiA9IEpzb25Q YXRoVmFsdWUoaXRlbSwgcGF0aCwgJmVtcHR5LCBlcnJvciwKKwkJCQkJCQkJCQkJCW9wLT5k Lmpzb25leHByLmFyZ3MpOworCisJCQkJaWYgKGVycm9yICYmICplcnJvcikKKwkJCQkJcmV0 dXJuIChEYXR1bSkgMDsKKworCQkJCWlmICghamJ2KQkvKiBOVUxMIG9yIGVtcHR5ICovCisJ CQkJCWJyZWFrOworCisJCQkJQXNzZXJ0KCFlbXB0eSk7CisKKwkJCQkqcmVzbnVsbCA9IGZh bHNlOworCisJCQkJLyogY29lcmNlIHNjYWxhciBpdGVtIHRvIHRoZSBvdXRwdXQgdHlwZSAq LworCQkJCWlmIChqZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBKU09OT0lEIHx8CisJCQkJ CWpleHByLT5yZXR1cm5pbmctPnR5cGlkID09IEpTT05CT0lEKQorCQkJCXsKKwkJCQkJLyog VXNlIHJlc3VsdCBjb2VyY2lvbiBmcm9tIGpzb25bYl0gdG8gdGhlIG91dHB1dCB0eXBlICov CisJCQkJCXJlcyA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGpidikpOwor CQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQkvKiBVc2UgY29lcmNpb24gZnJvbSBTUUwvSlNP TiBpdGVtIHR5cGUgdG8gdGhlIG91dHB1dCB0eXBlICovCisJCQkJcmVzID0gRXhlY1ByZXBh cmVKc29uSXRlbUNvZXJjaW9uKGpidiwKKwkJCQkJCQkJCQkJCSAgb3AtPmQuanNvbmV4cHIu anNleHByLT5yZXR1cm5pbmcsCisJCQkJCQkJCQkJCQkgICZvcC0+ZC5qc29uZXhwci5jb2Vy Y2lvbnMsCisJCQkJCQkJCQkJCQkgICZqY3N0YXRlKTsKKworCQkJCWlmIChqY3N0YXRlLT5j b2VyY2lvbiAmJgorCQkJCQkoamNzdGF0ZS0+Y29lcmNpb24tPnZpYV9pbyB8fAorCQkJCQkg amNzdGF0ZS0+Y29lcmNpb24tPnZpYV9wb3B1bGF0ZSkpCisJCQkJeworCQkJCQlpZiAoZXJy b3IpCisJCQkJCXsKKwkJCQkJCSplcnJvciA9IHRydWU7CisJCQkJCQlyZXR1cm4gKERhdHVt KSAwOworCQkJCQl9CisJCQkJCS8qCisJCQkJCSAqIENvZXJjaW9uIHZpYSBJL08gbWVhbnMg aGVyZSB0aGF0IHRoZSBjYXN0IHRvIHRoZSB0YXJnZXQKKwkJCQkJICogdHlwZSBzaW1wbHkg ZG9lcyBub3QgZXhpc3QuCisJCQkJCSAqLworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CS8qCisJCQkJCQkJICogWFhYIFN0YW5kYXJkIHNheXMgYWJvdXQgYSBzZXBhcmF0ZSBlcnJv ciBjb2RlCisJCQkJCQkJICogRVJSQ09ERV9TUUxfSlNPTl9JVEVNX0NBTk5PVF9CRV9DQVNU X1RPX1RBUkdFVF9UWVBFCisJCQkJCQkJICogYnV0IGRvZXMgbm90IGRlZmluZSBpdHMgbnVt YmVyLgorCQkJCQkJCSAqLworCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1FMX0pTT05fU0NB TEFSX1JFUVVJUkVEKSwKKwkJCQkJCQkgZXJybXNnKCJTUUwvSlNPTiBpdGVtIGNhbm5vdCBi ZSBjYXN0IHRvIHRhcmdldCB0eXBlIikpKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIWpjc3Rh dGUtPmVzdGF0ZSkKKwkJCQkJcmV0dXJuIHJlczsJCS8qIG5vIGNvZXJjaW9uICovCisKKwkJ CQkvKiBjb2VyY2UgdXNpbmcgc3BlY2lmaWMgZXhwcmVzc2lvbiAqLworCQkJCWVzdGF0ZSA9 IGpjc3RhdGUtPmVzdGF0ZTsKKwkJCQlvcC0+ZC5qc29uZXhwci5jb2VyY2lvbl9leHByLT52 YWx1ZSA9IHJlczsKKwkJCQlvcC0+ZC5qc29uZXhwci5jb2VyY2lvbl9leHByLT5pc251bGwg PSAqcmVzbnVsbDsKKwkJCQlicmVhazsKKwkJCX0KKworCQljYXNlIElTX0pTT05fRVhJU1RT OgorCQkJeworCQkJCWJvb2wJCWV4aXN0cyA9IEpzb25QYXRoRXhpc3RzKGl0ZW0sIHBhdGgs CisJCQkJCQkJCQkJCQkJb3AtPmQuanNvbmV4cHIuYXJncywKKwkJCQkJCQkJCQkJCQllcnJv cik7CisKKwkJCQkqcmVzbnVsbCA9IGVycm9yICYmICplcnJvcjsKKwkJCQlyZXMgPSBCb29s R2V0RGF0dW0oZXhpc3RzKTsKKworCQkJCWlmICghb3AtPmQuanNvbmV4cHIucmVzdWx0X2V4 cHIpCisJCQkJCXJldHVybiByZXM7CisKKwkJCQkvKiBjb2VyY2UgdXNpbmcgcmVzdWx0IGV4 cHJlc3Npb24gKi8KKwkJCQllc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5yZXN1bHRfZXhwcjsK KwkJCQlvcC0+ZC5qc29uZXhwci5yZXNfZXhwci0+dmFsdWUgPSByZXM7CisJCQkJb3AtPmQu anNvbmV4cHIucmVzX2V4cHItPmlzbnVsbCA9ICpyZXNudWxsOworCQkJCWJyZWFrOworCQkJ fQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9KU09O IGV4cHJlc3Npb24gb3AgJWQiLCBqZXhwci0+b3ApOworCQkJcmV0dXJuIChEYXR1bSkgMDsK Kwl9CisKKwlpZiAoZW1wdHkpCisJeworCQlBc3NlcnQoamV4cHItPm9uX2VtcHR5KTsJLyog aXQgaXMgbm90IEpTT05fRVhJU1RTICovCisKKwkJaWYgKGpleHByLT5vbl9lbXB0eS0+YnR5 cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJeworCQkJaWYgKGVycm9yKQorCQkJewor CQkJCSplcnJvciA9IHRydWU7CisJCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJCX0KKworCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9OT19TUUxfSlNPTl9JVEVN KSwKKwkJCQkJIGVycm1zZygibm8gU1FML0pTT04gaXRlbSIpKSk7CisJCX0KKworCQlpZiAo amV4cHItPm9uX2VtcHR5LT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpCisJCQkv KgorCQkJICogRXhlY3V0ZSBERUZBVUxUIGV4cHJlc3Npb24gYXMgYSBjb2VyY2lvbiBleHBy ZXNzaW9uLCBiZWNhdXNlCisJCQkgKiBpdHMgcmVzdWx0IGlzIGFscmVhZHkgY29lcmNlZCB0 byB0aGUgdGFyZ2V0IHR5cGUuCisJCQkgKi8KKwkJCWVzdGF0ZSA9IG9wLT5kLmpzb25leHBy LmRlZmF1bHRfb25fZW1wdHk7CisJCWVsc2UKKwkJCS8qIEV4ZWN1dGUgT04gRU1QVFkgYmVo YXZpb3IgKi8KKwkJCXJlcyA9IEV4ZWNFdmFsSnNvbkJlaGF2aW9yKGVjb250ZXh0LCBqZXhw ci0+b25fZW1wdHksCisJCQkJCQkJCQkgICBvcC0+ZC5qc29uZXhwci5kZWZhdWx0X29uX2Vt cHR5LAorCQkJCQkJCQkJICAgcmVzbnVsbCk7CisJfQorCisJcmV0dXJuIEV4ZWNFdmFsSnNv bkV4cHJTdWJ0cmFucyhFeGVjRXZhbEpzb25FeHByQ29lcmNpb24sIG9wLCBlY29udGV4dCwK KwkJCQkJCQkJCXJlcywgcmVzbnVsbCwgZXN0YXRlLCBlcnJvciwKKwkJCQkJCQkJCWN4dC0+ Y29lcmNpb25JblN1YnRyYW5zKTsKK30KKworYm9vbAorRXhlY0V2YWxKc29uTmVlZHNTdWJU cmFuc2FjdGlvbihKc29uRXhwciAqanNleHByLAorCQkJCQkJCQlzdHJ1Y3QgSnNvbkNvZXJj aW9uc1N0YXRlICpjb2VyY2lvbnMpCit7CisJaWYgKGpzZXhwci0+b25fZXJyb3ItPmJ0eXBl ID09IEpTT05fQkVIQVZJT1JfRVJST1IpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChqc2V4 cHItPm9wID09IElTX0pTT05fRVhJU1RTICYmICFqc2V4cHItPnJlc3VsdF9jb2VyY2lvbikK KwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFjb2VyY2lvbnMpCisJCXJldHVybiB0cnVlOwor CisJcmV0dXJuIGZhbHNlOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0V2YWxKc29u CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNFdmFsSnNvbihFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJRXhl Y0V2YWxKc29uRXhwckNvbnRleHQgY3h0OworCUpzb25FeHByICAgKmpleHByID0gb3AtPmQu anNvbmV4cHIuanNleHByOworCURhdHVtCQlpdGVtOworCURhdHVtCQlyZXMgPSAoRGF0dW0p IDA7CisJSnNvblBhdGggICAqcGF0aDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlib29sCQllcnJv ciA9IGZhbHNlOworCWJvb2wJCW5lZWRTdWJ0cmFuczsKKwlib29sCQl0aHJvd0Vycm9ycyA9 IGpleHByLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKworCSpv cC0+cmVzbnVsbCA9IHRydWU7CQkvKiB1bnRpbCB3ZSBnZXQgYSByZXN1bHQgKi8KKwkqb3At PnJlc3ZhbHVlID0gKERhdHVtKSAwOworCisJaWYgKG9wLT5kLmpzb25leHByLmZvcm1hdHRl ZF9leHByLT5pc251bGwgfHwgb3AtPmQuanNvbmV4cHIucGF0aHNwZWMtPmlzbnVsbCkKKwl7 CisJCS8qIGV4ZWN1dGUgZG9tYWluIGNoZWNrcyBmb3IgTlVMTHMgKi8KKwkJKHZvaWQpIEV4 ZWNFdmFsSnNvbkV4cHJDb2VyY2lvbihvcCwgZWNvbnRleHQsIHJlcywgb3AtPnJlc251bGws CisJCQkJCQkJCQkJTlVMTCwgTlVMTCk7CisKKwkJQXNzZXJ0KCpvcC0+cmVzbnVsbCk7CisJ CXJldHVybjsKKwl9CisKKwlpdGVtID0gb3AtPmQuanNvbmV4cHIuZm9ybWF0dGVkX2V4cHIt PnZhbHVlOworCXBhdGggPSBEYXR1bUdldEpzb25QYXRoUChvcC0+ZC5qc29uZXhwci5wYXRo c3BlYy0+dmFsdWUpOworCisJLyogcmVzZXQgSlNPTiBwYXRoIHZhcmlhYmxlIGNvbnRleHRz ICovCisJZm9yZWFjaChsYywgb3AtPmQuanNvbmV4cHIuYXJncykKKwl7CisJCUpzb25QYXRo VmFyaWFibGVFdmFsQ29udGV4dCAqdmFyID0gbGZpcnN0KGxjKTsKKworCQl2YXItPmVjb250 ZXh0ID0gZWNvbnRleHQ7CisJCXZhci0+ZXZhbHVhdGVkID0gZmFsc2U7CisJfQorCisJbmVl ZFN1YnRyYW5zID0gRXhlY0V2YWxKc29uTmVlZHNTdWJUcmFuc2FjdGlvbihqZXhwciwgJm9w LT5kLmpzb25leHByLmNvZXJjaW9ucyk7CisKKwljeHQucGF0aCA9IHBhdGg7CisJY3h0LmVy cm9yID0gdGhyb3dFcnJvcnMgPyBOVUxMIDogJmVycm9yOworCWN4dC5jb2VyY2lvbkluU3Vi dHJhbnMgPSAhbmVlZFN1YnRyYW5zICYmICF0aHJvd0Vycm9yczsKKwlBc3NlcnQoIW5lZWRT dWJ0cmFucyB8fCBjeHQuZXJyb3IpOworCisJcmVzID0gRXhlY0V2YWxKc29uRXhwclN1YnRy YW5zKEV4ZWNFdmFsSnNvbkV4cHIsIG9wLCBlY29udGV4dCwgaXRlbSwKKwkJCQkJCQkJICAg b3AtPnJlc251bGwsICZjeHQsIGN4dC5lcnJvciwKKwkJCQkJCQkJICAgbmVlZFN1YnRyYW5z KTsKKworCWlmIChlcnJvcikKKwl7CisJCS8qIEV4ZWN1dGUgT04gRVJST1IgYmVoYXZpb3Ig Ki8KKwkJcmVzID0gRXhlY0V2YWxKc29uQmVoYXZpb3IoZWNvbnRleHQsIGpleHByLT5vbl9l cnJvciwKKwkJCQkJCQkJICAgb3AtPmQuanNvbmV4cHIuZGVmYXVsdF9vbl9lcnJvciwKKwkJ CQkJCQkJICAgb3AtPnJlc251bGwpOworCisJCS8qIHJlc3VsdCBpcyBhbHJlYWR5IGNvZXJj ZWQgaW4gREVGQVVMVCBiZWhhdmlvciBjYXNlICovCisJCWlmIChqZXhwci0+b25fZXJyb3It PmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfREVGQVVMVCkKKwkJCXJlcyA9IEV4ZWNFdmFsSnNv bkV4cHJDb2VyY2lvbihvcCwgZWNvbnRleHQsIHJlcywKKwkJCQkJCQkJCQkgICBvcC0+cmVz bnVsbCwKKwkJCQkJCQkJCQkgICBOVUxMLCBOVUxMKTsKKwl9CisKKwkqb3AtPnJlc3ZhbHVl ID0gcmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9l eHByLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCBiZDg2 ZjU0NmQ3Li45YzhmMzQxZDk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9s bHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIu YwpAQCAtMjM0OCw2ICsyMzQ4LDI0IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAq c3RhdGUpCiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQli cmVhazsKIAorCQkJY2FzZSBFRU9QX0pTT05fQ09OU1RSVUNUT1I6CisJCQkJYnVpbGRfRXZh bFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsSnNvbkNvbnN0cnVjdG9yIiwKKwkJCQkJCQkJdl9z dGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29w bm8gKyAxXSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRUVPUF9JU19KU09OOgorCQkJCWJ1 aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25Jc1ByZWRpY2F0ZSIsCisJCQkJ CQkJCXZfc3RhdGUsIG9wKTsKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsg MV0pOworCQkJCWJyZWFrOworCisJCQljYXNlIEVFT1BfSlNPTkVYUFI6CisJCQkJYnVpbGRf RXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsSnNvbiIsCisJCQkJCQkJCXZfc3RhdGUsIG9w LCB2X2Vjb250ZXh0KTsKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0p OworCQkJCWJyZWFrOworCiAJCQljYXNlIEVFT1BfTEFTVDoKIAkJCQlBc3NlcnQoZmFsc2Up OwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWpp dF90eXBlcy5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4 IGQ1MTkxY2YwMmIuLmIyYmRhODY4ODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9s bHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0 X3R5cGVzLmMKQEAgLTEzMSw2ICsxMzEsOSBAQCB2b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0 aW9uc1tdID0KIAlFeGVjRXZhbFN5c1ZhciwKIAlFeGVjRXZhbFdob2xlUm93VmFyLAogCUV4 ZWNFdmFsWG1sRXhwciwKKwlFeGVjRXZhbEpzb25Db25zdHJ1Y3RvciwKKwlFeGVjRXZhbEpz b25Jc1ByZWRpY2F0ZSwKKwlFeGVjRXZhbEpzb24sCiAJTWFrZUV4cGFuZGVkT2JqZWN0UmVh ZE9ubHlJbnRlcm5hbCwKIAlzbG90X2dldG1pc3NpbmdhdHRycywKIAlzbG90X2dldHNvbWVh dHRyc19pbnQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBi L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IGQ0Zjg0NTVhMmIuLmMzMjQy YWY4ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0yMjk4LDYgKzIyOTgsMzczIEBA IF9jb3B5T25Db25mbGljdEV4cHIoY29uc3QgT25Db25mbGljdEV4cHIgKmZyb20pCiAJcmV0 dXJuIG5ld25vZGU7CiB9CiAKKworLyoKKyAqIF9jb3B5SnNvbkZvcm1hdAorICovCitzdGF0 aWMgSnNvbkZvcm1hdCAqCitfY29weUpzb25Gb3JtYXQoY29uc3QgSnNvbkZvcm1hdCAqZnJv bSkKK3sKKwlKc29uRm9ybWF0ICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbkZvcm1hdCk7CisK KwlDT1BZX1NDQUxBUl9GSUVMRChmb3JtYXRfdHlwZSk7CisJQ09QWV9TQ0FMQVJfRklFTEQo ZW5jb2RpbmcpOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJu IG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25SZXR1cm5pbmcKKyAqLworc3RhdGlj IEpzb25SZXR1cm5pbmcgKgorX2NvcHlKc29uUmV0dXJuaW5nKGNvbnN0IEpzb25SZXR1cm5p bmcgKmZyb20pCit7CisJSnNvblJldHVybmluZyAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25S ZXR1cm5pbmcpOworCisJQ09QWV9OT0RFX0ZJRUxEKGZvcm1hdCk7CisJQ09QWV9TQ0FMQVJf RklFTEQodHlwaWQpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHR5cG1vZCk7CisKKwlyZXR1cm4g bmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvblZhbHVlRXhwcgorICovCitzdGF0aWMg SnNvblZhbHVlRXhwciAqCitfY29weUpzb25WYWx1ZUV4cHIoY29uc3QgSnNvblZhbHVlRXhw ciAqZnJvbSkKK3sKKwlKc29uVmFsdWVFeHByICAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25W YWx1ZUV4cHIpOworCisJQ09QWV9OT0RFX0ZJRUxEKHJhd19leHByKTsKKwlDT1BZX05PREVf RklFTEQoZm9ybWF0dGVkX2V4cHIpOworCUNPUFlfTk9ERV9GSUVMRChmb3JtYXQpOworCisJ cmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25TY2FsYXJFeHByCisgKi8K K3N0YXRpYyBKc29uU2NhbGFyRXhwciAqCitfY29weUpzb25TY2FsYXJFeHByKGNvbnN0IEpz b25TY2FsYXJFeHByICpmcm9tKQoreworCUpzb25TY2FsYXJFeHByICpuZXdub2RlID0gbWFr ZU5vZGUoSnNvblNjYWxhckV4cHIpOworCisJQ09QWV9OT0RFX0ZJRUxEKGV4cHIpOworCUNP UFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisK Ky8qCisgKiBfY29weUpzb25TZXJpYWxpemVFeHByCisgKi8KK3N0YXRpYyBKc29uU2VyaWFs aXplRXhwciAqCitfY29weUpzb25TZXJpYWxpemVFeHByKGNvbnN0IEpzb25TZXJpYWxpemVF eHByICpmcm9tKQoreworCUpzb25TZXJpYWxpemVFeHByICpuZXdub2RlID0gbWFrZU5vZGUo SnNvblNlcmlhbGl6ZUV4cHIpOworCisJQ09QWV9OT0RFX0ZJRUxEKGV4cHIpOworCUNPUFlf Tk9ERV9GSUVMRChvdXRwdXQpOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwor CisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25Db25zdHJ1Y3RvckV4 cHIKKyAqLworc3RhdGljIEpzb25Db25zdHJ1Y3RvckV4cHIgKgorX2NvcHlKc29uQ29uc3Ry dWN0b3JFeHByKGNvbnN0IEpzb25Db25zdHJ1Y3RvckV4cHIgKmZyb20pCit7CisJSnNvbkNv bnN0cnVjdG9yRXhwciAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25Db25zdHJ1Y3RvckV4cHIp OworCisJQ09QWV9TQ0FMQVJfRklFTEQodHlwZSk7CisJQ09QWV9OT0RFX0ZJRUxEKGFyZ3Mp OworCUNPUFlfTk9ERV9GSUVMRChmdW5jKTsKKwlDT1BZX05PREVfRklFTEQoY29lcmNpb24p OworCUNPUFlfTk9ERV9GSUVMRChyZXR1cm5pbmcpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGFi c2VudF9vbl9udWxsKTsKKwlDT1BZX1NDQUxBUl9GSUVMRCh1bmlxdWUpOworCUNPUFlfTE9D QVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisg KiBfY29weUpzb25LZXlWYWx1ZQorICovCitzdGF0aWMgSnNvbktleVZhbHVlICoKK19jb3B5 SnNvbktleVZhbHVlKGNvbnN0IEpzb25LZXlWYWx1ZSAqZnJvbSkKK3sKKwlKc29uS2V5VmFs dWUgKm5ld25vZGUgPSBtYWtlTm9kZShKc29uS2V5VmFsdWUpOworCisJQ09QWV9OT0RFX0ZJ RUxEKGtleSk7CisJQ09QWV9OT0RFX0ZJRUxEKHZhbHVlKTsKKworCXJldHVybiBuZXdub2Rl OworfQorCisvKgorICogX2NvcHlKc29uT2JqZWN0Q29uc3RydWN0b3IKKyAqLworc3RhdGlj IEpzb25PYmplY3RDb25zdHJ1Y3RvciAqCitfY29weUpzb25PYmplY3RDb25zdHJ1Y3Rvcihj b25zdCBKc29uT2JqZWN0Q29uc3RydWN0b3IgKmZyb20pCit7CisJSnNvbk9iamVjdENvbnN0 cnVjdG9yICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbk9iamVjdENvbnN0cnVjdG9yKTsKKwor CUNPUFlfTk9ERV9GSUVMRChleHBycyk7CisJQ09QWV9OT0RFX0ZJRUxEKG91dHB1dCk7CisJ Q09QWV9TQ0FMQVJfRklFTEQoYWJzZW50X29uX251bGwpOworCUNPUFlfU0NBTEFSX0ZJRUxE KHVuaXF1ZSk7CisJQ09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4g bmV3bm9kZTsKK30KKworLyoKKyAqIF9jb3B5SnNvbkFnZ0NvbnN0cnVjdG9yCisgKi8KK3N0 YXRpYyBKc29uQWdnQ29uc3RydWN0b3IgKgorX2NvcHlKc29uQWdnQ29uc3RydWN0b3IoY29u c3QgSnNvbkFnZ0NvbnN0cnVjdG9yICpmcm9tKQoreworCUpzb25BZ2dDb25zdHJ1Y3RvciAq bmV3bm9kZSA9IG1ha2VOb2RlKEpzb25BZ2dDb25zdHJ1Y3Rvcik7CisKKwlDT1BZX05PREVf RklFTEQob3V0cHV0KTsKKwlDT1BZX05PREVfRklFTEQoYWdnX2ZpbHRlcik7CisJQ09QWV9O T0RFX0ZJRUxEKGFnZ19vcmRlcik7CisJQ09QWV9OT0RFX0ZJRUxEKG92ZXIpOworCUNPUFlf TE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8q CisgKiBfY29weUpzb25PYmplY3RBZ2cKKyAqLworc3RhdGljIEpzb25PYmplY3RBZ2cgKgor X2NvcHlKc29uT2JqZWN0QWdnKGNvbnN0IEpzb25PYmplY3RBZ2cgKmZyb20pCit7CisJSnNv bk9iamVjdEFnZyAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25PYmplY3RBZ2cpOworCisJQ09Q WV9OT0RFX0ZJRUxEKGNvbnN0cnVjdG9yKTsKKwlDT1BZX05PREVfRklFTEQoYXJnKTsKKwlD T1BZX1NDQUxBUl9GSUVMRChhYnNlbnRfb25fbnVsbCk7CisJQ09QWV9TQ0FMQVJfRklFTEQo dW5pcXVlKTsKKworCXJldHVybiBuZXdub2RlOworfQorCisvKgorICogX2NvcHlKc29uT3V0 cHV0CisgKi8KK3N0YXRpYyBKc29uT3V0cHV0ICoKK19jb3B5SnNvbk91dHB1dChjb25zdCBK c29uT3V0cHV0ICpmcm9tKQoreworCUpzb25PdXRwdXQJICAgKm5ld25vZGUgPSBtYWtlTm9k ZShKc29uT3V0cHV0KTsKKworCUNPUFlfTk9ERV9GSUVMRCh0eXBlTmFtZSk7CisJQ09QWV9O T0RFX0ZJRUxEKHJldHVybmluZyk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoKKyAq IF9jb3B5SnNvbkFycmF5Q29uc3RydWN0b3IKKyAqLworc3RhdGljIEpzb25BcnJheUNvbnN0 cnVjdG9yICoKK19jb3B5SnNvbkFycmF5Q29uc3RydWN0b3IoY29uc3QgSnNvbkFycmF5Q29u c3RydWN0b3IgKmZyb20pCit7CisJSnNvbkFycmF5Q29uc3RydWN0b3IgKm5ld25vZGUgPSBt YWtlTm9kZShKc29uQXJyYXlDb25zdHJ1Y3Rvcik7CisKKwlDT1BZX05PREVfRklFTEQoZXhw cnMpOworCUNPUFlfTk9ERV9GSUVMRChvdXRwdXQpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGFi c2VudF9vbl9udWxsKTsKKwlDT1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJl dHVybiBuZXdub2RlOworfQorCisvKgorICogX2NvcHlKc29uQXJyYXlBZ2cKKyAqLworc3Rh dGljIEpzb25BcnJheUFnZyAqCitfY29weUpzb25BcnJheUFnZyhjb25zdCBKc29uQXJyYXlB Z2cgKmZyb20pCit7CisJSnNvbkFycmF5QWdnICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbkFy cmF5QWdnKTsKKworCUNPUFlfTk9ERV9GSUVMRChjb25zdHJ1Y3Rvcik7CisJQ09QWV9OT0RF X0ZJRUxEKGFyZyk7CisJQ09QWV9TQ0FMQVJfRklFTEQoYWJzZW50X29uX251bGwpOworCisJ cmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25BcnJheVF1ZXJ5Q29uc3Ry dWN0b3IKKyAqLworc3RhdGljIEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IgKgorX2NvcHlK c29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yKGNvbnN0IEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0 b3IgKmZyb20pCit7CisJSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvciAqbmV3bm9kZSA9IG1h a2VOb2RlKEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IpOworCisJQ09QWV9OT0RFX0ZJRUxE KHF1ZXJ5KTsKKwlDT1BZX05PREVfRklFTEQob3V0cHV0KTsKKwlDT1BZX05PREVfRklFTEQo Zm9ybWF0KTsKKwlDT1BZX1NDQUxBUl9GSUVMRChhYnNlbnRfb25fbnVsbCk7CisJQ09QWV9M T0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKworLyoK KyAqIF9jb3B5SnNvbkV4cHIKKyAqLworc3RhdGljIEpzb25FeHByICoKK19jb3B5SnNvbkV4 cHIoY29uc3QgSnNvbkV4cHIgKmZyb20pCit7CisJSnNvbkV4cHIgICAgKm5ld25vZGUgPSBt YWtlTm9kZShKc29uRXhwcik7CisKKwlDT1BZX1NDQUxBUl9GSUVMRChvcCk7CisJQ09QWV9O T0RFX0ZJRUxEKGZvcm1hdHRlZF9leHByKTsKKwlDT1BZX05PREVfRklFTEQocmVzdWx0X2Nv ZXJjaW9uKTsKKwlDT1BZX05PREVfRklFTEQoZm9ybWF0KTsKKwlDT1BZX05PREVfRklFTEQo cGF0aF9zcGVjKTsKKwlDT1BZX05PREVfRklFTEQocGFzc2luZ192YWx1ZXMpOworCUNPUFlf Tk9ERV9GSUVMRChwYXNzaW5nX25hbWVzKTsKKwlDT1BZX05PREVfRklFTEQocmV0dXJuaW5n KTsKKwlDT1BZX05PREVfRklFTEQob25fZXJyb3IpOworCUNPUFlfTk9ERV9GSUVMRChvbl9l bXB0eSk7CisJQ09QWV9OT0RFX0ZJRUxEKGNvZXJjaW9ucyk7CisJQ09QWV9TQ0FMQVJfRklF TEQod3JhcHBlcik7CisJQ09QWV9TQ0FMQVJfRklFTEQob21pdF9xdW90ZXMpOworCUNPUFlf TE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8q CisgKiBfY29weUpzb25Db2VyY2lvbgorICovCitzdGF0aWMgSnNvbkNvZXJjaW9uICoKK19j b3B5SnNvbkNvZXJjaW9uKGNvbnN0IEpzb25Db2VyY2lvbiAqZnJvbSkKK3sKKwlKc29uQ29l cmNpb24gKm5ld25vZGUgPSBtYWtlTm9kZShKc29uQ29lcmNpb24pOworCisJQ09QWV9OT0RF X0ZJRUxEKGV4cHIpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHZpYV9wb3B1bGF0ZSk7CisJQ09Q WV9TQ0FMQVJfRklFTEQodmlhX2lvKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChjb2xsYXRpb24p OworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25JdGVtQ29lcmNp b25zCisgKi8KK3N0YXRpYyBKc29uSXRlbUNvZXJjaW9ucyAqCitfY29weUpzb25JdGVtQ29l cmNpb25zKGNvbnN0IEpzb25JdGVtQ29lcmNpb25zICpmcm9tKQoreworCUpzb25JdGVtQ29l cmNpb25zICpuZXdub2RlID0gbWFrZU5vZGUoSnNvbkl0ZW1Db2VyY2lvbnMpOworCisJQ09Q WV9OT0RFX0ZJRUxEKG51bGwpOworCUNPUFlfTk9ERV9GSUVMRChzdHJpbmcpOworCUNPUFlf Tk9ERV9GSUVMRChudW1lcmljKTsKKwlDT1BZX05PREVfRklFTEQoYm9vbGVhbik7CisJQ09Q WV9OT0RFX0ZJRUxEKGRhdGUpOworCUNPUFlfTk9ERV9GSUVMRCh0aW1lKTsKKwlDT1BZX05P REVfRklFTEQodGltZXR6KTsKKwlDT1BZX05PREVfRklFTEQodGltZXN0YW1wKTsKKwlDT1BZ X05PREVfRklFTEQodGltZXN0YW1wdHopOworCUNPUFlfTk9ERV9GSUVMRChjb21wb3NpdGUp OworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25GdW5jRXhwcgor ICovCitzdGF0aWMgSnNvbkZ1bmNFeHByICoKK19jb3B5SnNvbkZ1bmNFeHByKGNvbnN0IEpz b25GdW5jRXhwciAqZnJvbSkKK3sKKwlKc29uRnVuY0V4cHIgICAqbmV3bm9kZSA9IG1ha2VO b2RlKEpzb25GdW5jRXhwcik7CisKKwlDT1BZX1NDQUxBUl9GSUVMRChvcCk7CisJQ09QWV9O T0RFX0ZJRUxEKGNvbW1vbik7CisJQ09QWV9OT0RFX0ZJRUxEKG91dHB1dCk7CisJQ09QWV9O T0RFX0ZJRUxEKG9uX2VtcHR5KTsKKwlDT1BZX05PREVfRklFTEQob25fZXJyb3IpOworCUNP UFlfU0NBTEFSX0ZJRUxEKHdyYXBwZXIpOworCUNPUFlfU0NBTEFSX0ZJRUxEKG9taXRfcXVv dGVzKTsKKwlDT1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiBuZXdu b2RlOworfQorCisvKgorICogX2NvcHlKc29uSXNQcmVkaWNhdGUKKyAqLworc3RhdGljIEpz b25Jc1ByZWRpY2F0ZSAqCitfY29weUpzb25Jc1ByZWRpY2F0ZShjb25zdCBKc29uSXNQcmVk aWNhdGUgKmZyb20pCit7CisJSnNvbklzUHJlZGljYXRlICpuZXdub2RlID0gbWFrZU5vZGUo SnNvbklzUHJlZGljYXRlKTsKKworCUNPUFlfTk9ERV9GSUVMRChleHByKTsKKwlDT1BZX1ND QUxBUl9GSUVMRChmb3JtYXQpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHZhbHVlX3R5cGUpOwor CUNPUFlfU0NBTEFSX0ZJRUxEKHVuaXF1ZV9rZXlzKTsKKwlDT1BZX0xPQ0FUSU9OX0ZJRUxE KGxvY2F0aW9uKTsKKworCXJldHVybiBuZXdub2RlOworfQorCisvKgorICogX2NvcHlKc29u QmVoYXZpb3IKKyAqLworc3RhdGljIEpzb25CZWhhdmlvciAqCitfY29weUpzb25CZWhhdmlv cihjb25zdCBKc29uQmVoYXZpb3IgKmZyb20pCit7CisJSnNvbkJlaGF2aW9yICAgKm5ld25v ZGUgPSBtYWtlTm9kZShKc29uQmVoYXZpb3IpOworCisJQ09QWV9TQ0FMQVJfRklFTEQoYnR5 cGUpOworCUNPUFlfTk9ERV9GSUVMRChkZWZhdWx0X2V4cHIpOworCisJcmV0dXJuIG5ld25v ZGU7Cit9CisKKy8qCisgKiBfY29weUpzb25Db21tb24KKyAqLworc3RhdGljIEpzb25Db21t b24gKgorX2NvcHlKc29uQ29tbW9uKGNvbnN0IEpzb25Db21tb24gKmZyb20pCit7CisJSnNv bkNvbW1vbgkgICAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25Db21tb24pOworCisJQ09QWV9O T0RFX0ZJRUxEKGV4cHIpOworCUNPUFlfTk9ERV9GSUVMRChwYXRoc3BlYyk7CisJQ09QWV9T VFJJTkdfRklFTEQocGF0aG5hbWUpOworCUNPUFlfTk9ERV9GSUVMRChwYXNzaW5nKTsKKwlD T1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiBuZXdub2RlOworfQor CisvKgorICogX2NvcHlKc29uQXJndW1lbnQKKyAqLworc3RhdGljIEpzb25Bcmd1bWVudCAq CitfY29weUpzb25Bcmd1bWVudChjb25zdCBKc29uQXJndW1lbnQgKmZyb20pCit7CisJSnNv bkFyZ3VtZW50ICAgKm5ld25vZGUgPSBtYWtlTm9kZShKc29uQXJndW1lbnQpOworCisJQ09Q WV9OT0RFX0ZJRUxEKHZhbCk7CisJQ09QWV9TVFJJTkdfRklFTEQobmFtZSk7CisKKwlyZXR1 cm4gbmV3bm9kZTsKK30KKwogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoJCQkJCQlwYXRobm9kZXMuaCBj b3B5IGZ1bmN0aW9ucwogICoKQEAgLTUzNTAsNiArNTcxNyw3MiBAQCBjb3B5T2JqZWN0SW1w bChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfT25Db25mbGljdEV4cHI6CiAJCQlyZXR2 YWwgPSBfY29weU9uQ29uZmxpY3RFeHByKGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uRm9ybWF0OgorCQkJcmV0dmFsID0gX2NvcHlKc29uRm9ybWF0KGZyb20pOworCQkJYnJl YWs7CisJCWNhc2UgVF9Kc29uUmV0dXJuaW5nOgorCQkJcmV0dmFsID0gX2NvcHlKc29uUmV0 dXJuaW5nKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgorCQkJ cmV0dmFsID0gX2NvcHlKc29uVmFsdWVFeHByKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2Ug VF9Kc29uU2NhbGFyRXhwcjoKKwkJCXJldHZhbCA9IF9jb3B5SnNvblNjYWxhckV4cHIoZnJv bSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25TZXJpYWxpemVFeHByOgorCQkJcmV0dmFs ID0gX2NvcHlKc29uU2VyaWFsaXplRXhwcihmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRf SnNvbktleVZhbHVlOgorCQkJcmV0dmFsID0gX2NvcHlKc29uS2V5VmFsdWUoZnJvbSk7CisJ CQlicmVhazsKKwkJY2FzZSBUX0pzb25Db25zdHJ1Y3RvckV4cHI6CisJCQlyZXR2YWwgPSBf Y29weUpzb25Db25zdHJ1Y3RvckV4cHIoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pz b25PYmplY3RDb25zdHJ1Y3RvcjoKKwkJCXJldHZhbCA9IF9jb3B5SnNvbk9iamVjdENvbnN0 cnVjdG9yKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQWdnQ29uc3RydWN0b3I6 CisJCQlyZXR2YWwgPSBfY29weUpzb25BZ2dDb25zdHJ1Y3Rvcihmcm9tKTsKKwkJCWJyZWFr OworCQljYXNlIFRfSnNvbk9iamVjdEFnZzoKKwkJCXJldHZhbCA9IF9jb3B5SnNvbk9iamVj dEFnZyhmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbk91dHB1dDoKKwkJCXJldHZh bCA9IF9jb3B5SnNvbk91dHB1dChmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkFy cmF5Q29uc3RydWN0b3I6CisJCQlyZXR2YWwgPSBfY29weUpzb25BcnJheUNvbnN0cnVjdG9y KGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9y OgorCQkJcmV0dmFsID0gX2NvcHlKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yKGZyb20pOwor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQXJyYXlBZ2c6CisJCQlyZXR2YWwgPSBfY29weUpz b25BcnJheUFnZyhmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbklzUHJlZGljYXRl OgorCQkJcmV0dmFsID0gX2NvcHlKc29uSXNQcmVkaWNhdGUoZnJvbSk7CisJCQlicmVhazsK KwkJY2FzZSBUX0pzb25GdW5jRXhwcjoKKwkJCXJldHZhbCA9IF9jb3B5SnNvbkZ1bmNFeHBy KGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXJldHZhbCA9IF9j b3B5SnNvbkV4cHIoZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db21tb246CisJ CQlyZXR2YWwgPSBfY29weUpzb25Db21tb24oZnJvbSk7CisJCQlicmVhazsKKwkJY2FzZSBU X0pzb25CZWhhdmlvcjoKKwkJCXJldHZhbCA9IF9jb3B5SnNvbkJlaGF2aW9yKGZyb20pOwor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQXJndW1lbnQ6CisJCQlyZXR2YWwgPSBfY29weUpz b25Bcmd1bWVudChmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9uOgor CQkJcmV0dmFsID0gX2NvcHlKc29uQ29lcmNpb24oZnJvbSk7CisJCQlicmVhazsKKwkJY2Fz ZSBUX0pzb25JdGVtQ29lcmNpb25zOgorCQkJcmV0dmFsID0gX2NvcHlKc29uSXRlbUNvZXJj aW9ucyhmcm9tKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogUkVMQVRJT04gTk9ERVMK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBmMTAwMmFmZTdhLi43MzFiMTQxOWY2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC04NDEsNiArODQxLDI0MiBAQCBfZXF1YWxP bkNvbmZsaWN0RXhwcihjb25zdCBPbkNvbmZsaWN0RXhwciAqYSwgY29uc3QgT25Db25mbGlj dEV4cHIgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxKc29u Rm9ybWF0KGNvbnN0IEpzb25Gb3JtYXQgKmEsIGNvbnN0IEpzb25Gb3JtYXQgKmIpCit7CisJ Q09NUEFSRV9TQ0FMQVJfRklFTEQoZm9ybWF0X3R5cGUpOworCUNPTVBBUkVfU0NBTEFSX0ZJ RUxEKGVuY29kaW5nKTsKKwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKwor CXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorX2VxdWFsSnNvblJldHVybmluZyhj b25zdCBKc29uUmV0dXJuaW5nICphLCBjb25zdCBKc29uUmV0dXJuaW5nICpiKQoreworCUNP TVBBUkVfTk9ERV9GSUVMRChmb3JtYXQpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHR5cGlk KTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRCh0eXBtb2QpOworCisJcmV0dXJuIHRydWU7Cit9 CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uVmFsdWVFeHByKGNvbnN0IEpzb25WYWx1ZUV4 cHIgKmEsIGNvbnN0IEpzb25WYWx1ZUV4cHIgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxE KHJhd19leHByKTsKKwlDT01QQVJFX05PREVfRklFTEQoZm9ybWF0dGVkX2V4cHIpOworCUNP TVBBUkVfTk9ERV9GSUVMRChmb3JtYXQpOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp YyBib29sCitfZXF1YWxKc29uU2NhbGFyRXhwcihjb25zdCBKc29uU2NhbGFyRXhwciAqYSwg Y29uc3QgSnNvblNjYWxhckV4cHIgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGV4cHIp OworCUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIHRydWU7 Cit9CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uU2VyaWFsaXplRXhwcihjb25zdCBKc29u U2VyaWFsaXplRXhwciAqYSwgY29uc3QgSnNvblNlcmlhbGl6ZUV4cHIgKmIpCit7CisJQ09N UEFSRV9OT0RFX0ZJRUxEKGV4cHIpOworCUNPTVBBUkVfTk9ERV9GSUVMRChvdXRwdXQpOwor CUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIHRydWU7Cit9 CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uQ29uc3RydWN0b3JFeHByKGNvbnN0IEpzb25D b25zdHJ1Y3RvckV4cHIgKmEsIGNvbnN0IEpzb25Db25zdHJ1Y3RvckV4cHIgKmIpCit7CisJ Q09NUEFSRV9TQ0FMQVJfRklFTEQodHlwZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGFyZ3Mp OworCUNPTVBBUkVfTk9ERV9GSUVMRChmdW5jKTsKKwlDT01QQVJFX05PREVfRklFTEQoY29l cmNpb24pOworCUNPTVBBUkVfTk9ERV9GSUVMRChyZXR1cm5pbmcpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGFic2VudF9vbl9udWxsKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRCh1bmlx dWUpOworCUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIHRy dWU7Cit9CisKK3N0YXRpYyBib29sCitfZXF1YWxKc29uS2V5VmFsdWUoY29uc3QgSnNvbktl eVZhbHVlICphLCBjb25zdCBKc29uS2V5VmFsdWUgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJ RUxEKGtleSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHZhbHVlKTsKKworCXJldHVybiB0cnVl OworfQorCitzdGF0aWMgYm9vbAorX2VxdWFsSnNvbk9iamVjdENvbnN0cnVjdG9yKGNvbnN0 IEpzb25PYmplY3RDb25zdHJ1Y3RvciAqYSwKKwkJCQkJCQljb25zdCBKc29uT2JqZWN0Q29u c3RydWN0b3IgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGV4cHJzKTsKKwlDT01QQVJF X05PREVfRklFTEQob3V0cHV0KTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChhYnNlbnRfb25f bnVsbCk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQodW5pcXVlKTsKKwlDT01QQVJFX0xPQ0FU SU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9v bAorX2VxdWFsSnNvbkFnZ0NvbnN0cnVjdG9yKGNvbnN0IEpzb25BZ2dDb25zdHJ1Y3RvciAq YSwKKwkJCQkJCSBjb25zdCBKc29uQWdnQ29uc3RydWN0b3IgKmIpCit7CisJQ09NUEFSRV9O T0RFX0ZJRUxEKG91dHB1dCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGFnZ19maWx0ZXIpOwor CUNPTVBBUkVfTk9ERV9GSUVMRChhZ2dfb3JkZXIpOworCUNPTVBBUkVfTk9ERV9GSUVMRChv dmVyKTsKKwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiB0 cnVlOworfQorCitzdGF0aWMgYm9vbAorX2VxdWFsSnNvbk9iamVjdEFnZyhjb25zdCBKc29u T2JqZWN0QWdnICphLCBjb25zdCBKc29uT2JqZWN0QWdnICpiKQoreworCUNPTVBBUkVfTk9E RV9GSUVMRChjb25zdHJ1Y3Rvcik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGFyZyk7CisJQ09N UEFSRV9TQ0FMQVJfRklFTEQoYWJzZW50X29uX251bGwpOworCUNPTVBBUkVfU0NBTEFSX0ZJ RUxEKHVuaXF1ZSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wKK19lcXVh bEpzb25PdXRwdXQoY29uc3QgSnNvbk91dHB1dCAqYSwgY29uc3QgSnNvbk91dHB1dCAqYikK K3sKKwlDT01QQVJFX05PREVfRklFTEQodHlwZU5hbWUpOworCUNPTVBBUkVfTk9ERV9GSUVM RChyZXR1cm5pbmcpOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sCitfZXF1 YWxKc29uQXJyYXlDb25zdHJ1Y3Rvcihjb25zdCBKc29uQXJyYXlDb25zdHJ1Y3RvciAqYSwK KwkJCQkJCSAgIGNvbnN0IEpzb25BcnJheUNvbnN0cnVjdG9yICpiKQoreworCUNPTVBBUkVf Tk9ERV9GSUVMRChleHBycyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKG91dHB1dCk7CisJQ09N UEFSRV9TQ0FMQVJfRklFTEQoYWJzZW50X29uX251bGwpOworCUNPTVBBUkVfTE9DQVRJT05f RklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sCitf ZXF1YWxKc29uQXJyYXlBZ2coY29uc3QgSnNvbkFycmF5QWdnICphLCBjb25zdCBKc29uQXJy YXlBZ2cgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGNvbnN0cnVjdG9yKTsKKwlDT01Q QVJFX05PREVfRklFTEQoYXJnKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChhYnNlbnRfb25f bnVsbCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wKK19lcXVhbEpzb25B cnJheVF1ZXJ5Q29uc3RydWN0b3IoY29uc3QgSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvciAq YSwKKwkJCQkJCQkJY29uc3QgSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvciAqYikKK3sKKwlD T01QQVJFX05PREVfRklFTEQocXVlcnkpOworCUNPTVBBUkVfTk9ERV9GSUVMRChvdXRwdXQp OworCUNPTVBBUkVfTk9ERV9GSUVMRChmb3JtYXQpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KGFic2VudF9vbl9udWxsKTsKKwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsK KworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorX2VxdWFsSnNvbklzUHJlZGlj YXRlKGNvbnN0IEpzb25Jc1ByZWRpY2F0ZSAqYSwKKwkJCQkJICBjb25zdCBKc29uSXNQcmVk aWNhdGUgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGV4cHIpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKHZhbHVlX3R5cGUpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHVuaXF1ZV9r ZXlzKTsKKwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiB0 cnVlOworfQorCisvKgorICogX2VxdWFsSnNvbkJlaGF2aW9yCisgKi8KK3N0YXRpYyBib29s CitfZXF1YWxKc29uQmVoYXZpb3IoY29uc3QgSnNvbkJlaGF2aW9yICphLCBjb25zdCBKc29u QmVoYXZpb3IgKmIpCit7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoYnR5cGUpOworCUNPTVBB UkVfTk9ERV9GSUVMRChkZWZhdWx0X2V4cHIpOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8q CisgKiBfZXF1YWxKc29uRXhwcgorICovCitzdGF0aWMgYm9vbAorX2VxdWFsSnNvbkV4cHIo Y29uc3QgSnNvbkV4cHIgKmEsIGNvbnN0IEpzb25FeHByICpiKQoreworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKG9wKTsKKwlDT01QQVJFX05PREVfRklFTEQoZm9ybWF0dGVkX2V4cHIpOwor CUNPTVBBUkVfTk9ERV9GSUVMRChyZXN1bHRfY29lcmNpb24pOworCUNPTVBBUkVfTk9ERV9G SUVMRChmb3JtYXQpOworCUNPTVBBUkVfTk9ERV9GSUVMRChwYXRoX3NwZWMpOworCUNPTVBB UkVfTk9ERV9GSUVMRChwYXNzaW5nX3ZhbHVlcyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHBh c3NpbmdfbmFtZXMpOworCUNPTVBBUkVfTk9ERV9GSUVMRChyZXR1cm5pbmcpOworCUNPTVBB UkVfTk9ERV9GSUVMRChvbl9lcnJvcik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKG9uX2VtcHR5 KTsKKwlDT01QQVJFX05PREVfRklFTEQoY29lcmNpb25zKTsKKwlDT01QQVJFX1NDQUxBUl9G SUVMRCh3cmFwcGVyKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChvbWl0X3F1b3Rlcyk7CisJ Q09NUEFSRV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIF9lcXVhbEpzb25Db2VyY2lvbgorICovCitzdGF0aWMgYm9vbAorX2VxdWFs SnNvbkNvZXJjaW9uKGNvbnN0IEpzb25Db2VyY2lvbiAqYSwgY29uc3QgSnNvbkNvZXJjaW9u ICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRChleHByKTsKKwlDT01QQVJFX1NDQUxBUl9G SUVMRCh2aWFfcG9wdWxhdGUpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHZpYV9pbyk7CisJ Q09NUEFSRV9TQ0FMQVJfRklFTEQoY29sbGF0aW9uKTsKKworCXJldHVybiB0cnVlOworfQor CisvKgorICogX2VxdWFsSnNvbkl0ZW1Db2VyY2lvbnMKKyAqLworc3RhdGljIGJvb2wKK19l cXVhbEpzb25JdGVtQ29lcmNpb25zKGNvbnN0IEpzb25JdGVtQ29lcmNpb25zICphLCBjb25z dCBKc29uSXRlbUNvZXJjaW9ucyAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQobnVsbCk7 CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHN0cmluZyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKG51 bWVyaWMpOworCUNPTVBBUkVfTk9ERV9GSUVMRChib29sZWFuKTsKKwlDT01QQVJFX05PREVf RklFTEQoZGF0ZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRpbWUpOworCUNPTVBBUkVfTk9E RV9GSUVMRCh0aW1ldHopOworCUNPTVBBUkVfTk9ERV9GSUVMRCh0aW1lc3RhbXApOworCUNP TVBBUkVfTk9ERV9GSUVMRCh0aW1lc3RhbXB0eik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGNv bXBvc2l0ZSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIFN0dWZmIGZyb20gcGF0 aG5vZGVzLmgKICAqLwpAQCAtMzM1OCw2ICszNTk0LDM5IEBAIGVxdWFsKGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9Kb2luRXhwcjoKIAkJCXJldHZhbCA9IF9l cXVhbEpvaW5FeHByKGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uRm9ybWF0Ogor CQkJcmV0dmFsID0gX2VxdWFsSnNvbkZvcm1hdChhLCBiKTsKKwkJCWJyZWFrOworCQljYXNl IFRfSnNvblJldHVybmluZzoKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25SZXR1cm5pbmcoYSwg Yik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25WYWx1ZUV4cHI6CisJCQlyZXR2YWwgPSBf ZXF1YWxKc29uVmFsdWVFeHByKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uU2Nh bGFyRXhwcjoKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25TY2FsYXJFeHByKGEsIGIpOworCQkJ YnJlYWs7CisJCWNhc2UgVF9Kc29uU2VyaWFsaXplRXhwcjoKKwkJCXJldHZhbCA9IF9lcXVh bEpzb25TZXJpYWxpemVFeHByKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29u c3RydWN0b3JFeHByOgorCQkJcmV0dmFsID0gX2VxdWFsSnNvbkNvbnN0cnVjdG9yRXhwcihh LCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgorCQkJcmV0dmFs ID0gX2VxdWFsSnNvbklzUHJlZGljYXRlKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uQmVoYXZpb3IoYSwgYik7CisJ CQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJcmV0dmFsID0gX2VxdWFsSnNvbkV4 cHIoYSwgYik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2VyY2lvbjoKKwkJCXJldHZh bCA9IF9lcXVhbEpzb25Db2VyY2lvbihhLCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNv bkl0ZW1Db2VyY2lvbnM6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uSXRlbUNvZXJjaW9ucyhh LCBiKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogUkVMQVRJT04gTk9ERVMKQEAgLTM5 MzgsNiArNDIwNywzMCBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQog CQljYXNlIFRfUHVibGljYXRpb25UYWJsZToKIAkJCXJldHZhbCA9IF9lcXVhbFB1YmxpY2F0 aW9uVGFibGUoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25LZXlWYWx1ZToKKwkJ CXJldHZhbCA9IF9lcXVhbEpzb25LZXlWYWx1ZShhLCBiKTsKKwkJCWJyZWFrOworCQljYXNl IFRfSnNvbk9iamVjdENvbnN0cnVjdG9yOgorCQkJcmV0dmFsID0gX2VxdWFsSnNvbk9iamVj dENvbnN0cnVjdG9yKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQWdnQ29uc3Ry dWN0b3I6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uQWdnQ29uc3RydWN0b3IoYSwgYik7CisJ CQlicmVhazsKKwkJY2FzZSBUX0pzb25PYmplY3RBZ2c6CisJCQlyZXR2YWwgPSBfZXF1YWxK c29uT2JqZWN0QWdnKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uT3V0cHV0Ogor CQkJcmV0dmFsID0gX2VxdWFsSnNvbk91dHB1dChhLCBiKTsKKwkJCWJyZWFrOworCQljYXNl IFRfSnNvbkFycmF5Q29uc3RydWN0b3I6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uQXJyYXlD b25zdHJ1Y3RvcihhLCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkFycmF5UXVlcnlD b25zdHJ1Y3RvcjoKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0 b3IoYSwgYik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BcnJheUFnZzoKKwkJCXJldHZh bCA9IF9lcXVhbEpzb25BcnJheUFnZyhhLCBiKTsKKwkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6 CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYwppbmRleCBjODVkOGZlOTc1Li5jZDZjMzAwZTdiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVz L25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL2VycmNvZGVzLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAKIApAQCAtODE4LDMgKzgxOSwxMDUgQEAgbWFrZVZhY3V1 bVJlbGF0aW9uKFJhbmdlVmFyICpyZWxhdGlvbiwgT2lkIG9pZCwgTGlzdCAqdmFfY29scykK IAl2LT52YV9jb2xzID0gdmFfY29sczsKIAlyZXR1cm4gdjsKIH0KKworLyoKKyAqIG1ha2VK c29uRm9ybWF0IC0KKyAqCSAgY3JlYXRlcyBhIEpzb25Gb3JtYXQgbm9kZQorICovCitKc29u Rm9ybWF0ICoKK21ha2VKc29uRm9ybWF0KEpzb25Gb3JtYXRUeXBlIHR5cGUsIEpzb25FbmNv ZGluZyBlbmNvZGluZywgaW50IGxvY2F0aW9uKQoreworCUpzb25Gb3JtYXQgKmpmID0gbWFr ZU5vZGUoSnNvbkZvcm1hdCk7CisKKwlqZi0+Zm9ybWF0X3R5cGUgPSB0eXBlOworCWpmLT5l bmNvZGluZyA9IGVuY29kaW5nOworCWpmLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0 dXJuIGpmOworfQorCisvKgorICogbWFrZUpzb25WYWx1ZUV4cHIgLQorICoJICBjcmVhdGVz IGEgSnNvblZhbHVlRXhwciBub2RlCisgKi8KK0pzb25WYWx1ZUV4cHIgKgorbWFrZUpzb25W YWx1ZUV4cHIoRXhwciAqZXhwciwgSnNvbkZvcm1hdCAqZm9ybWF0KQoreworCUpzb25WYWx1 ZUV4cHIgKmp2ZSA9IG1ha2VOb2RlKEpzb25WYWx1ZUV4cHIpOworCisJanZlLT5yYXdfZXhw ciA9IGV4cHI7CisJanZlLT5mb3JtYXR0ZWRfZXhwciA9IE5VTEw7CisJanZlLT5mb3JtYXQg PSBmb3JtYXQ7CisKKwlyZXR1cm4ganZlOworfQorCisvKgorICogbWFrZUpzb25CZWhhdmlv ciAtCisgKgkgIGNyZWF0ZXMgYSBKc29uQmVoYXZpb3Igbm9kZQorICovCitKc29uQmVoYXZp b3IgKgorbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmRl ZmF1bHRfZXhwcikKK3sKKwlKc29uQmVoYXZpb3IgKmJlaGF2aW9yID0gbWFrZU5vZGUoSnNv bkJlaGF2aW9yKTsKKworCWJlaGF2aW9yLT5idHlwZSA9IHR5cGU7CisJYmVoYXZpb3ItPmRl ZmF1bHRfZXhwciA9IGRlZmF1bHRfZXhwcjsKKworCXJldHVybiBiZWhhdmlvcjsKK30KKwor LyoKKyAqIG1ha2VKc29uRW5jb2RpbmcgLQorICoJICBjb252ZXJ0cyBKU09OIGVuY29kaW5n IG5hbWUgdG8gZW51bSBKc29uRW5jb2RpbmcKKyAqLworSnNvbkVuY29kaW5nCittYWtlSnNv bkVuY29kaW5nKGNoYXIgKm5hbWUpCit7CisJaWYgKCFwZ19zdHJjYXNlY21wKG5hbWUsICJ1 dGY4IikpCisJCXJldHVybiBKU19FTkNfVVRGODsKKwlpZiAoIXBnX3N0cmNhc2VjbXAobmFt ZSwgInV0ZjE2IikpCisJCXJldHVybiBKU19FTkNfVVRGMTY7CisJaWYgKCFwZ19zdHJjYXNl Y21wKG5hbWUsICJ1dGYzMiIpKQorCQlyZXR1cm4gSlNfRU5DX1VURjMyOworCisJZXJlcG9y dChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJIGVycm1zZygidW5yZWNvZ25pemVkIEpTT04gZW5jb2Rpbmc6ICVzIiwgbmFtZSkp KTsKKworCXJldHVybiBKU19FTkNfREVGQVVMVDsKK30KKworLyoKKyAqIG1ha2VKc29uS2V5 VmFsdWUgLQorICoJICBjcmVhdGVzIGEgSnNvbktleVZhbHVlIG5vZGUKKyAqLworTm9kZSAq CittYWtlSnNvbktleVZhbHVlKE5vZGUgKmtleSwgTm9kZSAqdmFsdWUpCit7CisJSnNvbktl eVZhbHVlICpuID0gbWFrZU5vZGUoSnNvbktleVZhbHVlKTsKKworCW4tPmtleSA9IChFeHBy ICopIGtleTsKKwluLT52YWx1ZSA9IGNhc3ROb2RlKEpzb25WYWx1ZUV4cHIsIHZhbHVlKTsK KworCXJldHVybiAoTm9kZSAqKSBuOworfQorCisvKgorICogbWFrZUpzb25Jc1ByZWRpY2F0 ZSAtCisgKgkgIGNyZWF0ZXMgYSBKc29uSXNQcmVkaWNhdGUgbm9kZQorICovCitOb2RlICoK K21ha2VKc29uSXNQcmVkaWNhdGUoTm9kZSAqZXhwciwgSnNvbkZvcm1hdCAqZm9ybWF0LCBK c29uVmFsdWVUeXBlIHZhbHVlX3R5cGUsCisJCQkJCWJvb2wgdW5pcXVlX2tleXMsIGludCBs b2NhdGlvbikKK3sKKwlKc29uSXNQcmVkaWNhdGUgKm4gPSBtYWtlTm9kZShKc29uSXNQcmVk aWNhdGUpOworCisJbi0+ZXhwciA9IGV4cHI7CisJbi0+Zm9ybWF0ID0gZm9ybWF0OworCW4t PnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBlOworCW4tPnVuaXF1ZV9rZXlzID0gdW5pcXVlX2tl eXM7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBuOwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCA0N2QwNTY0ZmEyLi5lOGRlMWRkM2FhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjUwLDYgKzI1MCwyNSBAQCBleHByVHlwZShj b25zdCBOb2RlICpleHByKQogCQljYXNlIFRfUGxhY2VIb2xkZXJWYXI6CiAJCQl0eXBlID0g ZXhwclR5cGUoKE5vZGUgKikgKChjb25zdCBQbGFjZUhvbGRlclZhciAqKSBleHByKS0+cGhl eHByKTsKIAkJCWJyZWFrOworCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKKwkJCXsKKwkJCQlj b25zdCBKc29uVmFsdWVFeHByICpqdmUgPSAoY29uc3QgSnNvblZhbHVlRXhwciAqKSBleHBy OworCisJCQkJdHlwZSA9IGV4cHJUeXBlKChOb2RlICopIChqdmUtPmZvcm1hdHRlZF9leHBy ID8ganZlLT5mb3JtYXR0ZWRfZXhwciA6IGp2ZS0+cmF3X2V4cHIpKTsKKwkJCX0KKwkJCWJy ZWFrOworCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJCXR5cGUgPSAoKGNvbnN0 IEpzb25Db25zdHJ1Y3RvckV4cHIgKikgZXhwciktPnJldHVybmluZy0+dHlwaWQ7CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToKKwkJCXR5cGUgPSBCT09MT0lEOwor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXR5cGUgPSAoKGNvbnN0IEpzb25F eHByICopIGV4cHIpLT5yZXR1cm5pbmctPnR5cGlkOworCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQ29lcmNpb246CisJCQl0eXBlID0gZXhwclR5cGUoKChjb25zdCBKc29uQ29lcmNpb24g KikgZXhwciktPmV4cHIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLCAoaW50KSBub2RlVGFnKGV4cHIpKTsK IAkJCXR5cGUgPSBJbnZhbGlkT2lkOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC00 ODIsNiArNTAxLDE0IEBAIGV4cHJUeXBtb2QoY29uc3QgTm9kZSAqZXhwcikKIAkJCXJldHVy biAoKGNvbnN0IFNldFRvRGVmYXVsdCAqKSBleHByKS0+dHlwZU1vZDsKIAkJY2FzZSBUX1Bs YWNlSG9sZGVyVmFyOgogCQkJcmV0dXJuIGV4cHJUeXBtb2QoKE5vZGUgKikgKChjb25zdCBQ bGFjZUhvbGRlclZhciAqKSBleHByKS0+cGhleHByKTsKKwkJY2FzZSBUX0pzb25WYWx1ZUV4 cHI6CisJCQlyZXR1cm4gZXhwclR5cG1vZCgoTm9kZSAqKSAoKGNvbnN0IEpzb25WYWx1ZUV4 cHIgKikgZXhwciktPmZvcm1hdHRlZF9leHByKTsKKwkJY2FzZSBUX0pzb25Db25zdHJ1Y3Rv ckV4cHI6CisJCQlyZXR1cm4gKChjb25zdCBKc29uQ29uc3RydWN0b3JFeHByICopIGV4cHIp LT5yZXR1cm5pbmctPnR5cG1vZDsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJcmV0dXJuICgo SnNvbkV4cHIgKikgZXhwciktPnJldHVybmluZy0+dHlwbW9kOworCQljYXNlIFRfSnNvbkNv ZXJjaW9uOgorCQkJcmV0dXJuIGV4cHJUeXBtb2QoKChjb25zdCBKc29uQ29lcmNpb24gKikg ZXhwciktPmV4cHIpOwogCQlkZWZhdWx0OgogCQkJYnJlYWs7CiAJfQpAQCAtOTU2LDYgKzk4 MywzNyBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9QbGFj ZUhvbGRlclZhcjoKIAkJCWNvbGwgPSBleHByQ29sbGF0aW9uKChOb2RlICopICgoY29uc3Qg UGxhY2VIb2xkZXJWYXIgKikgZXhwciktPnBoZXhwcik7CiAJCQlicmVhazsKKwkJY2FzZSBU X0pzb25WYWx1ZUV4cHI6CisJCQljb2xsID0gZXhwckNvbGxhdGlvbigoTm9kZSAqKSAoKGNv bnN0IEpzb25WYWx1ZUV4cHIgKikgZXhwciktPmZvcm1hdHRlZF9leHByKTsKKwkJCWJyZWFr OworCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJCXsKKwkJCQljb25zdCBKc29u Q29uc3RydWN0b3JFeHByICpjdG9yID0gKGNvbnN0IEpzb25Db25zdHJ1Y3RvckV4cHIgKikg ZXhwcjsKKworCQkJCWlmIChjdG9yLT5jb2VyY2lvbikKKwkJCQkJY29sbCA9IGV4cHJDb2xs YXRpb24oKE5vZGUgKikgY3Rvci0+Y29lcmNpb24pOworCQkJCWVsc2UKKwkJCQkJY29sbCA9 IEludmFsaWRPaWQ7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0 ZToKKwkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiByZXN1bHQgaXMgYWx3YXlzIGFuIGJvb2xl YW4gdHlwZSAqLworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlK c29uRXhwciAqamV4cHIgPSAoSnNvbkV4cHIgKikgZXhwcjsKKwkJCQlKc29uQ29lcmNpb24g KmNvZXJjaW9uID0gamV4cHItPnJlc3VsdF9jb2VyY2lvbjsKKworCQkJCWlmICghY29lcmNp b24pCisJCQkJCWNvbGwgPSBJbnZhbGlkT2lkOworCQkJCWVsc2UgaWYgKGNvZXJjaW9uLT5l eHByKQorCQkJCQljb2xsID0gZXhwckNvbGxhdGlvbihjb2VyY2lvbi0+ZXhwcik7CisJCQkJ ZWxzZSBpZiAoY29lcmNpb24tPnZpYV9pbyB8fCBjb2VyY2lvbi0+dmlhX3BvcHVsYXRlKQor CQkJCQljb2xsID0gY29lcmNpb24tPmNvbGxhdGlvbjsKKwkJCQllbHNlCisJCQkJCWNvbGwg PSBJbnZhbGlkT2lkOworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLCAoaW50KSBub2RlVGFnKGV4cHIp KTsKIAkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBA IC0xMTY4LDYgKzEyMjYsMzggQEAgZXhwclNldENvbGxhdGlvbihOb2RlICpleHByLCBPaWQg Y29sbGF0aW9uKQogCQkJLyogTmV4dFZhbHVlRXhwcidzIHJlc3VsdCBpcyBhbiBpbnRlZ2Vy IHR5cGUgLi4uICovCiAJCQlBc3NlcnQoIU9pZElzVmFsaWQoY29sbGF0aW9uKSk7IC8qIC4u LiBzbyBuZXZlciBzZXQgYSBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfSnNv blZhbHVlRXhwcjoKKwkJCWV4cHJTZXRDb2xsYXRpb24oKE5vZGUgKikgKChKc29uVmFsdWVF eHByICopIGV4cHIpLT5mb3JtYXR0ZWRfZXhwciwKKwkJCQkJCQkgY29sbGF0aW9uKTsKKwkJ CWJyZWFrOworCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJCXsKKwkJCQlKc29u Q29uc3RydWN0b3JFeHByICpjdG9yID0gKEpzb25Db25zdHJ1Y3RvckV4cHIgKikgZXhwcjsK KworCQkJCWlmIChjdG9yLT5jb2VyY2lvbikKKwkJCQkJZXhwclNldENvbGxhdGlvbigoTm9k ZSAqKSBjdG9yLT5jb2VyY2lvbiwgY29sbGF0aW9uKTsKKwkJCQllbHNlCisJCQkJCUFzc2Vy dCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogcmVzdWx0IGlzIGFsd2F5cyBhIGpzb25b Yl0gdHlwZSAqLworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6 CisJCQlBc3NlcnQoIU9pZElzVmFsaWQoY29sbGF0aW9uKSk7IC8qIHJlc3VsdCBpcyBhbHdh eXMgYm9vbGVhbiAqLworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJ CQlKc29uRXhwciAqamV4cHIgPSAoSnNvbkV4cHIgKikgZXhwcjsKKwkJCQlKc29uQ29lcmNp b24gKmNvZXJjaW9uID0gamV4cHItPnJlc3VsdF9jb2VyY2lvbjsKKworCQkJCWlmICghY29l cmNpb24pCisJCQkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsKKwkJCQllbHNl IGlmIChjb2VyY2lvbi0+ZXhwcikKKwkJCQkJZXhwclNldENvbGxhdGlvbihjb2VyY2lvbi0+ ZXhwciwgY29sbGF0aW9uKTsKKwkJCQllbHNlIGlmIChjb2VyY2lvbi0+dmlhX2lvIHx8IGNv ZXJjaW9uLT52aWFfcG9wdWxhdGUpCisJCQkJCWNvZXJjaW9uLT5jb2xsYXRpb24gPSBjb2xs YXRpb247CisJCQkJZWxzZQorCQkJCQlBc3NlcnQoIU9pZElzVmFsaWQoY29sbGF0aW9uKSk7 CisJCQl9CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcoZXhwcikpOwogCQkJYnJlYWs7 CkBAIC0xNjE0LDYgKzE3MDQsMjQgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIp CiAJCWNhc2UgVF9QYXJ0aXRpb25SYW5nZURhdHVtOgogCQkJbG9jID0gKChjb25zdCBQYXJ0 aXRpb25SYW5nZURhdHVtICopIGV4cHIpLT5sb2NhdGlvbjsKIAkJCWJyZWFrOworCQljYXNl IFRfSnNvblZhbHVlRXhwcjoKKwkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAoKGNv bnN0IEpzb25WYWx1ZUV4cHIgKikgZXhwciktPnJhd19leHByKTsKKwkJCWJyZWFrOworCQlj YXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJCWxvYyA9ICgoY29uc3QgSnNvbkNvbnN0 cnVjdG9yRXhwciAqKSBleHByKS0+bG9jYXRpb247CisJCQlicmVhazsKKwkJY2FzZSBUX0pz b25Jc1ByZWRpY2F0ZToKKwkJCWxvYyA9ICgoY29uc3QgSnNvbklzUHJlZGljYXRlICopIGV4 cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJ CQkJY29uc3QgSnNvbkV4cHIgKmpzZXhwciA9IChjb25zdCBKc29uRXhwciAqKSBleHByOwor CisJCQkJLyogY29uc2lkZXIgYm90aCBmdW5jdGlvbiBuYW1lIGFuZCBsZWZ0bW9zdCBhcmcg Ki8KKwkJCQlsb2MgPSBsZWZ0bW9zdExvYyhqc2V4cHItPmxvY2F0aW9uLAorCQkJCQkJCQkg IGV4cHJMb2NhdGlvbihqc2V4cHItPmZvcm1hdHRlZF9leHByKSk7CisJCQl9CisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCS8qIGZvciBhbnkgb3RoZXIgbm9kZSB0eXBlIGl0J3MganVz dCB1bmtub3duLi4uICovCiAJCQlsb2MgPSAtMTsKQEAgLTIzNDgsNiArMjQ1Niw3OCBAQCBl eHByZXNzaW9uX3RyZWVfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwog CQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgorCQkJeworCQkJCUpz b25WYWx1ZUV4cHIgKmp2ZSA9IChKc29uVmFsdWVFeHByICopIG5vZGU7CisKKwkJCQlpZiAo d2Fsa2VyKGp2ZS0+cmF3X2V4cHIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CQlpZiAod2Fsa2VyKGp2ZS0+Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhw cjoKKwkJCXsKKwkJCQlKc29uQ29uc3RydWN0b3JFeHByICpjdG9yID0gKEpzb25Db25zdHJ1 Y3RvckV4cHIgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIoY3Rvci0+YXJncywgY29udGV4 dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoY3Rvci0+ZnVuYywgY29u dGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoY3Rvci0+Y29lcmNp b24sIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQlj YXNlIFRfSnNvbklzUHJlZGljYXRlOgorCQkJcmV0dXJuIHdhbGtlcigoKEpzb25Jc1ByZWRp Y2F0ZSAqKSBub2RlKS0+ZXhwciwgY29udGV4dCk7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJ CXsKKwkJCQlKc29uRXhwciAgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJ CWlmICh3YWxrZXIoamV4cHItPmZvcm1hdHRlZF9leHByLCBjb250ZXh0KSkKKwkJCQkJcmV0 dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihqZXhwci0+cmVzdWx0X2NvZXJjaW9uLCBjb250 ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihqZXhwci0+cGFzc2lu Z192YWx1ZXMsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkvKiB3ZSBhc3N1 bWUgd2Fsa2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJaWYg KGpleHByLT5vbl9lbXB0eSAmJgorCQkJCQl3YWxrZXIoamV4cHItPm9uX2VtcHR5LT5kZWZh dWx0X2V4cHIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2Vy KGpleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQkJaWYgKHdhbGtlcihqZXhwci0+Y29lcmNpb25zLCBjb250ZXh0KSkKKwkJ CQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2VyY2lv bjoKKwkJCXJldHVybiB3YWxrZXIoKChKc29uQ29lcmNpb24gKikgbm9kZSktPmV4cHIsIGNv bnRleHQpOworCQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbnM6CisJCQl7CisJCQkJSnNvbkl0 ZW1Db2VyY2lvbnMgKmNvZXJjaW9ucyA9IChKc29uSXRlbUNvZXJjaW9ucyAqKSBub2RlOwor CisJCQkJaWYgKHdhbGtlcihjb2VyY2lvbnMtPm51bGwsIGNvbnRleHQpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+c3RyaW5nLCBjb250ZXh0KSkK KwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihjb2VyY2lvbnMtPm51bWVyaWMs IGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGNvZXJjaW9u cy0+Ym9vbGVhbiwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxr ZXIoY29lcmNpb25zLT5kYXRlLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJ aWYgKHdhbGtlcihjb2VyY2lvbnMtPnRpbWUsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+dGltZXR6LCBjb250ZXh0KSkKKwkJCQkJ cmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihjb2VyY2lvbnMtPnRpbWVzdGFtcCwgY29u dGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoY29lcmNpb25zLT50 aW1lc3RhbXB0eiwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxr ZXIoY29lcmNpb25zLT5jb21wb3NpdGUsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhub2RlKSk7CkBAIC0y Njc4LDYgKzI4NTgsNyBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihOb2RlICpub2RlLAog CQljYXNlIFRfUmFuZ2VUYmxSZWY6CiAJCWNhc2UgVF9Tb3J0R3JvdXBDbGF1c2U6CiAJCWNh c2UgVF9DVEVTZWFyY2hDbGF1c2U6CisJCWNhc2UgVF9Kc29uRm9ybWF0OgogCQkJcmV0dXJu IChOb2RlICopIGNvcHlPYmplY3Qobm9kZSk7CiAJCWNhc2UgVF9XaXRoQ2hlY2tPcHRpb246 CiAJCQl7CkBAIC0zMzA5LDYgKzM0OTAsMTAxIEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9y KE5vZGUgKm5vZGUsCiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJCQl9CiAJCQli cmVhazsKKwkJY2FzZSBUX0pzb25SZXR1cm5pbmc6CisJCQl7CisJCQkJSnNvblJldHVybmlu ZyAqanIgPSAoSnNvblJldHVybmluZyAqKSBub2RlOworCQkJCUpzb25SZXR1cm5pbmcgKm5l d25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBqciwgSnNvblJldHVybmluZyk7CisJ CQkJTVVUQVRFKG5ld25vZGUtPmZvcm1hdCwganItPmZvcm1hdCwgSnNvbkZvcm1hdCAqKTsK KworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQljYXNlIFRfSnNvblZh bHVlRXhwcjoKKwkJCXsKKwkJCQlKc29uVmFsdWVFeHByICpqdmUgPSAoSnNvblZhbHVlRXhw ciAqKSBub2RlOworCQkJCUpzb25WYWx1ZUV4cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09Q WShuZXdub2RlLCBqdmUsIEpzb25WYWx1ZUV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5y YXdfZXhwciwganZlLT5yYXdfZXhwciwgRXhwciAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ Zm9ybWF0dGVkX2V4cHIsIGp2ZS0+Zm9ybWF0dGVkX2V4cHIsIEV4cHIgKik7CisJCQkJTVVU QVRFKG5ld25vZGUtPmZvcm1hdCwganZlLT5mb3JtYXQsIEpzb25Gb3JtYXQgKik7CisKKwkJ CQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJY2FzZSBUX0pzb25Db25zdHJ1 Y3RvckV4cHI6CisJCQl7CisJCQkJSnNvbkNvbnN0cnVjdG9yRXhwciAqanZlID0gKEpzb25D b25zdHJ1Y3RvckV4cHIgKikgbm9kZTsKKwkJCQlKc29uQ29uc3RydWN0b3JFeHByICpuZXdu b2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwganZlLCBKc29uQ29uc3RydWN0b3JFeHBy KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+YXJncywganZlLT5hcmdzLCBMaXN0ICopOworCQkJ CU1VVEFURShuZXdub2RlLT5mdW5jLCBqdmUtPmZ1bmMsIEV4cHIgKik7CisJCQkJTVVUQVRF KG5ld25vZGUtPmNvZXJjaW9uLCBqdmUtPmNvZXJjaW9uLCBFeHByICopOworCQkJCU1VVEFU RShuZXdub2RlLT5yZXR1cm5pbmcsIGp2ZS0+cmV0dXJuaW5nLCBKc29uUmV0dXJuaW5nICop OworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToKKwkJCXsKKwkJCQlKc29uSXNQcmVkaWNhdGUgKnBy ZWQgPSAoSnNvbklzUHJlZGljYXRlICopIG5vZGU7CisJCQkJSnNvbklzUHJlZGljYXRlICpu ZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgcHJlZCwgSnNvbklzUHJlZGljYXRl KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ZXhwciwgcHJlZC0+ZXhwciwgTm9kZSAqKTsKKwor CQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2Ug VF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICAqamV4cHIgPSAoSnNvbkV4cHIg Kikgbm9kZTsKKwkJCQlKc29uRXhwciAgICAqbmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5l d25vZGUsIGpleHByLCBKc29uRXhwcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnBhdGhfc3Bl YywgamV4cHItPnBhdGhfc3BlYywgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Zm9y bWF0dGVkX2V4cHIsIGpleHByLT5mb3JtYXR0ZWRfZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRB VEUobmV3bm9kZS0+cmVzdWx0X2NvZXJjaW9uLCBqZXhwci0+cmVzdWx0X2NvZXJjaW9uLCBK c29uQ29lcmNpb24gKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnBhc3NpbmdfdmFsdWVzLCBq ZXhwci0+cGFzc2luZ192YWx1ZXMsIExpc3QgKik7CisJCQkJLyogYXNzdW1lIG11dGF0b3Ig ZG9lcyBub3QgY2FyZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJaWYgKG5ld25vZGUt Pm9uX2VtcHR5KQorCQkJCQlNVVRBVEUobmV3bm9kZS0+b25fZW1wdHktPmRlZmF1bHRfZXhw ciwKKwkJCQkJCSAgIGpleHByLT5vbl9lbXB0eS0+ZGVmYXVsdF9leHByLCBOb2RlICopOwor CQkJCU1VVEFURShuZXdub2RlLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByLAorCQkJCQkgICBq ZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhwciwgTm9kZSAqKTsKKwkJCQlyZXR1cm4gKE5v ZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9u OgorCQkJeworCQkJCUpzb25Db2VyY2lvbiAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICop IG5vZGU7CisJCQkJSnNvbkNvZXJjaW9uICpuZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3 bm9kZSwgY29lcmNpb24sIEpzb25Db2VyY2lvbik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmV4 cHIsIGNvZXJjaW9uLT5leHByLCBOb2RlICopOworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdu b2RlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uczoKKwkJ CXsKKwkJCQlKc29uSXRlbUNvZXJjaW9ucyAqY29lcmNpb25zID0gKEpzb25JdGVtQ29lcmNp b25zICopIG5vZGU7CisJCQkJSnNvbkl0ZW1Db2VyY2lvbnMgKm5ld25vZGU7CisKKwkJCQlG TEFUQ09QWShuZXdub2RlLCBjb2VyY2lvbnMsIEpzb25JdGVtQ29lcmNpb25zKTsKKwkJCQlN VVRBVEUobmV3bm9kZS0+bnVsbCwgY29lcmNpb25zLT5udWxsLCBKc29uQ29lcmNpb24gKik7 CisJCQkJTVVUQVRFKG5ld25vZGUtPnN0cmluZywgY29lcmNpb25zLT5zdHJpbmcsIEpzb25D b2VyY2lvbiAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+bnVtZXJpYywgY29lcmNpb25zLT5u dW1lcmljLCBKc29uQ29lcmNpb24gKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmJvb2xlYW4s IGNvZXJjaW9ucy0+Ym9vbGVhbiwgSnNvbkNvZXJjaW9uICopOworCQkJCU1VVEFURShuZXdu b2RlLT5kYXRlLCBjb2VyY2lvbnMtPmRhdGUsIEpzb25Db2VyY2lvbiAqKTsKKwkJCQlNVVRB VEUobmV3bm9kZS0+dGltZSwgY29lcmNpb25zLT50aW1lLCBKc29uQ29lcmNpb24gKik7CisJ CQkJTVVUQVRFKG5ld25vZGUtPnRpbWV0eiwgY29lcmNpb25zLT50aW1ldHosIEpzb25Db2Vy Y2lvbiAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+dGltZXN0YW1wLCBjb2VyY2lvbnMtPnRp bWVzdGFtcCwgSnNvbkNvZXJjaW9uICopOworCQkJCU1VVEFURShuZXdub2RlLT50aW1lc3Rh bXB0eiwgY29lcmNpb25zLT50aW1lc3RhbXB0eiwgSnNvbkNvZXJjaW9uICopOworCQkJCU1V VEFURShuZXdub2RlLT5jb21wb3NpdGUsIGNvZXJjaW9ucy0+Y29tcG9zaXRlLCBKc29uQ29l cmNpb24gKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBl OiAlZCIsCiAJCQkJIChpbnQpIG5vZGVUYWcobm9kZSkpOwpAQCAtNDAxNyw2ICs0MjkzLDE1 NyBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcihOb2RlICpub2RlLAogCQljYXNlIFRf Q29tbW9uVGFibGVFeHByOgogCQkJLyogc2VhcmNoX2NsYXVzZSBhbmQgY3ljbGVfY2xhdXNl IGFyZSBub3QgaW50ZXJlc3RpbmcgaGVyZSAqLwogCQkJcmV0dXJuIHdhbGtlcigoKENvbW1v blRhYmxlRXhwciAqKSBub2RlKS0+Y3RlcXVlcnksIGNvbnRleHQpOworCQljYXNlIFRfSnNv blJldHVybmluZzoKKwkJCXJldHVybiB3YWxrZXIoKChKc29uUmV0dXJuaW5nICopIG5vZGUp LT5mb3JtYXQsIGNvbnRleHQpOworCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKKwkJCXsKKwkJ CQlKc29uVmFsdWVFeHByICpqdmUgPSAoSnNvblZhbHVlRXhwciAqKSBub2RlOworCisJCQkJ aWYgKHdhbGtlcihqdmUtPnJhd19leHByLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKHdhbGtlcihqdmUtPmZvcm1hdHRlZF9leHByLCBjb250ZXh0KSkKKwkJCQkJ cmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihqdmUtPmZvcm1hdCwgY29udGV4dCkpCisJ CQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29uc3Ry dWN0b3JFeHByOgorCQkJeworCQkJCUpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IgPSAoSnNv bkNvbnN0cnVjdG9yRXhwciAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihjdG9yLT5hcmdz LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihjdG9yLT5m dW5jLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihjdG9y LT5jb2VyY2lvbiwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxr ZXIoY3Rvci0+cmV0dXJuaW5nLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9 CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25PdXRwdXQ6CisJCQl7CisJCQkJSnNvbk91dHB1 dCAqb3V0ID0gKEpzb25PdXRwdXQgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIob3V0LT50 eXBlTmFtZSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIo b3V0LT5yZXR1cm5pbmcsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJ CWJyZWFrOworCQljYXNlIFRfSnNvbktleVZhbHVlOgorCQkJeworCQkJCUpzb25LZXlWYWx1 ZSAqamt2ID0gKEpzb25LZXlWYWx1ZSAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihqa3Yt PmtleSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoamt2 LT52YWx1ZSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7 CisJCWNhc2UgVF9Kc29uT2JqZWN0Q29uc3RydWN0b3I6CisJCQl7CisJCQkJSnNvbk9iamVj dENvbnN0cnVjdG9yICpqb2MgPSAoSnNvbk9iamVjdENvbnN0cnVjdG9yICopIG5vZGU7CisK KwkJCQlpZiAod2Fsa2VyKGpvYy0+b3V0cHV0LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRy dWU7CisJCQkJaWYgKHdhbGtlcihqb2MtPmV4cHJzLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BcnJheUNvbnN0cnVjdG9y OgorCQkJeworCQkJCUpzb25BcnJheUNvbnN0cnVjdG9yICpqYWMgPSAoSnNvbkFycmF5Q29u c3RydWN0b3IgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIoamFjLT5vdXRwdXQsIGNvbnRl eHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGphYy0+ZXhwcnMsIGNv bnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRf SnNvbkFnZ0NvbnN0cnVjdG9yOgorCQkJeworCQkJCUpzb25BZ2dDb25zdHJ1Y3RvciAqY3Rv ciA9IChKc29uQWdnQ29uc3RydWN0b3IgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIoY3Rv ci0+b3V0cHV0LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtl cihjdG9yLT5hZ2dfb3JkZXIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAod2Fsa2VyKGN0b3ItPmFnZ19maWx0ZXIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAod2Fsa2VyKGN0b3ItPm92ZXIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbk9iamVjdEFnZzoKKwkJCXsK KwkJCQlKc29uT2JqZWN0QWdnICpqb2EgPSAoSnNvbk9iamVjdEFnZyAqKSBub2RlOworCisJ CQkJaWYgKHdhbGtlcihqb2EtPmNvbnN0cnVjdG9yLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQkJaWYgKHdhbGtlcihqb2EtPmFyZywgY29udGV4dCkpCisJCQkJCXJldHVy biB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQXJyYXlBZ2c6CisJCQl7 CisJCQkJSnNvbkFycmF5QWdnICpqYWEgPSAoSnNvbkFycmF5QWdnICopIG5vZGU7CisKKwkJ CQlpZiAod2Fsa2VyKGphYS0+Y29uc3RydWN0b3IsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGphYS0+YXJnLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25BcnJheVF1ZXJ5Q29uc3Ry dWN0b3I6CisJCQl7CisJCQkJSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvciAqamFxYyA9IChK c29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKGph cWMtPm91dHB1dCwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxr ZXIoamFxYy0+cXVlcnksIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJ CWJyZWFrOworCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgorCQkJcmV0dXJuIHdhbGtlcigo KEpzb25Jc1ByZWRpY2F0ZSAqKSBub2RlKS0+ZXhwciwgY29udGV4dCk7CisJCWNhc2UgVF9K c29uQXJndW1lbnQ6CisJCQlyZXR1cm4gd2Fsa2VyKCgoSnNvbkFyZ3VtZW50ICopIG5vZGUp LT52YWwsIGNvbnRleHQpOworCQljYXNlIFRfSnNvbkNvbW1vbjoKKwkJCXsKKwkJCQlKc29u Q29tbW9uICpqYyA9IChKc29uQ29tbW9uICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKGpj LT5leHByLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihq Yy0+cGF0aHNwZWMsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fs a2VyKGpjLT5wYXNzaW5nLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJ CQlicmVhazsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZp b3IgKmpiID0gKEpzb25CZWhhdmlvciAqKSBub2RlOworCisJCQkJaWYgKGpiLT5idHlwZSA9 PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQgJiYKKwkJCQkJd2Fsa2VyKGpiLT5kZWZhdWx0X2V4 cHIsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQlj YXNlIFRfSnNvbkZ1bmNFeHByOgorCQkJeworCQkJCUpzb25GdW5jRXhwciAqamZlID0gKEpz b25GdW5jRXhwciAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihqZmUtPmNvbW1vbiwgY29u dGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChqZmUtPm91dHB1dCAmJiB3YWxr ZXIoamZlLT5vdXRwdXQsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAo d2Fsa2VyKGpmZS0+b25fZW1wdHksIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CQlpZiAod2Fsa2VyKGpmZS0+b25fZXJyb3IsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhub2RlKSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYwppbmRleCA2YmRhZDQ2MmM3Li4yMzc1MGQ5N2FiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMKQEAgLTE3NTEsNiArMTc1MSwxMjAgQEAgX291dE9uQ29uZmxpY3RF eHByKFN0cmluZ0luZm8gc3RyLCBjb25zdCBPbkNvbmZsaWN0RXhwciAqbm9kZSkKIAlXUklU RV9OT0RFX0ZJRUxEKGV4Y2xSZWxUbGlzdCk7CiB9CiAKK3N0YXRpYyB2b2lkCitfb3V0SnNv bkZvcm1hdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgSnNvbkZvcm1hdCAqbm9kZSkKK3sKKwlX UklURV9OT0RFX1RZUEUoIkpTT05GT1JNQVQiKTsKKworCVdSSVRFX0VOVU1fRklFTEQoZm9y bWF0X3R5cGUsIEpzb25Gb3JtYXRUeXBlKTsKKwlXUklURV9FTlVNX0ZJRUxEKGVuY29kaW5n LCBKc29uRW5jb2RpbmcpOworCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30K Kworc3RhdGljIHZvaWQKK19vdXRKc29uUmV0dXJuaW5nKFN0cmluZ0luZm8gc3RyLCBjb25z dCBKc29uUmV0dXJuaW5nICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiSlNPTlJFVFVS TklORyIpOworCisJV1JJVEVfTk9ERV9GSUVMRChmb3JtYXQpOworCVdSSVRFX09JRF9GSUVM RCh0eXBpZCk7CisJV1JJVEVfSU5UX0ZJRUxEKHR5cG1vZCk7Cit9CisKK3N0YXRpYyB2b2lk Citfb3V0SnNvblZhbHVlRXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgSnNvblZhbHVlRXhw ciAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIkpTT05WQUxVRUVYUFIiKTsKKworCVdS SVRFX05PREVfRklFTEQocmF3X2V4cHIpOworCVdSSVRFX05PREVfRklFTEQoZm9ybWF0dGVk X2V4cHIpOworCVdSSVRFX05PREVfRklFTEQoZm9ybWF0KTsKK30KKworc3RhdGljIHZvaWQK K19vdXRKc29uQ29uc3RydWN0b3JFeHByKFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uQ29u c3RydWN0b3JFeHByICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiSlNPTkNUT1JFWFBS Iik7CisKKwlXUklURV9OT0RFX0ZJRUxEKGFyZ3MpOworCVdSSVRFX05PREVfRklFTEQoZnVu Yyk7CisJV1JJVEVfTk9ERV9GSUVMRChjb2VyY2lvbik7CisJV1JJVEVfSU5UX0ZJRUxEKHR5 cGUpOworCVdSSVRFX05PREVfRklFTEQocmV0dXJuaW5nKTsKKwlXUklURV9CT09MX0ZJRUxE KHVuaXF1ZSk7CisJV1JJVEVfQk9PTF9GSUVMRChhYnNlbnRfb25fbnVsbCk7CisJV1JJVEVf TE9DQVRJT05fRklFTEQobG9jYXRpb24pOworfQorCitzdGF0aWMgdm9pZAorX291dEpzb25J c1ByZWRpY2F0ZShTdHJpbmdJbmZvIHN0ciwgY29uc3QgSnNvbklzUHJlZGljYXRlICpub2Rl KQoreworCVdSSVRFX05PREVfVFlQRSgiSlNPTklTUFJFRElDQVRFIik7CisKKwlXUklURV9O T0RFX0ZJRUxEKGV4cHIpOworCVdSSVRFX0VOVU1fRklFTEQodmFsdWVfdHlwZSwgSnNvblZh bHVlVHlwZSk7CisJV1JJVEVfQk9PTF9GSUVMRCh1bmlxdWVfa2V5cyk7CisJV1JJVEVfTE9D QVRJT05fRklFTEQobG9jYXRpb24pOworfQorCitzdGF0aWMgdm9pZAorX291dEpzb25CZWhh dmlvcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgSnNvbkJlaGF2aW9yICpub2RlKQoreworCVdS SVRFX05PREVfVFlQRSgiSlNPTkJFSEFWSU9SIik7CisKKwlXUklURV9FTlVNX0ZJRUxEKGJ0 eXBlLCBKc29uQmVoYXZpb3JUeXBlKTsKKwlXUklURV9OT0RFX0ZJRUxEKGRlZmF1bHRfZXhw cik7Cit9CisKK3N0YXRpYyB2b2lkCitfb3V0SnNvbkV4cHIoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IEpzb25FeHByICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiSlNPTkVYUFIiKTsK KworCVdSSVRFX0VOVU1fRklFTEQob3AsIEpzb25FeHByT3ApOworCVdSSVRFX05PREVfRklF TEQoZm9ybWF0dGVkX2V4cHIpOworCVdSSVRFX05PREVfRklFTEQocmVzdWx0X2NvZXJjaW9u KTsKKwlXUklURV9OT0RFX0ZJRUxEKGZvcm1hdCk7CisJV1JJVEVfTk9ERV9GSUVMRChwYXRo X3NwZWMpOworCVdSSVRFX05PREVfRklFTEQocGFzc2luZ192YWx1ZXMpOworCVdSSVRFX05P REVfRklFTEQocGFzc2luZ19uYW1lcyk7CisJV1JJVEVfTk9ERV9GSUVMRChyZXR1cm5pbmcp OworCVdSSVRFX05PREVfRklFTEQob25fZXJyb3IpOworCVdSSVRFX05PREVfRklFTEQob25f ZW1wdHkpOworCVdSSVRFX05PREVfRklFTEQoY29lcmNpb25zKTsKKwlXUklURV9FTlVNX0ZJ RUxEKHdyYXBwZXIsIEpzb25XcmFwcGVyKTsKKwlXUklURV9CT09MX0ZJRUxEKG9taXRfcXVv dGVzKTsKKwlXUklURV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7Cit9CisKK3N0YXRpYyB2 b2lkCitfb3V0SnNvbkNvZXJjaW9uKFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uQ29lcmNp b24gKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJKU09OQ09FUkNJT04iKTsKKworCVdS SVRFX05PREVfRklFTEQoZXhwcik7CisJV1JJVEVfQk9PTF9GSUVMRCh2aWFfcG9wdWxhdGUp OworCVdSSVRFX0JPT0xfRklFTEQodmlhX2lvKTsKKwlXUklURV9PSURfRklFTEQoY29sbGF0 aW9uKTsKK30KKworc3RhdGljIHZvaWQKK19vdXRKc29uSXRlbUNvZXJjaW9ucyhTdHJpbmdJ bmZvIHN0ciwgY29uc3QgSnNvbkl0ZW1Db2VyY2lvbnMgKm5vZGUpCit7CisJV1JJVEVfTk9E RV9UWVBFKCJKU09OSVRFTUNPRVJDSU9OUyIpOworCisJV1JJVEVfTk9ERV9GSUVMRChudWxs KTsKKwlXUklURV9OT0RFX0ZJRUxEKHN0cmluZyk7CisJV1JJVEVfTk9ERV9GSUVMRChudW1l cmljKTsKKwlXUklURV9OT0RFX0ZJRUxEKGJvb2xlYW4pOworCVdSSVRFX05PREVfRklFTEQo ZGF0ZSk7CisJV1JJVEVfTk9ERV9GSUVMRCh0aW1lKTsKKwlXUklURV9OT0RFX0ZJRUxEKHRp bWV0eik7CisJV1JJVEVfTk9ERV9GSUVMRCh0aW1lc3RhbXApOworCVdSSVRFX05PREVfRklF TEQodGltZXN0YW1wdHopOworCVdSSVRFX05PREVfRklFTEQoY29tcG9zaXRlKTsKK30KKwog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICoJU3R1ZmYgZnJvbSBwYXRobm9kZXMu aC4KQEAgLTQ1MzcsNiArNDY1MSwzMyBAQCBvdXROb2RlKFN0cmluZ0luZm8gc3RyLCBjb25z dCB2b2lkICpvYmopCiAJCQljYXNlIFRfUGFydGl0aW9uUmFuZ2VEYXR1bToKIAkJCQlfb3V0 UGFydGl0aW9uUmFuZ2VEYXR1bShzdHIsIG9iaik7CiAJCQkJYnJlYWs7CisJCQljYXNlIFRf SnNvbkZvcm1hdDoKKwkJCQlfb3V0SnNvbkZvcm1hdChzdHIsIG9iaik7CisJCQkJYnJlYWs7 CisJCQljYXNlIFRfSnNvblJldHVybmluZzoKKwkJCQlfb3V0SnNvblJldHVybmluZyhzdHIs IG9iaik7CisJCQkJYnJlYWs7CisJCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKKwkJCQlfb3V0 SnNvblZhbHVlRXhwcihzdHIsIG9iaik7CisJCQkJYnJlYWs7CisJCQljYXNlIFRfSnNvbkNv bnN0cnVjdG9yRXhwcjoKKwkJCQlfb3V0SnNvbkNvbnN0cnVjdG9yRXhwcihzdHIsIG9iaik7 CisJCQkJYnJlYWs7CisJCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgorCQkJCV9vdXRKc29u SXNQcmVkaWNhdGUoc3RyLCBvYmopOworCQkJCWJyZWFrOworCQkJY2FzZSBUX0pzb25CZWhh dmlvcjoKKwkJCQlfb3V0SnNvbkJlaGF2aW9yKHN0ciwgb2JqKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgVF9Kc29uRXhwcjoKKwkJCQlfb3V0SnNvbkV4cHIoc3RyLCBvYmopOworCQkJCWJy ZWFrOworCQkJY2FzZSBUX0pzb25Db2VyY2lvbjoKKwkJCQlfb3V0SnNvbkNvZXJjaW9uKHN0 ciwgb2JqKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uczoKKwkJ CQlfb3V0SnNvbkl0ZW1Db2VyY2lvbnMoc3RyLCBvYmopOworCQkJCWJyZWFrOwogCiAJCQlk ZWZhdWx0OgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBi L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDNmNjhmN2MxOGQuLmMxNWU4 MWEzNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0xMzg5LDYgKzEzODksMTY1IEBA IF9yZWFkT25Db25mbGljdEV4cHIodm9pZCkKIAlSRUFEX0RPTkUoKTsKIH0KIAorLyoKKyAq IF9yZWFkSnNvbkZvcm1hdAorICovCitzdGF0aWMgSnNvbkZvcm1hdCAqCitfcmVhZEpzb25G b3JtYXQodm9pZCkKK3sKKwlSRUFEX0xPQ0FMUyhKc29uRm9ybWF0KTsKKworCVJFQURfRU5V TV9GSUVMRChmb3JtYXRfdHlwZSwgSnNvbkZvcm1hdFR5cGUpOworCVJFQURfRU5VTV9GSUVM RChlbmNvZGluZywgSnNvbkVuY29kaW5nKTsKKwlSRUFEX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0 aW9uKTsKKworCVJFQURfRE9ORSgpOworfQorCisvKgorICogX3JlYWRKc29uUmV0dXJuaW5n CisgKi8KK3N0YXRpYyBKc29uUmV0dXJuaW5nICoKK19yZWFkSnNvblJldHVybmluZyh2b2lk KQoreworCVJFQURfTE9DQUxTKEpzb25SZXR1cm5pbmcpOworCisJUkVBRF9OT0RFX0ZJRUxE KGZvcm1hdCk7CisJUkVBRF9PSURfRklFTEQodHlwaWQpOworCVJFQURfSU5UX0ZJRUxEKHR5 cG1vZCk7CisKKwlSRUFEX0RPTkUoKTsKK30KKworLyoKKyAqIF9yZWFkSnNvblZhbHVlRXhw cgorICovCitzdGF0aWMgSnNvblZhbHVlRXhwciAqCitfcmVhZEpzb25WYWx1ZUV4cHIodm9p ZCkKK3sKKwlSRUFEX0xPQ0FMUyhKc29uVmFsdWVFeHByKTsKKworCVJFQURfTk9ERV9GSUVM RChyYXdfZXhwcik7CisJUkVBRF9OT0RFX0ZJRUxEKGZvcm1hdHRlZF9leHByKTsKKwlSRUFE X05PREVfRklFTEQoZm9ybWF0KTsKKworCVJFQURfRE9ORSgpOworfQorCisvKgorICogX3Jl YWRKc29uQ29uc3RydWN0b3JFeHByCisgKi8KK3N0YXRpYyBKc29uQ29uc3RydWN0b3JFeHBy ICoKK19yZWFkSnNvbkNvbnN0cnVjdG9yRXhwcih2b2lkKQoreworCVJFQURfTE9DQUxTKEpz b25Db25zdHJ1Y3RvckV4cHIpOworCisJUkVBRF9OT0RFX0ZJRUxEKGFyZ3MpOworCVJFQURf Tk9ERV9GSUVMRChmdW5jKTsKKwlSRUFEX05PREVfRklFTEQoY29lcmNpb24pOworCVJFQURf SU5UX0ZJRUxEKHR5cGUpOworCVJFQURfTk9ERV9GSUVMRChyZXR1cm5pbmcpOworCVJFQURf Qk9PTF9GSUVMRCh1bmlxdWUpOworCVJFQURfQk9PTF9GSUVMRChhYnNlbnRfb25fbnVsbCk7 CisJUkVBRF9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlSRUFEX0RPTkUoKTsKK30K KworLyoKKyAqIF9yZWFkSnNvbkJlaGF2aW9yCisgKi8KK3N0YXRpYyBKc29uQmVoYXZpb3Ig KgorX3JlYWRKc29uQmVoYXZpb3Iodm9pZCkKK3sKKwlSRUFEX0xPQ0FMUyhKc29uQmVoYXZp b3IpOworCisJUkVBRF9FTlVNX0ZJRUxEKGJ0eXBlLCBKc29uQmVoYXZpb3JUeXBlKTsKKwlS RUFEX05PREVfRklFTEQoZGVmYXVsdF9leHByKTsKKworCVJFQURfRE9ORSgpOworfQorCisv KgorICogX3JlYWRKc29uRXhwcgorICovCitzdGF0aWMgSnNvbkV4cHIgKgorX3JlYWRKc29u RXhwcih2b2lkKQoreworCVJFQURfTE9DQUxTKEpzb25FeHByKTsKKworCVJFQURfRU5VTV9G SUVMRChvcCwgSnNvbkV4cHJPcCk7CisJUkVBRF9OT0RFX0ZJRUxEKGZvcm1hdHRlZF9leHBy KTsKKwlSRUFEX05PREVfRklFTEQocmVzdWx0X2NvZXJjaW9uKTsKKwlSRUFEX05PREVfRklF TEQoZm9ybWF0KTsKKwlSRUFEX05PREVfRklFTEQocGF0aF9zcGVjKTsKKwlSRUFEX05PREVf RklFTEQocGFzc2luZ192YWx1ZXMpOworCVJFQURfTk9ERV9GSUVMRChwYXNzaW5nX25hbWVz KTsKKwlSRUFEX05PREVfRklFTEQocmV0dXJuaW5nKTsKKwlSRUFEX05PREVfRklFTEQob25f ZXJyb3IpOworCVJFQURfTk9ERV9GSUVMRChvbl9lbXB0eSk7CisJUkVBRF9OT0RFX0ZJRUxE KGNvZXJjaW9ucyk7CisJUkVBRF9FTlVNX0ZJRUxEKHdyYXBwZXIsIEpzb25XcmFwcGVyKTsK KwlSRUFEX0JPT0xfRklFTEQob21pdF9xdW90ZXMpOworCVJFQURfTE9DQVRJT05fRklFTEQo bG9jYXRpb24pOworCisJUkVBRF9ET05FKCk7Cit9CisKKy8qCisgKiBfcmVhZEpzb25Db2Vy Y2lvbgorICovCitzdGF0aWMgSnNvbkNvZXJjaW9uICoKK19yZWFkSnNvbkNvZXJjaW9uKHZv aWQpCit7CisJUkVBRF9MT0NBTFMoSnNvbkNvZXJjaW9uKTsKKworCVJFQURfTk9ERV9GSUVM RChleHByKTsKKwlSRUFEX0JPT0xfRklFTEQodmlhX3BvcHVsYXRlKTsKKwlSRUFEX0JPT0xf RklFTEQodmlhX2lvKTsKKwlSRUFEX09JRF9GSUVMRChjb2xsYXRpb24pOworCisJUkVBRF9E T05FKCk7Cit9CisKKy8qCisgKiBfcmVhZEpzb25JdGVtQ29lcmNpb25zCisgKi8KK3N0YXRp YyBKc29uSXRlbUNvZXJjaW9ucyAqCitfcmVhZEpzb25JdGVtQ29lcmNpb25zKHZvaWQpCit7 CisJUkVBRF9MT0NBTFMoSnNvbkl0ZW1Db2VyY2lvbnMpOworCisJUkVBRF9OT0RFX0ZJRUxE KG51bGwpOworCVJFQURfTk9ERV9GSUVMRChzdHJpbmcpOworCVJFQURfTk9ERV9GSUVMRChu dW1lcmljKTsKKwlSRUFEX05PREVfRklFTEQoYm9vbGVhbik7CisJUkVBRF9OT0RFX0ZJRUxE KGRhdGUpOworCVJFQURfTk9ERV9GSUVMRCh0aW1lKTsKKwlSRUFEX05PREVfRklFTEQodGlt ZXR6KTsKKwlSRUFEX05PREVfRklFTEQodGltZXN0YW1wKTsKKwlSRUFEX05PREVfRklFTEQo dGltZXN0YW1wdHopOworCVJFQURfTk9ERV9GSUVMRChjb21wb3NpdGUpOworCisJUkVBRF9E T05FKCk7Cit9CisKKy8qCisgKiBfcmVhZEpzb25Jc1ByZWRpY2F0ZQorICovCitzdGF0aWMg SnNvbklzUHJlZGljYXRlICoKK19yZWFkSnNvbklzUHJlZGljYXRlKCkKK3sKKwlSRUFEX0xP Q0FMUyhKc29uSXNQcmVkaWNhdGUpOworCisJUkVBRF9OT0RFX0ZJRUxEKGV4cHIpOworCVJF QURfRU5VTV9GSUVMRCh2YWx1ZV90eXBlLCBKc29uVmFsdWVUeXBlKTsKKwlSRUFEX0JPT0xf RklFTEQodW5pcXVlX2tleXMpOworCVJFQURfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwor CisJUkVBRF9ET05FKCk7Cit9CisKIC8qCiAgKglTdHVmZiBmcm9tIHBhdGhub2Rlcy5oLgog ICoKQEAgLTI5NzQsNiArMzEzMywyNCBAQCBwYXJzZU5vZGVTdHJpbmcodm9pZCkKIAkJcmV0 dXJuX3ZhbHVlID0gX3JlYWRQYXJ0aXRpb25Cb3VuZFNwZWMoKTsKIAllbHNlIGlmIChNQVRD SCgiUEFSVElUSU9OUkFOR0VEQVRVTSIsIDE5KSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRQ YXJ0aXRpb25SYW5nZURhdHVtKCk7CisJZWxzZSBpZiAoTUFUQ0goIkpTT05GT1JNQVQiLCAx MCkpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkSnNvbkZvcm1hdCgpOworCWVsc2UgaWYgKE1B VENIKCJKU09OUkVUVVJOSU5HIiwgMTMpKQorCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25S ZXR1cm5pbmcoKTsKKwllbHNlIGlmIChNQVRDSCgiSlNPTlZBTFVFRVhQUiIsIDEzKSkKKwkJ cmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uVmFsdWVFeHByKCk7CisJZWxzZSBpZiAoTUFUQ0go IkpTT05DVE9SRVhQUiIsIDEyKSkKKwkJcmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uQ29uc3Ry dWN0b3JFeHByKCk7CisJZWxzZSBpZiAoTUFUQ0goIkpTT05JU1BSRURJQ0FURSIsIDE1KSkK KwkJcmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uSXNQcmVkaWNhdGUoKTsKKwllbHNlIGlmIChN QVRDSCgiSlNPTkJFSEFWSU9SIiwgMTIpKQorCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25C ZWhhdmlvcigpOworCWVsc2UgaWYgKE1BVENIKCJKU09ORVhQUiIsIDgpKQorCQlyZXR1cm5f dmFsdWUgPSBfcmVhZEpzb25FeHByKCk7CisJZWxzZSBpZiAoTUFUQ0goIkpTT05DT0VSQ0lP TiIsIDEyKSkKKwkJcmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uQ29lcmNpb24oKTsKKwllbHNl IGlmIChNQVRDSCgiSlNPTklURU1DT0VSQ0lPTlMiLCAxNykpCisJCXJldHVybl92YWx1ZSA9 IF9yZWFkSnNvbkl0ZW1Db2VyY2lvbnMoKTsKIAllbHNlCiAJewogCQllbG9nKEVSUk9SLCAi YmFkbHkgZm9ybWF0dGVkIG5vZGUgc3RyaW5nIFwiJS4zMnNcIi4uLiIsIHRva2VuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDhkYzdkZDRjYTIuLmM3 YjlkOGQxMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3Rz aXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAt NDU0MCw3ICs0NTQwLDggQEAgY29zdF9xdWFsX2V2YWxfd2Fsa2VyKE5vZGUgKm5vZGUsIGNv c3RfcXVhbF9ldmFsX2NvbnRleHQgKmNvbnRleHQpCiAJCQkgSXNBKG5vZGUsIFNRTFZhbHVl RnVuY3Rpb24pIHx8CiAJCQkgSXNBKG5vZGUsIFhtbEV4cHIpIHx8CiAJCQkgSXNBKG5vZGUs IENvZXJjZVRvRG9tYWluKSB8fAotCQkJIElzQShub2RlLCBOZXh0VmFsdWVFeHByKSkKKwkJ CSBJc0Eobm9kZSwgTmV4dFZhbHVlRXhwcikgfHwKKwkJCSBJc0Eobm9kZSwgSnNvbkV4cHIp KQogCXsKIAkJLyogVHJlYXQgYWxsIHRoZXNlIGFzIGhhdmluZyBjb3N0IDEgKi8KIAkJY29u dGV4dC0+dG90YWwucGVyX3R1cGxlICs9IGNwdV9vcGVyYXRvcl9jb3N0OwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGE3MDdkYzlmMjYuLmVlZjQzODE0Nzcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTI4LDYgKzI4LDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2Z1bmN0aW9ucy5oIgorI2luY2x1ZGUg ImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtNTAsNiAr NTEsOSBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMv ZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxz L2pzb24uaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2pz b25wYXRoLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtMzgyLDYg KzM4Niw0NSBAQCBjb250YWluX211dGFibGVfZnVuY3Rpb25zX3dhbGtlcihOb2RlICpub2Rl LCB2b2lkICpjb250ZXh0KQogCQkJCQkJCQljb250ZXh0KSkKIAkJcmV0dXJuIHRydWU7CiAK KwlpZiAoSXNBKG5vZGUsIEpzb25Db25zdHJ1Y3RvckV4cHIpKQorCXsKKwkJY29uc3QgSnNv bkNvbnN0cnVjdG9yRXhwciAqY3RvciA9IChKc29uQ29uc3RydWN0b3JFeHByICopIG5vZGU7 CisJCUxpc3RDZWxsICAgKmxjOworCQlib29sCQlpc19qc29uYiA9CisJCQljdG9yLT5yZXR1 cm5pbmctPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0pTT05COworCisJCS8q IENoZWNrIGFyZ3VtZW50X3R5cGUgPT4ganNvbltiXSBjb252ZXJzaW9ucyAqLworCQlmb3Jl YWNoKGxjLCBjdG9yLT5hcmdzKQorCQl7CisJCQlPaWQJCQl0eXBpZCA9IGV4cHJUeXBlKGxm aXJzdChsYykpOworCisJCQlpZiAoaXNfanNvbmIgPworCQkJCSF0b19qc29uYl9pc19pbW11 dGFibGUodHlwaWQpIDoKKwkJCQkhdG9fanNvbl9pc19pbW11dGFibGUodHlwaWQpKQorCQkJ CXJldHVybiB0cnVlOworCQl9CisKKwkJLyogQ2hlY2sgYWxsIHN1Ym5vZGVzICovCisJfQor CisJaWYgKElzQShub2RlLCBKc29uRXhwcikpCisJeworCQlKc29uRXhwciAgICpqZXhwciA9 IGNhc3ROb2RlKEpzb25FeHByLCBub2RlKTsKKwkJQ29uc3QJICAgKmNuc3Q7CisKKwkJaWYg KCFJc0EoamV4cHItPnBhdGhfc3BlYywgQ29uc3QpKQorCQkJcmV0dXJuIHRydWU7CisKKwkJ Y25zdCA9IGNhc3ROb2RlKENvbnN0LCBqZXhwci0+cGF0aF9zcGVjKTsKKworCQlBc3NlcnQo Y25zdC0+Y29uc3R0eXBlID09IEpTT05QQVRIT0lEKTsKKwkJaWYgKGNuc3QtPmNvbnN0aXNu dWxsKQorCQkJcmV0dXJuIGZhbHNlOworCisJCXJldHVybiBqc3BJc011dGFibGUoRGF0dW1H ZXRKc29uUGF0aFAoY25zdC0+Y29uc3R2YWx1ZSksCisJCQkJCQkJamV4cHItPnBhc3Npbmdf bmFtZXMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcyk7CisJfQorCiAJaWYgKElzQShub2RlLCBT UUxWYWx1ZUZ1bmN0aW9uKSkKIAl7CiAJCS8qIGFsbCB2YXJpYW50cyBvZiBTUUxWYWx1ZUZ1 bmN0aW9uIGFyZSBzdGFibGUgKi8KQEAgLTg1Myw2ICs4OTYsMTggQEAgbWF4X3BhcmFsbGVs X2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3BhcmFsbGVsX2hhemFyZF9jb250ZXh0 ICpjb250ZXh0KQogCQkJCQkJCQkgY29udGV4dCwgMCk7CiAJfQogCisJLyogSnNvbkV4cHIg aXMgcGFyYWxsZWwtdW5zYWZlIGlmIHN1YnRyYW5zYWN0aW9ucyBjYW4gYmUgdXNlZC4gKi8K KwllbHNlIGlmIChJc0Eobm9kZSwgSnNvbkV4cHIpKQorCXsKKwkJSnNvbkV4cHIgICpqc2V4 cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQlpZiAoRXhlY0V2YWxKc29uTmVlZHNTdWJU cmFuc2FjdGlvbihqc2V4cHIsIE5VTEwpKQorCQl7CisJCQljb250ZXh0LT5tYXhfaGF6YXJk ID0gUFJPUEFSQUxMRUxfVU5TQUZFOworCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisKIAkv KiBSZWN1cnNlIHRvIGNoZWNrIGFyZ3VtZW50cyAqLwogCXJldHVybiBleHByZXNzaW9uX3Ry ZWVfd2Fsa2VyKG5vZGUsCiAJCQkJCQkJCSAgbWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIs CkBAIC0zNTEyLDYgKzM1NjcsMjkgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9y KE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcigoTm9kZSAqKSBu ZXdjcmUpOwogCQkJCXJldHVybiAoTm9kZSAqKSBuZXdjcmU7CiAJCQl9CisJCWNhc2UgVF9K c29uVmFsdWVFeHByOgorCQkJeworCQkJCUpzb25WYWx1ZUV4cHIgKmp2ZSA9IChKc29uVmFs dWVFeHByICopIG5vZGU7CisJCQkJTm9kZQkgICAqcmF3ID0gZXZhbF9jb25zdF9leHByZXNz aW9uc19tdXRhdG9yKChOb2RlICopIGp2ZS0+cmF3X2V4cHIsCisJCQkJCQkJCQkJCQkJCQkJ IGNvbnRleHQpOworCisJCQkJaWYgKHJhdyAmJiBJc0EocmF3LCBDb25zdCkpCisJCQkJewor CQkJCQlOb2RlCSAgICpmb3JtYXR0ZWQ7CisJCQkJCU5vZGUJICAgKnNhdmVfY2FzZV92YWwg PSBjb250ZXh0LT5jYXNlX3ZhbDsKKworCQkJCQljb250ZXh0LT5jYXNlX3ZhbCA9IHJhdzsK KworCQkJCQlmb3JtYXR0ZWQgPSBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoKE5v ZGUgKikganZlLT5mb3JtYXR0ZWRfZXhwciwKKwkJCQkJCQkJCQkJCQkJCQljb250ZXh0KTsK KworCQkJCQljb250ZXh0LT5jYXNlX3ZhbCA9IHNhdmVfY2FzZV92YWw7CisKKwkJCQkJaWYg KGZvcm1hdHRlZCAmJiBJc0EoZm9ybWF0dGVkLCBDb25zdCkpCisJCQkJCQlyZXR1cm4gZm9y bWF0dGVkOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KIAkJZGVmYXVsdDoKIAkJCWJyZWFr OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGEwM2IzM2I1M2IuLjcwZjU0MWVjZTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQpAQCAtMjgwLDYgKzI4MCwxMyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogCXN0cnVjdCBHcm91cENsYXVzZSAgKmdyb3VwY2xhdXNlOwogCXN0cnVjdCBLZXlB Y3Rpb25zCSprZXlhY3Rpb25zOwogCXN0cnVjdCBLZXlBY3Rpb24JKmtleWFjdGlvbjsKKwlK c29uQmVoYXZpb3IJCSpqc2JlaGF2aW9yOworCXN0cnVjdAorCXsKKwkJSnNvbkJlaGF2aW9y CQkqb25fZW1wdHk7CisJCUpzb25CZWhhdmlvcgkJKm9uX2Vycm9yOworCX0gCQkJCQlvbl9i ZWhhdmlvcjsKKwlKc29uUXVvdGVzCQkJanNfcXVvdGVzOwogfQogCiAldHlwZSA8bm9kZT4J c3RtdCB0b3BsZXZlbF9zdG10IHNjaGVtYV9zdG10IHJvdXRpbmVfYm9keV9zdG10CkBAIC01 NTUsNyArNTYyLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNo YXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxsaXN0 Pgljb3B5X29wdGlvbnMKIAogJXR5cGUgPHR5cG5hbT4JVHlwZW5hbWUgU2ltcGxlVHlwZW5h bWUgQ29uc3RUeXBlbmFtZQotCQkJCUdlbmVyaWNUeXBlIE51bWVyaWMgb3B0X2Zsb2F0CisJ CQkJR2VuZXJpY1R5cGUgTnVtZXJpYyBvcHRfZmxvYXQgSnNvblR5cGUKIAkJCQlDaGFyYWN0 ZXIgQ29uc3RDaGFyYWN0ZXIKIAkJCQlDaGFyYWN0ZXJXaXRoTGVuZ3RoIENoYXJhY3Rlcldp dGhvdXRMZW5ndGgKIAkJCQlDb25zdERhdGV0aW1lIENvbnN0SW50ZXJ2YWwKQEAgLTYzNSw2 ICs2NDIsNzMgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxkZWZlbHQ+ CQloYXNoX3BhcnRib3VuZF9lbGVtCiAKIAorJXR5cGUgPG5vZGU+CQlqc29uX2Zvcm1hdF9j bGF1c2Vfb3B0CisJCQkJCWpzb25fcmVwcmVzZW50YXRpb24KKwkJCQkJanNvbl92YWx1ZV9l eHByCisJCQkJCWpzb25fZnVuY19leHByCisJCQkJCWpzb25fdmFsdWVfZnVuY19leHByCisJ CQkJCWpzb25fcXVlcnlfZXhwcgorCQkJCQlqc29uX2V4aXN0c19wcmVkaWNhdGUKKwkJCQkJ anNvbl9wYXJzZV9leHByCisJCQkJCWpzb25fc2NhbGFyX2V4cHIKKwkJCQkJanNvbl9zZXJp YWxpemVfZXhwcgorCQkJCQlqc29uX2FwaV9jb21tb25fc3ludGF4CisJCQkJCWpzb25fY29u dGV4dF9pdGVtCisJCQkJCWpzb25fYXJndW1lbnQKKwkJCQkJanNvbl9vdXRwdXRfY2xhdXNl X29wdAorCQkJCQlqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0CisJCQkJCWpzb25fdmFsdWVf Y29uc3RydWN0b3IKKwkJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3IKKwkJCQkJanNvbl9v YmplY3RfY29uc3RydWN0b3JfYXJncworCQkJCQlqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9h cmdzX29wdAorCQkJCQlqc29uX29iamVjdF9hcmdzCisJCQkJCWpzb25fb2JqZWN0X2Z1bmNf YXJncworCQkJCQlqc29uX2FycmF5X2NvbnN0cnVjdG9yCisJCQkJCWpzb25fbmFtZV9hbmRf dmFsdWUKKwkJCQkJanNvbl9hZ2dyZWdhdGVfZnVuYworCQkJCQlqc29uX29iamVjdF9hZ2dy ZWdhdGVfY29uc3RydWN0b3IKKwkJCQkJanNvbl9hcnJheV9hZ2dyZWdhdGVfY29uc3RydWN0 b3IKKwkJCQkJanNvbl9wYXRoX3NwZWNpZmljYXRpb24KKworJXR5cGUgPGxpc3Q+CQlqc29u X25hbWVfYW5kX3ZhbHVlX2xpc3QKKwkJCQkJanNvbl92YWx1ZV9leHByX2xpc3QKKwkJCQkJ anNvbl9hcnJheV9hZ2dyZWdhdGVfb3JkZXJfYnlfY2xhdXNlX29wdAorCQkJCQlqc29uX2Fy Z3VtZW50cworCQkJCQlqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCisldHlwZSA8c3RyPgkJ CWpzb25fdGFibGVfcGF0aF9uYW1lCisJCQkJCWpzb25fYXNfcGF0aF9uYW1lX2NsYXVzZV9v cHQKKworJXR5cGUgPGl2YWw+CQlqc29uX2VuY29kaW5nCisJCQkJCWpzb25fZW5jb2Rpbmdf Y2xhdXNlX29wdAorCQkJCQlqc29uX3dyYXBwZXJfY2xhdXNlX29wdAorCQkJCQlqc29uX3dy YXBwZXJfYmVoYXZpb3IKKwkJCQkJanNvbl9jb25kaXRpb25hbF9vcl91bmNvbmRpdGlvbmFs X29wdAorCQkJCQlqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnRfb3B0CisKKyV0eXBl IDxqc2JlaGF2aW9yPglqc29uX2JlaGF2aW9yX2Vycm9yCisJCQkJCWpzb25fYmVoYXZpb3Jf bnVsbAorCQkJCQlqc29uX2JlaGF2aW9yX3RydWUKKwkJCQkJanNvbl9iZWhhdmlvcl9mYWxz ZQorCQkJCQlqc29uX2JlaGF2aW9yX3Vua25vd24KKwkJCQkJanNvbl9iZWhhdmlvcl9lbXB0 eV9hcnJheQorCQkJCQlqc29uX2JlaGF2aW9yX2VtcHR5X29iamVjdAorCQkJCQlqc29uX2Jl aGF2aW9yX2RlZmF1bHQKKwkJCQkJanNvbl92YWx1ZV9iZWhhdmlvcgorCQkJCQlqc29uX3F1 ZXJ5X2JlaGF2aW9yCisJCQkJCWpzb25fZXhpc3RzX2Vycm9yX2JlaGF2aW9yCisJCQkJCWpz b25fZXhpc3RzX2Vycm9yX2NsYXVzZV9vcHQKKworJXR5cGUgPG9uX2JlaGF2aW9yPiBqc29u X3ZhbHVlX29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQkJanNvbl9xdWVyeV9vbl9iZWhh dmlvcl9jbGF1c2Vfb3B0CisKKyV0eXBlIDxqc19xdW90ZXM+CWpzb25fcXVvdGVzX2JlaGF2 aW9yCisJCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQKKworJXR5cGUgPGJvb2xlYW4+CQlq c29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CisJCQkJCWpzb25fb2JqZWN0X2Nv bnN0cnVjdG9yX251bGxfY2xhdXNlX29wdAorCQkJCQlqc29uX2FycmF5X2NvbnN0cnVjdG9y X251bGxfY2xhdXNlX29wdAorCiAvKgogICogTm9uLWtleXdvcmQgdG9rZW4gdHlwZXMuICBU aGVzZSBhcmUgaGFyZC13aXJlZCBpbnRvIHRoZSAiZmxleCIgbGV4ZXIuCiAgKiBUaGV5IG11 c3QgYmUgbGlzdGVkIGZpcnN0IHNvIHRoYXQgdGhlaXIgbnVtZXJpYyBjb2RlcyBkbyBub3Qg ZGVwZW5kIG9uCkBAIC02NjAsNyArNzM0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKICAqLwogCiAvKiBvcmRpbmFyeSBrZXkgd29yZHMgaW4gYWxwaGFiZXRpY2FsIG9yZGVy ICovCi0ldG9rZW4gPGtleXdvcmQ+IEFCT1JUX1AgQUJTT0xVVEVfUCBBQ0NFU1MgQUNUSU9O IEFERF9QIEFETUlOIEFGVEVSCisldG9rZW4gPGtleXdvcmQ+IEFCT1JUX1AgQUJTRU5UIEFC U09MVVRFX1AgQUNDRVNTIEFDVElPTiBBRERfUCBBRE1JTiBBRlRFUgogCUFHR1JFR0FURSBB TEwgQUxTTyBBTFRFUiBBTFdBWVMgQU5BTFlTRSBBTkFMWVpFIEFORCBBTlkgQVJSQVkgQVMg QVNDCiAJQVNFTlNJVElWRSBBU1NFUlRJT04gQVNTSUdOTUVOVCBBU1lNTUVUUklDIEFUT01J QyBBVCBBVFRBQ0ggQVRUUklCVVRFIEFVVEhPUklaQVRJT04KIApAQCAtNjcwLDcgKzc0NCw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJQ0FDSEUgQ0FMTCBDQUxMRUQgQ0FT Q0FERSBDQVNDQURFRCBDQVNFIENBU1QgQ0FUQUxPR19QIENIQUlOIENIQVJfUAogCUNIQVJB Q1RFUiBDSEFSQUNURVJJU1RJQ1MgQ0hFQ0sgQ0hFQ0tQT0lOVCBDTEFTUyBDTE9TRQogCUNM VVNURVIgQ09BTEVTQ0UgQ09MTEFURSBDT0xMQVRJT04gQ09MVU1OIENPTFVNTlMgQ09NTUVO VCBDT01NRU5UUyBDT01NSVQKLQlDT01NSVRURUQgQ09NUFJFU1NJT04gQ09OQ1VSUkVOVExZ IENPTkZJR1VSQVRJT04gQ09ORkxJQ1QKKwlDT01NSVRURUQgQ09NUFJFU1NJT04gQ09OQ1VS UkVOVExZIENPTkRJVElPTkFMIENPTkZJR1VSQVRJT04gQ09ORkxJQ1QKIAlDT05ORUNUSU9O IENPTlNUUkFJTlQgQ09OU1RSQUlOVFMgQ09OVEVOVF9QIENPTlRJTlVFX1AgQ09OVkVSU0lP Tl9QIENPUFkKIAlDT1NUIENSRUFURSBDUk9TUyBDU1YgQ1VCRSBDVVJSRU5UX1AKIAlDVVJS RU5UX0NBVEFMT0cgQ1VSUkVOVF9EQVRFIENVUlJFTlRfUk9MRSBDVVJSRU5UX1NDSEVNQQpA QCAtNjgxLDEyICs3NTUsMTIgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlERVRB Q0ggRElDVElPTkFSWSBESVNBQkxFX1AgRElTQ0FSRCBESVNUSU5DVCBETyBET0NVTUVOVF9Q IERPTUFJTl9QCiAJRE9VQkxFX1AgRFJPUAogCi0JRUFDSCBFTFNFIEVOQUJMRV9QIEVOQ09E SU5HIEVOQ1JZUFRFRCBFTkRfUCBFTlVNX1AgRVNDQVBFIEVWRU5UIEVYQ0VQVAotCUVYQ0xV REUgRVhDTFVESU5HIEVYQ0xVU0lWRSBFWEVDVVRFIEVYSVNUUyBFWFBMQUlOIEVYUFJFU1NJ T04KKwlFQUNIIEVMU0UgRU1QVFlfUCBFTkFCTEVfUCBFTkNPRElORyBFTkNSWVBURUQgRU5E X1AgRU5VTV9QIEVSUk9SX1AgRVNDQVBFCisJRVZFTlQgRVhDRVBUIEVYQ0xVREUgRVhDTFVE SU5HIEVYQ0xVU0lWRSBFWEVDVVRFIEVYSVNUUyBFWFBMQUlOIEVYUFJFU1NJT04KIAlFWFRF TlNJT04gRVhURVJOQUwgRVhUUkFDVAogCiAJRkFMU0VfUCBGQU1JTFkgRkVUQ0ggRklMVEVS IEZJTkFMSVpFIEZJUlNUX1AgRkxPQVRfUCBGT0xMT1dJTkcgRk9SCi0JRk9SQ0UgRk9SRUlH TiBGT1JXQVJEIEZSRUVaRSBGUk9NIEZVTEwgRlVOQ1RJT04gRlVOQ1RJT05TCisJRk9SQ0Ug Rk9SRUlHTiBGT1JNQVQgRk9SV0FSRCBGUkVFWkUgRlJPTSBGVUxMIEZVTkNUSU9OIEZVTkNU SU9OUwogCiAJR0VORVJBVEVEIEdMT0JBTCBHUkFOVCBHUkFOVEVEIEdSRUFURVNUIEdST1VQ X1AgR1JPVVBJTkcgR1JPVVBTCiAKQEAgLTY5Nyw5ICs3NzEsMTAgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAlJTk5FUl9QIElOT1VUIElOUFVUX1AgSU5TRU5TSVRJVkUgSU5T RVJUIElOU1RFQUQgSU5UX1AgSU5URUdFUgogCUlOVEVSU0VDVCBJTlRFUlZBTCBJTlRPIElO Vk9LRVIgSVMgSVNOVUxMIElTT0xBVElPTgogCi0JSk9JTgorCUpPSU4gSlNPTiBKU09OX0FS UkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElTVFMgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RB R0cKKwlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpTT05fVkFMVUUK IAotCUtFWQorCUtFWSBLRVlTIEtFRVAKIAogCUxBQkVMIExBTkdVQUdFIExBUkdFX1AgTEFT VF9QIExBVEVSQUxfUAogCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVWRUwgTElL RSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTApAQCAtNzEyLDcgKzc4Nyw3IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJTk9UIE5PVEhJTkcgTk9USUZZIE5PVE5VTEwgTk9XQUlU IE5VTExfUCBOVUxMSUYKIAlOVUxMU19QIE5VTUVSSUMKIAotCU9CSkVDVF9QIE9GIE9GRiBP RkZTRVQgT0lEUyBPTEQgT04gT05MWSBPUEVSQVRPUiBPUFRJT04gT1BUSU9OUyBPUgorCU9C SkVDVF9QIE9GIE9GRiBPRkZTRVQgT0lEUyBPTEQgT01JVCBPTiBPTkxZIE9QRVJBVE9SIE9Q VElPTiBPUFRJT05TIE9SCiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJf UAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKQEAg LTcyMCwxNyArNzk1LDE3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUE9TSVRJ T04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1B UlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMg UFJPR1JBTSBQVUJMSUNBVElPTgogCi0JUVVPVEUKKwlRVU9URSBRVU9URVMKIAogCVJBTkdF IFJFQUQgUkVBTCBSRUFTU0lHTiBSRUNIRUNLIFJFQ1VSU0lWRSBSRUYgUkVGRVJFTkNFUyBS RUZFUkVOQ0lORwogCVJFRlJFU0ggUkVJTkRFWCBSRUxBVElWRV9QIFJFTEVBU0UgUkVOQU1F IFJFUEVBVEFCTEUgUkVQTEFDRSBSRVBMSUNBCiAJUkVTRVQgUkVTVEFSVCBSRVNUUklDVCBS RVRVUk4gUkVUVVJOSU5HIFJFVFVSTlMgUkVWT0tFIFJJR0hUIFJPTEUgUk9MTEJBQ0sgUk9M TFVQCiAJUk9VVElORSBST1VUSU5FUyBST1cgUk9XUyBSVUxFCiAKLQlTQVZFUE9JTlQgU0NI RU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNPTkRfUCBTRUNVUklUWSBTRUxFQ1QgU0VR VUVOQ0UgU0VRVUVOQ0VTCi0JU0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05f VVNFUiBTRVQgU0VUUyBTRVRPRiBTSEFSRSBTSE9XCi0JU0lNSUxBUiBTSU1QTEUgU0tJUCBT TUFMTElOVCBTTkFQU0hPVCBTT01FIFNRTF9QIFNUQUJMRSBTVEFOREFMT05FX1AKLQlTVEFS VCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVE9SRUQgU1RS SUNUX1AgU1RSSVBfUAorCVNBVkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xM IFNFQVJDSCBTRUNPTkRfUCBTRUNVUklUWSBTRUxFQ1QKKwlTRVFVRU5DRSBTRVFVRU5DRVMg U0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRP RgorCVNIQVJFIFNIT1cgU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBT T01FIFNRTF9QIFNUQUJMRSBTVEFOREFMT05FX1AKKwlTVEFSVCBTVEFURU1FTlQgU1RBVElT VElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVE9SRUQgU1RSSUNUX1AgU1RSSU5HIFNUUklQ X1AKIAlTVUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZ U1RFTV9QCiAKIAlUQUJMRSBUQUJMRVMgVEFCTEVTQU1QTEUgVEFCTEVTUEFDRSBURU1QIFRF TVBMQVRFIFRFTVBPUkFSWSBURVhUX1AgVEhFTgpAQCAtNzM4LDcgKzgxMyw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICph bGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVFJFQVQgVFJJR0dFUiBUUklNIFRSVUVfUAogCVRS VU5DQVRFIFRSVVNURUQgVFlQRV9QIFRZUEVTX1AKIAotCVVFU0NBUEUgVU5CT1VOREVEIFVO Q09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCisJVUVTQ0FQRSBV TkJPVU5ERUQgVU5DT05ESVRJT05BTCBVTkNPTU1JVFRFRCBVTkVOQ1JZUFRFRCBVTklPTiBV TklRVUUgVU5LTk9XTgogCVVOTElTVEVOIFVOTE9HR0VEIFVOVElMIFVQREFURSBVU0VSIFVT SU5HCiAKIAlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVT IFZBUkNIQVIgVkFSSUFESUMgVkFSWUlORwpAQCAtNzYzLDcgKzgzOCw3IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAgKiBhcyBOT1QsIGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0 byB0aGVpciBsZWZ0LWhhbmQgc3ViZXhwcmVzc2lvbi4KICAqIE5VTExTX0xBIGFuZCBXSVRI X0xBIGFyZSBuZWVkZWQgdG8gbWFrZSB0aGUgZ3JhbW1hciBMQUxSKDEpLgogICovCi0ldG9r ZW4JCU5PVF9MQSBOVUxMU19MQSBXSVRIX0xBCisldG9rZW4JCU5PVF9MQSBOVUxMU19MQSBX SVRIX0xBIFdJVEhfTEFfVU5JUVVFIFdJVEhPVVRfTEEKIAogLyoKICAqIFRoZSBncmFtbWFy IGxpa2V3aXNlIHRoaW5rcyB0aGVzZSB0b2tlbnMgYXJlIGtleXdvcmRzLCBidXQgdGhleSBh cmUgbmV2ZXIKQEAgLTc4MSw2ICs4NTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCiAvKiBQcmVjZWRlbmNlOiBsb3dlc3QgdG8gaGlnaGVzdCAqLwogJW5vbmFzc29jCVNF VAkJCQkvKiBzZWUgcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMgKi8KKyVyaWdodAkJRk9STUFU CiAlbGVmdAkJVU5JT04gRVhDRVBUCiAlbGVmdAkJSU5URVJTRUNUCiAlbGVmdAkJT1IKQEAg LTgxNiwxMSArODkyLDE1IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAgKiBVc2lu ZyB0aGUgc2FtZSBwcmVjZWRlbmNlIGFzIElERU5UIHNlZW1zIHJpZ2h0IGZvciB0aGUgcmVh c29ucyBnaXZlbiBhYm92ZS4KICAqLwogJW5vbmFzc29jCVVOQk9VTkRFRAkJLyogaWRlYWxs eSB3b3VsZCBoYXZlIHNhbWUgcHJlY2VkZW5jZSBhcyBJREVOVCAqLworJW5vbmFzc29jCUVS Uk9SX1AgRU1QVFlfUCBERUZBVUxUIEFCU0VOVCAvKiBKU09OIGVycm9yL2VtcHR5IGJlaGF2 aW9yICovCislbm9uYXNzb2MJRkFMU0VfUCBLRUVQIE9NSVQgUEFTU0lORyBUUlVFX1AgVU5L Tk9XTiBVTklRVUUgSlNPTgogJW5vbmFzc29jCUlERU5UIFBBUlRJVElPTiBSQU5HRSBST1dT IEdST1VQUyBQUkVDRURJTkcgRk9MTE9XSU5HIENVQkUgUk9MTFVQCiAlbGVmdAkJT3AgT1BF UkFUT1IJCS8qIG11bHRpLWNoYXJhY3RlciBvcHMgYW5kIHVzZXItZGVmaW5lZCBvcGVyYXRv cnMgKi8KICVsZWZ0CQknKycgJy0nCiAlbGVmdAkJJyonICcvJyAnJScKICVsZWZ0CQknXicK KyVsZWZ0CQlLRVlTCQkJCQkJLyogVU5JUVVFIFsgS0VZUyBdICovCislbGVmdAkJT0JKRUNU X1AgU0NBTEFSIFZBTFVFX1AJCS8qIEpTT04gWyBPQkpFQ1QgfCBTQ0FMQVIgfCBWQUxVRSBd ICovCiAvKiBVbmFyeSBPcGVyYXRvcnMgKi8KICVsZWZ0CQlBVAkJCQkvKiBzZXRzIHByZWNl ZGVuY2UgZm9yIEFUIFRJTUUgWk9ORSAqLwogJWxlZnQJCUNPTExBVEUKQEAgLTgzOCw2ICs5 MTgsOSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICovCiAlbGVmdAkJSk9JTiBD Uk9TUyBMRUZUIEZVTEwgUklHSFQgSU5ORVJfUCBOQVRVUkFMCiAKKyVub25hc3NvYwllbXB0 eV9qc29uX3VuaXF1ZQorJWxlZnQJCVdJVEhPVVQgV0lUSF9MQV9VTklRVUUKKwogJSUKIAog LyoKQEAgLTEzMDUyLDYgKzEzMTM1LDcgQEAgU2ltcGxlVHlwZW5hbWU6CiAJCQkJCSQkLT50 eXBtb2RzID0gbGlzdF9tYWtlMihtYWtlSW50Q29uc3QoSU5URVJWQUxfRlVMTF9SQU5HRSwg LTEpLAogCQkJCQkJCQkJCQkgbWFrZUludENvbnN0KCQzLCBAMykpOwogCQkJCX0KKwkJCXwg SnNvblR5cGUJCQkJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKIC8qIFdlIGhhdmUgYSBzZXBh cmF0ZSBDb25zdFR5cGVuYW1lIHRvIGFsbG93IGRlZmF1bHRpbmcgZml4ZWQtbGVuZ3RoCkBA IC0xMzA3MCw2ICsxMzE1NCw3IEBAIENvbnN0VHlwZW5hbWU6CiAJCQl8IENvbnN0Qml0CQkJ CQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgQ29uc3RDaGFyYWN0ZXIJCQkJCQl7ICQkID0gJDE7 IH0KIAkJCXwgQ29uc3REYXRldGltZQkJCQkJCQl7ICQkID0gJDE7IH0KKwkJCXwgSnNvblR5 cGUJCQkJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKIC8qCkBAIC0xMzM2Myw3ICsxMzQ0OCw3 IEBAIENvbnN0SW50ZXJ2YWw6CiAKIG9wdF90aW1lem9uZToKIAkJCVdJVEhfTEEgVElNRSBa T05FCQkJCQkJeyAkJCA9IHRydWU7IH0KLQkJCXwgV0lUSE9VVCBUSU1FIFpPTkUJCQkJCQl7 ICQkID0gZmFsc2U7IH0KKwkJCXwgV0lUSE9VVF9MQSBUSU1FIFpPTkUJCQkJCXsgJCQgPSBm YWxzZTsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBmYWxzZTsgfQogCQk7CiAK QEAgLTEzNDM4LDYgKzEzNTIzLDEzIEBAIGludGVydmFsX3NlY29uZDoKIAkJCQl9CiAJCTsK IAorSnNvblR5cGU6CisJCQlKU09OCisJCQkJeworCQkJCQkkJCA9IFN5c3RlbVR5cGVOYW1l KCJqc29uIik7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0KKwkJOwogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xMzg5NCw2ICsxMzk4Niw0NiBAQCBhX2V4 cHI6CQljX2V4cHIJCQkJCQkJCQl7ICQkID0gJDE7IH0KIAkJCQkJCQkJCQkJCQkJICAgQDIp LAogCQkJCQkJCQkJIEAyKTsKIAkJCQl9CisJCQl8IGFfZXhwcgorCQkJCUlTIGpzb25fcHJl ZGljYXRlX3R5cGVfY29uc3RyYWludF9vcHQKKwkJCQkJanNvbl9rZXlfdW5pcXVlbmVzc19j b25zdHJhaW50X29wdAkJJXByZWMgSVMKKwkJCQl7CisJCQkJCUpzb25Gb3JtYXQgKmZvcm1h dCA9IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwg LTEpOworCQkJCQkkJCA9IG1ha2VKc29uSXNQcmVkaWNhdGUoJDEsIGZvcm1hdCwgJDMsICQ0 LCBAMSk7CisJCQkJfQorCQkJLyoKKwkJCSAqIFJlcXVpcmVkIGJ5IHN0YW5kYXJkLCBidXQg aXQgd291bGQgY29uZmxpY3Qgd2l0aCBleHByZXNzaW9ucworCQkJICogbGlrZTogJ3N0cicg fHwgZm9ybWF0KC4uLikKKwkJCXwgYV9leHByCisJCQkJRk9STUFUIGpzb25fcmVwcmVzZW50 YXRpb24KKwkJCQlJUyAganNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50X29wdAorCQkJ CQlqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CQklcHJlYyBGT1JNQVQKKwkJ CQl7CisJCQkJCSQzLmxvY2F0aW9uID0gQDI7CisJCQkJCSQkID0gbWFrZUpzb25Jc1ByZWRp Y2F0ZSgkMSwgJDMsICQ1LCAkNiwgQDEpOworCQkJCX0KKwkJCSovCisJCQl8IGFfZXhwcgor CQkJCUlTIE5PVAorCQkJCQlqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnRfb3B0CisJ CQkJCWpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQJCSVwcmVjIElTCisJCQkJ eworCQkJCQlKc29uRm9ybWF0ICpmb3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRf REVGQVVMVCwgSlNfRU5DX0RFRkFVTFQsIC0xKTsKKwkJCQkJJCQgPSBtYWtlTm90RXhwciht YWtlSnNvbklzUHJlZGljYXRlKCQxLCBmb3JtYXQsICQ0LCAkNSwgQDEpLCBAMSk7CisJCQkJ fQorCQkJLyoKKwkJCSAqIFJlcXVpcmVkIGJ5IHN0YW5kYXJkLCBidXQgaXQgd291bGQgY29u ZmxpY3Qgd2l0aCBleHByZXNzaW9ucworCQkJICogbGlrZTogJ3N0cicgfHwgZm9ybWF0KC4u LikKKwkJCXwgYV9leHByCisJCQkJRk9STUFUIGpzb25fcmVwcmVzZW50YXRpb24KKwkJCQlJ UyBOT1QKKwkJCQkJanNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50X29wdAorCQkJCQlq c29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CQklcHJlYyBGT1JNQVQKKwkJCQl7 CisJCQkJCSQzLmxvY2F0aW9uID0gQDI7CisJCQkJCSQkID0gbWFrZU5vdEV4cHIobWFrZUpz b25Jc1ByZWRpY2F0ZSgkMSwgJDMsICQ2LCAkNywgQDEpLCBAMSk7CisJCQkJfQorCQkJKi8K IAkJCXwgREVGQVVMVAogCQkJCXsKIAkJCQkJLyoKQEAgLTEzOTc2LDYgKzE0MTA4LDI1IEBA IGJfZXhwcjoJCWNfZXhwcgogCQkJCX0KIAkJOwogCitqc29uX3ByZWRpY2F0ZV90eXBlX2Nv bnN0cmFpbnRfb3B0OgorCQkJSlNPTgkJCQkJCQkJCXsgJCQgPSBKU19UWVBFX0FOWTsgfQor CQkJfCBKU09OIFZBTFVFX1AJCQkJCQkJeyAkJCA9IEpTX1RZUEVfQU5ZOyB9CisJCQl8IEpT T04gQVJSQVkJCQkJCQkJeyAkJCA9IEpTX1RZUEVfQVJSQVk7IH0KKwkJCXwgSlNPTiBPQkpF Q1RfUAkJCQkJCQl7ICQkID0gSlNfVFlQRV9PQkpFQ1Q7IH0KKwkJCXwgSlNPTiBTQ0FMQVIJ CQkJCQkJeyAkJCA9IEpTX1RZUEVfU0NBTEFSOyB9CisJCTsKKworanNvbl9rZXlfdW5pcXVl bmVzc19jb25zdHJhaW50X29wdDoKKwkJCVdJVEhfTEFfVU5JUVVFIHVuaXF1ZV9rZXlzCQkJ CXsgJCQgPSB0cnVlOyB9CisJCQl8IFdJVEhPVVQgdW5pcXVlX2tleXMJCQkJCXsgJCQgPSBm YWxzZTsgfQorCQkJfCAvKiBFTVBUWSAqLyAlcHJlYyBlbXB0eV9qc29uX3VuaXF1ZQl7ICQk ID0gZmFsc2U7IH0KKwkJOworCit1bmlxdWVfa2V5czoKKwkJCVVOSVFVRQorCQkJfCBVTklR VUUgS0VZUworCQk7CisKIC8qCiAgKiBQcm9kdWN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGlu IGJvdGggYV9leHByIGFuZCBiX2V4cHIuCiAgKgpAQCAtMTQyMjgsNiArMTQzNzksMTUgQEAg ZnVuY19leHByOiBmdW5jX2FwcGxpY2F0aW9uIHdpdGhpbl9ncm91cF9jbGF1c2UgZmlsdGVy X2NsYXVzZSBvdmVyX2NsYXVzZQogCQkJCQluLT5vdmVyID0gJDQ7CiAJCQkJCSQkID0gKE5v ZGUgKikgbjsKIAkJCQl9CisJCQl8IGpzb25fYWdncmVnYXRlX2Z1bmMgZmlsdGVyX2NsYXVz ZSBvdmVyX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvbkFnZ0NvbnN0cnVjdG9yICpuID0gSXNB KCQxLCBKc29uT2JqZWN0QWdnKSA/CisJCQkJCQkoKEpzb25PYmplY3RBZ2cgKikgJDEpLT5j b25zdHJ1Y3RvciA6CisJCQkJCQkoKEpzb25BcnJheUFnZyAqKSAkMSktPmNvbnN0cnVjdG9y OworCQkJCQluLT5hZ2dfZmlsdGVyID0gJDI7CisJCQkJCW4tPm92ZXIgPSAkMzsKKwkJCQkJ JCQgPSAoTm9kZSAqKSAkMTsKKwkJCQl9CiAJCQl8IGZ1bmNfZXhwcl9jb21tb25fc3ViZXhw cgogCQkJCXsgJCQgPSAkMTsgfQogCQk7CkBAIC0xNDI0MSw2ICsxNDQwMSw3IEBAIGZ1bmNf ZXhwcjogZnVuY19hcHBsaWNhdGlvbiB3aXRoaW5fZ3JvdXBfY2xhdXNlIGZpbHRlcl9jbGF1 c2Ugb3Zlcl9jbGF1c2UKIGZ1bmNfZXhwcl93aW5kb3dsZXNzOgogCQkJZnVuY19hcHBsaWNh dGlvbgkJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBmdW5jX2V4cHJfY29tbW9uX3N1YmV4cHIJ CQkJeyAkJCA9ICQxOyB9CisJCQl8IGpzb25fYWdncmVnYXRlX2Z1bmMJCQkJCXsgJCQgPSAk MTsgfQogCQk7CiAKIC8qCkBAIC0xNDUyOCw2ICsxNDY4OSw4IEBAIGZ1bmNfZXhwcl9jb21t b25fc3ViZXhwcjoKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAq KW47CiAJCQkJfQorCQkJfCBqc29uX2Z1bmNfZXhwcgorCQkJCXsgJCQgPSAkMTsgfQogCQk7 CiAKIC8qCkBAIC0xNTIyNiw2ICsxNTM4OSw1MzAgQEAgb3B0X2FzeW1tZXRyaWM6IEFTWU1N RVRSSUMKIAkJCXwgLypFTVBUWSovCiAJCTsKIAorLyogU1FML0pTT04gc3VwcG9ydCAqLwor anNvbl9mdW5jX2V4cHI6CisJCQlqc29uX3ZhbHVlX2NvbnN0cnVjdG9yCisJCQl8IGpzb25f dmFsdWVfZnVuY19leHByCisJCQl8IGpzb25fcXVlcnlfZXhwcgorCQkJfCBqc29uX2V4aXN0 c19wcmVkaWNhdGUKKwkJCXwganNvbl9wYXJzZV9leHByCisJCQl8IGpzb25fc2NhbGFyX2V4 cHIKKwkJCXwganNvbl9zZXJpYWxpemVfZXhwcgorCQk7CisKK2pzb25fcGFyc2VfZXhwcjoK KwkJCUpTT04gJygnIGpzb25fdmFsdWVfZXhwciBqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0 cmFpbnRfb3B0CisJCQkJCSBqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0ICcpJworCQkJCXsK KwkJCQkJSnNvblBhcnNlRXhwciAqbiA9IG1ha2VOb2RlKEpzb25QYXJzZUV4cHIpOworCQkJ CQluLT5leHByID0gKEpzb25WYWx1ZUV4cHIgKikgJDM7CisJCQkJCW4tPnVuaXF1ZV9rZXlz ID0gJDQ7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ1OworCQkJCQluLT5s b2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pz b25fc2NhbGFyX2V4cHI6CisJCQlKU09OX1NDQUxBUiAnKCcgYV9leHByIGpzb25fcmV0dXJu aW5nX2NsYXVzZV9vcHQgJyknCisJCQkJeworCQkJCQlKc29uU2NhbGFyRXhwciAqbiA9IG1h a2VOb2RlKEpzb25TY2FsYXJFeHByKTsKKwkJCQkJbi0+ZXhwciA9IChFeHByICopICQzOwor CQkJCQluLT5vdXRwdXQgPSAoSnNvbk91dHB1dCAqKSAkNDsKKwkJCQkJbi0+bG9jYXRpb24g PSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3Nlcmlh bGl6ZV9leHByOgorCQkJSlNPTl9TRVJJQUxJWkUgJygnIGpzb25fdmFsdWVfZXhwciBqc29u X291dHB1dF9jbGF1c2Vfb3B0ICcpJworCQkJCXsKKwkJCQkJSnNvblNlcmlhbGl6ZUV4cHIg Km4gPSBtYWtlTm9kZShKc29uU2VyaWFsaXplRXhwcik7CisJCQkJCW4tPmV4cHIgPSAoSnNv blZhbHVlRXhwciAqKSAkMzsKKwkJCQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDQ7 CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9 CisJCTsKKworanNvbl92YWx1ZV9mdW5jX2V4cHI6CisJCQlKU09OX1ZBTFVFICcoJworCQkJ CWpzb25fYXBpX2NvbW1vbl9zeW50YXgKKwkJCQlqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0 CisJCQkJanNvbl92YWx1ZV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQknKScKKwkJCQl7 CisJCQkJCUpzb25GdW5jRXhwciAqbiA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJCQkJ CW4tPm9wID0gSVNfSlNPTl9WQUxVRTsKKwkJCQkJbi0+Y29tbW9uID0gKEpzb25Db21tb24g KikgJDM7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ0OworCQkJCQluLT5v bl9lbXB0eSA9ICQ1Lm9uX2VtcHR5OworCQkJCQluLT5vbl9lcnJvciA9ICQ1Lm9uX2Vycm9y OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJ fQorCQk7CisKK2pzb25fYXBpX2NvbW1vbl9zeW50YXg6CisJCQlqc29uX2NvbnRleHRfaXRl bSAnLCcganNvbl9wYXRoX3NwZWNpZmljYXRpb24KKwkJCWpzb25fYXNfcGF0aF9uYW1lX2Ns YXVzZV9vcHQKKwkJCWpzb25fcGFzc2luZ19jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29u Q29tbW9uICpuID0gbWFrZU5vZGUoSnNvbkNvbW1vbik7CisJCQkJCW4tPmV4cHIgPSAoSnNv blZhbHVlRXhwciAqKSAkMTsKKwkJCQkJbi0+cGF0aHNwZWMgPSAkMzsKKwkJCQkJbi0+cGF0 aG5hbWUgPSAkNDsKKwkJCQkJbi0+cGFzc2luZyA9ICQ1OworCQkJCQluLT5sb2NhdGlvbiA9 IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fY29udGV4 dF9pdGVtOgorCQkJanNvbl92YWx1ZV9leHByCQkJCQkJCXsgJCQgPSAkMTsgfQorCQk7CisK K2pzb25fcGF0aF9zcGVjaWZpY2F0aW9uOgorCQkJYV9leHByCQkJCQkJCQkJeyAkJCA9ICQx OyB9CisJCTsKKworanNvbl9hc19wYXRoX25hbWVfY2xhdXNlX29wdDoKKwkJCSBBUyBqc29u X3RhYmxlX3BhdGhfbmFtZQkJCQl7ICQkID0gJDI7IH0KKwkJCSB8IC8qIEVNUFRZICovCQkJ CQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKworanNvbl90YWJsZV9wYXRoX25hbWU6CisJCQlu YW1lCQkJCQkJCQkJeyAkJCA9ICQxOyB9CisJCTsKKworanNvbl9wYXNzaW5nX2NsYXVzZV9v cHQ6CisJCQlQQVNTSU5HIGpzb25fYXJndW1lbnRzCQkJCQl7ICQkID0gJDI7IH0KKwkJCXwg LyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IE5JTDsgfQorCQk7CisKK2pzb25fYXJndW1lbnRz OgorCQkJanNvbl9hcmd1bWVudAkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJ CXwganNvbl9hcmd1bWVudHMgJywnIGpzb25fYXJndW1lbnQJCXsgJCQgPSBsYXBwZW5kKCQx LCAkMyk7IH0KKwkJOworCitqc29uX2FyZ3VtZW50OgorCQkJanNvbl92YWx1ZV9leHByIEFT IENvbExhYmVsCisJCQl7CisJCQkJSnNvbkFyZ3VtZW50ICpuID0gbWFrZU5vZGUoSnNvbkFy Z3VtZW50KTsKKwkJCQluLT52YWwgPSAoSnNvblZhbHVlRXhwciAqKSAkMTsKKwkJCQluLT5u YW1lID0gJDM7CisJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQk7CisKK2pzb25fdmFs dWVfZXhwcjoKKwkJCWFfZXhwciBqc29uX2Zvcm1hdF9jbGF1c2Vfb3B0CisJCQl7CisJCQkJ JCQgPSAoTm9kZSAqKSBtYWtlSnNvblZhbHVlRXhwcigoRXhwciAqKSAkMSwgY2FzdE5vZGUo SnNvbkZvcm1hdCwgJDIpKTsKKwkJCX0KKwkJOworCitqc29uX2Zvcm1hdF9jbGF1c2Vfb3B0 OgorCQkJRk9STUFUIGpzb25fcmVwcmVzZW50YXRpb24KKwkJCQl7CisJCQkJCSQkID0gJDI7 CisJCQkJCWNhc3ROb2RlKEpzb25Gb3JtYXQsICQkKS0+bG9jYXRpb24gPSBAMTsKKwkJCQl9 CisJCQl8IC8qIEVNUFRZICovCisJCQkJeworCQkJCQkkJCA9IChOb2RlICopIG1ha2VKc29u Rm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQkJCX0K KwkJOworCitqc29uX3JlcHJlc2VudGF0aW9uOgorCQkJSlNPTiBqc29uX2VuY29kaW5nX2Ns YXVzZV9vcHQKKwkJCQl7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZUpzb25Gb3JtYXQoSlNf Rk9STUFUX0pTT04sICQyLCBAMSk7CisJCQkJfQorCQkvKgl8IG90aGVyIGltcGxlbWVudGF0 aW9uIGRlZmluZWQgSlNPTiByZXByZXNlbnRhdGlvbiBvcHRpb25zIChCU09OLCBBVlJPIGV0 YykgKi8KKwkJOworCitqc29uX2VuY29kaW5nX2NsYXVzZV9vcHQ6CisJCQlFTkNPRElORyBq c29uX2VuY29kaW5nCQkJCQl7ICQkID0gJDI7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJ eyAkJCA9IEpTX0VOQ19ERUZBVUxUOyB9CisJCTsKKworanNvbl9lbmNvZGluZzoKKwkJCW5h bWUJCQkJCQkJCQl7ICQkID0gbWFrZUpzb25FbmNvZGluZygkMSk7IH0KKwkJOworCitqc29u X2JlaGF2aW9yX2Vycm9yOgorCQkJRVJST1JfUAkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3Io SlNPTl9CRUhBVklPUl9FUlJPUiwgTlVMTCk7IH0KKwkJOworCitqc29uX2JlaGF2aW9yX251 bGw6CisJCQlOVUxMX1AJCXsgJCQgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1Jf TlVMTCwgTlVMTCk7IH0KKwkJOworCitqc29uX2JlaGF2aW9yX3RydWU6CisJCQlUUlVFX1AJ CXsgJCQgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfVFJVRSwgTlVMTCk7IH0K KwkJOworCitqc29uX2JlaGF2aW9yX2ZhbHNlOgorCQkJRkFMU0VfUAkJeyAkJCA9IG1ha2VK c29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9GQUxTRSwgTlVMTCk7IH0KKwkJOworCitqc29u X2JlaGF2aW9yX3Vua25vd246CisJCQlVTktOT1dOCQl7ICQkID0gbWFrZUpzb25CZWhhdmlv cihKU09OX0JFSEFWSU9SX1VOS05PV04sIE5VTEwpOyB9CisJCTsKKworanNvbl9iZWhhdmlv cl9lbXB0eV9hcnJheToKKwkJCUVNUFRZX1AgQVJSQVkJeyAkJCA9IG1ha2VKc29uQmVoYXZp b3IoSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWSwgTlVMTCk7IH0KKwkJCS8qIG5vbi1zdGFu ZGFyZCwgZm9yIE9yYWNsZSBjb21wYXRpYmlsaXR5IG9ubHkgKi8KKwkJCXwgRU1QVFlfUCAJ CXsgJCQgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfRU1QVFlfQVJSQVksIE5V TEwpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl9lbXB0eV9vYmplY3Q6CisJCQlFTVBUWV9Q IE9CSkVDVF9QCXsgJCQgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfRU1QVFlf T0JKRUNULCBOVUxMKTsgfQorCQk7CisKK2pzb25fYmVoYXZpb3JfZGVmYXVsdDoKKwkJCURF RkFVTFQgYV9leHByCXsgJCQgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfREVG QVVMVCwgJDIpOyB9CisJCTsKKworCitqc29uX3ZhbHVlX2JlaGF2aW9yOgorCQkJanNvbl9i ZWhhdmlvcl9udWxsCisJCQl8IGpzb25fYmVoYXZpb3JfZXJyb3IKKwkJCXwganNvbl9iZWhh dmlvcl9kZWZhdWx0CisJCTsKKworanNvbl92YWx1ZV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0 OgorCQkJanNvbl92YWx1ZV9iZWhhdmlvciBPTiBFTVBUWV9QCisJCQkJCQkJCQl7ICQkLm9u X2VtcHR5ID0gJDE7ICQkLm9uX2Vycm9yID0gTlVMTDsgfQorCQkJfCBqc29uX3ZhbHVlX2Jl aGF2aW9yIE9OIEVNUFRZX1AganNvbl92YWx1ZV9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJ CQkJCQl7ICQkLm9uX2VtcHR5ID0gJDE7ICQkLm9uX2Vycm9yID0gJDQ7IH0KKwkJCXwganNv bl92YWx1ZV9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0g TlVMTDsgJCQub25fZXJyb3IgPSAkMTsgfQorCQkJfCAgLyogRU1QVFkgKi8KKwkJCQkJCQkJ CXsgJCQub25fZW1wdHkgPSBOVUxMOyAkJC5vbl9lcnJvciA9IE5VTEw7IH0KKwkJOworCitq c29uX3F1ZXJ5X2V4cHI6CisJCQlKU09OX1FVRVJZICcoJworCQkJCWpzb25fYXBpX2NvbW1v bl9zeW50YXgKKwkJCQlqc29uX291dHB1dF9jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVy X2NsYXVzZV9vcHQKKwkJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl9xdWVy eV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQknKScKKwkJCQl7CisJCQkJCUpzb25GdW5j RXhwciAqbiA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJCQkJCW4tPm9wID0gSVNfSlNP Tl9RVUVSWTsKKwkJCQkJbi0+Y29tbW9uID0gKEpzb25Db21tb24gKikgJDM7CisJCQkJCW4t Pm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ0OworCQkJCQluLT53cmFwcGVyID0gJDU7CisJ CQkJCWlmIChuLT53cmFwcGVyICE9IEpTV19OT05FICYmICQ2ICE9IEpTX1FVT1RFU19VTlNQ RUMpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coIlNRTC9KU09OIFFVT1RFUyBiZWhhdmlv ciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZCIpLAor CQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEA2KSkpOworCQkJCQluLT5vbWl0X3F1b3Rl cyA9ICQ2ID09IEpTX1FVT1RFU19PTUlUOworCQkJCQluLT5vbl9lbXB0eSA9ICQ3Lm9uX2Vt cHR5OworCQkJCQluLT5vbl9lcnJvciA9ICQ3Lm9uX2Vycm9yOworCQkJCQluLT5sb2NhdGlv biA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fd3Jh cHBlcl9jbGF1c2Vfb3B0OgorCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yIFdSQVBQRVIJCQl7 ICQkID0gJDE7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IDA7IH0KKwkJOwor Citqc29uX3dyYXBwZXJfYmVoYXZpb3I6CisJCQlXSVRIT1VUIGFycmF5X29wdAkJCQkJCXsg JCQgPSBKU1dfTk9ORTsgfQorCQkJfCBXSVRIIGpzb25fY29uZGl0aW9uYWxfb3JfdW5jb25k aXRpb25hbF9vcHQgYXJyYXlfb3B0IHsgJCQgPSAkMjsgfQorCQk7CisKK2FycmF5X29wdDoK KwkJCUFSUkFZCQkJCQkJCQkJeyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJCXsgfQorCQk7 CisKK2pzb25fY29uZGl0aW9uYWxfb3JfdW5jb25kaXRpb25hbF9vcHQ6CisJCQlDT05ESVRJ T05BTAkJCQkJCQkJeyAkJCA9IEpTV19DT05ESVRJT05BTDsgfQorCQkJfCBVTkNPTkRJVElP TkFMCQkJCQkJCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCAvKiBFTVBUWSAq LwkJCQkJCQl7ICQkID0gSlNXX1VOQ09ORElUSU9OQUw7IH0KKwkJOworCitqc29uX3F1b3Rl c19jbGF1c2Vfb3B0OgorCQkJanNvbl9xdW90ZXNfYmVoYXZpb3IgUVVPVEVTIGpzb25fb25f c2NhbGFyX3N0cmluZ19vcHQgeyAkJCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJ CXsgJCQgPSBKU19RVU9URVNfVU5TUEVDOyB9CisJCTsKKworanNvbl9xdW90ZXNfYmVoYXZp b3I6CisJCQlLRUVQCQkJCQkJCQkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IE9N SVQJCQkJCQkJCQl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJOworCitqc29uX29uX3Nj YWxhcl9zdHJpbmdfb3B0OgorCQkJT04gU0NBTEFSIFNUUklORwkJCQkJCXsgfQorCQkJfCAv KiBFTVBUWSAqLwkJCQkJCQl7IH0KKwkJOworCitqc29uX3F1ZXJ5X2JlaGF2aW9yOgorCQkJ anNvbl9iZWhhdmlvcl9lcnJvcgorCQkJfCBqc29uX2JlaGF2aW9yX251bGwKKwkJCXwganNv bl9iZWhhdmlvcl9lbXB0eV9hcnJheQorCQkJfCBqc29uX2JlaGF2aW9yX2VtcHR5X29iamVj dAorCQkJfCBqc29uX2JlaGF2aW9yX2RlZmF1bHQKKwkJOworCitqc29uX3F1ZXJ5X29uX2Jl aGF2aW9yX2NsYXVzZV9vcHQ6CisJCQlqc29uX3F1ZXJ5X2JlaGF2aW9yIE9OIEVNUFRZX1AK KwkJCQkJCQkJCXsgJCQub25fZW1wdHkgPSAkMTsgJCQub25fZXJyb3IgPSBOVUxMOyB9CisJ CQl8IGpzb25fcXVlcnlfYmVoYXZpb3IgT04gRU1QVFlfUCBqc29uX3F1ZXJ5X2JlaGF2aW9y IE9OIEVSUk9SX1AKKwkJCQkJCQkJCXsgJCQub25fZW1wdHkgPSAkMTsgJCQub25fZXJyb3Ig PSAkNDsgfQorCQkJfCBqc29uX3F1ZXJ5X2JlaGF2aW9yIE9OIEVSUk9SX1AKKwkJCQkJCQkJ CXsgJCQub25fZW1wdHkgPSBOVUxMOyAkJC5vbl9lcnJvciA9ICQxOyB9CisJCQl8ICAvKiBF TVBUWSAqLworCQkJCQkJCQkJeyAkJC5vbl9lbXB0eSA9IE5VTEw7ICQkLm9uX2Vycm9yID0g TlVMTDsgfQorCQk7CisKK2pzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQ6CisJCQlSRVRVUk5J TkcgVHlwZW5hbWUKKwkJCQl7CisJCQkJCUpzb25PdXRwdXQgKm4gPSBtYWtlTm9kZShKc29u T3V0cHV0KTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+cmV0dXJuaW5nID0g bWFrZU5vZGUoSnNvblJldHVybmluZyk7CisJCQkJCW4tPnJldHVybmluZy0+Zm9ybWF0ID0K KwkJCQkJCW1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVM VCwgQDIpOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCAvKiBFTVBUWSAq LwkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQkJOworCitqc29uX291dHB1dF9jbGF1c2Vfb3B0 OgorCQkJUkVUVVJOSU5HIFR5cGVuYW1lIGpzb25fZm9ybWF0X2NsYXVzZV9vcHQKKwkJCQl7 CisJCQkJCUpzb25PdXRwdXQgKm4gPSBtYWtlTm9kZShKc29uT3V0cHV0KTsKKwkJCQkJbi0+ dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+cmV0dXJuaW5nID0gbWFrZU5vZGUoSnNvblJldHVy bmluZyk7CisJCQkJCW4tPnJldHVybmluZy0+Zm9ybWF0ID0gKEpzb25Gb3JtYXQgKikgJDM7 CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJ CXsgJCQgPSBOVUxMOyB9CisJCQk7CisKK2pzb25fZXhpc3RzX3ByZWRpY2F0ZToKKwkJCUpT T05fRVhJU1RTICcoJworCQkJCWpzb25fYXBpX2NvbW1vbl9zeW50YXgKKwkJCQlqc29uX3Jl dHVybmluZ19jbGF1c2Vfb3B0CisJCQkJanNvbl9leGlzdHNfZXJyb3JfY2xhdXNlX29wdAor CQkJJyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIgKnAgPSBtYWtlTm9kZShKc29uRnVu Y0V4cHIpOworCQkJCQlwLT5vcCA9IElTX0pTT05fRVhJU1RTOworCQkJCQlwLT5jb21tb24g PSAoSnNvbkNvbW1vbiAqKSAkMzsKKwkJCQkJcC0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikg JDQ7CisJCQkJCXAtPm9uX2Vycm9yID0gJDU7CisJCQkJCXAtPmxvY2F0aW9uID0gQDE7CisJ CQkJCSQkID0gKE5vZGUgKikgcDsKKwkJCQl9CisJCTsKKworanNvbl9leGlzdHNfZXJyb3Jf Y2xhdXNlX29wdDoKKwkJCWpzb25fZXhpc3RzX2Vycm9yX2JlaGF2aW9yIE9OIEVSUk9SX1AJ CXsgJCQgPSAkMTsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQkJeyAkJCA9IE5VTEw7IH0K KwkJOworCitqc29uX2V4aXN0c19lcnJvcl9iZWhhdmlvcjoKKwkJCWpzb25fYmVoYXZpb3Jf ZXJyb3IKKwkJCXwganNvbl9iZWhhdmlvcl90cnVlCisJCQl8IGpzb25fYmVoYXZpb3JfZmFs c2UKKwkJCXwganNvbl9iZWhhdmlvcl91bmtub3duCisJCTsKKworanNvbl92YWx1ZV9jb25z dHJ1Y3RvcjoKKwkJCWpzb25fb2JqZWN0X2NvbnN0cnVjdG9yCisJCQl8IGpzb25fYXJyYXlf Y29uc3RydWN0b3IKKwkJOworCitqc29uX29iamVjdF9jb25zdHJ1Y3RvcjoKKwkJCUpTT05f T0JKRUNUICcoJyBqc29uX29iamVjdF9hcmdzICcpJworCQkJCXsKKwkJCQkJJCQgPSAkMzsK KwkJCQl9CisJCTsKKworanNvbl9vYmplY3RfYXJnczoKKwkJCWpzb25fb2JqZWN0X2NvbnN0 cnVjdG9yX2FyZ3MKKwkJCXwganNvbl9vYmplY3RfZnVuY19hcmdzCisJCTsKKworanNvbl9v YmplY3RfZnVuY19hcmdzOgorCQkJZnVuY19hcmdfbGlzdAorCQkJCXsKKwkJCQkJTGlzdCAq ZnVuYyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZygianNvbl9vYmplY3QiKSk7CisJCQkJCSQk ID0gKE5vZGUgKikgbWFrZUZ1bmNDYWxsKGZ1bmMsICQxLCBDT0VSQ0VfRVhQTElDSVRfQ0FM TCwgQDEpOworCQkJCX0KKwkJOworCitqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9hcmdzOgor CQkJanNvbl9vYmplY3RfY29uc3RydWN0b3JfYXJnc19vcHQganNvbl9vdXRwdXRfY2xhdXNl X29wdAorCQkJCXsKKwkJCQkJSnNvbk9iamVjdENvbnN0cnVjdG9yICpuID0gKEpzb25PYmpl Y3RDb25zdHJ1Y3RvciAqKSAkMTsKKwkJCQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikg JDI7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJ CQl9CisJCTsKKworanNvbl9vYmplY3RfY29uc3RydWN0b3JfYXJnc19vcHQ6CisJCQlqc29u X25hbWVfYW5kX3ZhbHVlX2xpc3QKKwkJCWpzb25fb2JqZWN0X2NvbnN0cnVjdG9yX251bGxf Y2xhdXNlX29wdAorCQkJanNvbl9rZXlfdW5pcXVlbmVzc19jb25zdHJhaW50X29wdAorCQkJ CXsKKwkJCQkJSnNvbk9iamVjdENvbnN0cnVjdG9yICpuID0gbWFrZU5vZGUoSnNvbk9iamVj dENvbnN0cnVjdG9yKTsKKwkJCQkJbi0+ZXhwcnMgPSAkMTsKKwkJCQkJbi0+YWJzZW50X29u X251bGwgPSAkMjsKKwkJCQkJbi0+dW5pcXVlID0gJDM7CisJCQkJCSQkID0gKE5vZGUgKikg bjsKKwkJCQl9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeworCQkJCQlKc29uT2JqZWN0Q29u c3RydWN0b3IgKm4gPSBtYWtlTm9kZShKc29uT2JqZWN0Q29uc3RydWN0b3IpOworCQkJCQlu LT5leHBycyA9IE5VTEw7CisJCQkJCW4tPmFic2VudF9vbl9udWxsID0gZmFsc2U7CisJCQkJ CW4tPnVuaXF1ZSA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7 CisKK2pzb25fbmFtZV9hbmRfdmFsdWVfbGlzdDoKKwkJCWpzb25fbmFtZV9hbmRfdmFsdWUK KwkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwganNvbl9uYW1lX2FuZF92YWx1 ZV9saXN0ICcsJyBqc29uX25hbWVfYW5kX3ZhbHVlCisJCQkJeyAkJCA9IGxhcHBlbmQoJDEs ICQzKTsgfQorCQk7CisKK2pzb25fbmFtZV9hbmRfdmFsdWU6CisvKiBUT0RPIFRoaXMgaXMg bm90IHN1cHBvcnRlZCBkdWUgdG8gY29uZmxpY3RzCisJCQlLRVkgY19leHByIFZBTFVFX1Ag anNvbl92YWx1ZV9leHByICVwcmVjIFBPU1RGSVhPUAorCQkJCXsgJCQgPSBtYWtlSnNvbktl eVZhbHVlKCQyLCAkNCk7IH0KKwkJCXwKKyovCisJCQljX2V4cHIgVkFMVUVfUCBqc29uX3Zh bHVlX2V4cHIKKwkJCQl7ICQkID0gbWFrZUpzb25LZXlWYWx1ZSgkMSwgJDMpOyB9CisJCQl8 CisJCQlhX2V4cHIgJzonIGpzb25fdmFsdWVfZXhwcgorCQkJCXsgJCQgPSBtYWtlSnNvbktl eVZhbHVlKCQxLCAkMyk7IH0KKwkJOworCitqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9udWxs X2NsYXVzZV9vcHQ6CisJCQlOVUxMX1AgT04gTlVMTF9QCQkJCQl7ICQkID0gZmFsc2U7IH0K KwkJCXwgQUJTRU5UIE9OIE5VTExfUAkJCQkJeyAkJCA9IHRydWU7IH0KKwkJCXwgLyogRU1Q VFkgKi8JCQkJCQl7ICQkID0gZmFsc2U7IH0KKwkJOworCitqc29uX2FycmF5X2NvbnN0cnVj dG9yOgorCQkJSlNPTl9BUlJBWSAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHJfbGlzdAorCQkJ CWpzb25fYXJyYXlfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0CisJCQkJanNvbl9vdXRw dXRfY2xhdXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29uQXJyYXlDb25zdHJ1Y3Rv ciAqbiA9IG1ha2VOb2RlKEpzb25BcnJheUNvbnN0cnVjdG9yKTsKKwkJCQkJbi0+ZXhwcnMg PSAkMzsKKwkJCQkJbi0+YWJzZW50X29uX251bGwgPSAkNDsKKwkJCQkJbi0+b3V0cHV0ID0g KEpzb25PdXRwdXQgKikgJDU7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IEpTT05fQVJSQVkgJygnCisJCQkJc2VsZWN0X25v X3BhcmVucworCQkJCS8qIGpzb25fZm9ybWF0X2NsYXVzZV9vcHQgKi8KKwkJCQkvKiBqc29u X2FycmF5X2NvbnN0cnVjdG9yX251bGxfY2xhdXNlX29wdCAqLworCQkJCWpzb25fb3V0cHV0 X2NsYXVzZV9vcHQKKwkJCScpJworCQkJCXsKKwkJCQkJSnNvbkFycmF5UXVlcnlDb25zdHJ1 Y3RvciAqbiA9IG1ha2VOb2RlKEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IpOworCQkJCQlu LT5xdWVyeSA9ICQzOworCQkJCQluLT5mb3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JN QVRfREVGQVVMVCwgSlNfRU5DX0RFRkFVTFQsIC0xKTsKKwkJCQkJLyogbi0+Zm9ybWF0ID0g JDQ7ICovCisJCQkJCW4tPmFic2VudF9vbl9udWxsID0gdHJ1ZSAvKiAkNSAqLzsKKwkJCQkJ bi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDQ7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7 CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IEpTT05fQVJSQVkgJygnCisJ CQkJanNvbl9vdXRwdXRfY2xhdXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29uQXJy YXlDb25zdHJ1Y3RvciAqbiA9IG1ha2VOb2RlKEpzb25BcnJheUNvbnN0cnVjdG9yKTsKKwkJ CQkJbi0+ZXhwcnMgPSBOSUw7CisJCQkJCW4tPmFic2VudF9vbl9udWxsID0gdHJ1ZTsKKwkJ CQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDM7CisJCQkJCW4tPmxvY2F0aW9uID0g QDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworanNvbl92YWx1ZV9l eHByX2xpc3Q6CisJCQlqc29uX3ZhbHVlX2V4cHIJCQkJCQkJCXsgJCQgPSBsaXN0X21ha2Ux KCQxKTsgfQorCQkJfCBqc29uX3ZhbHVlX2V4cHJfbGlzdCAnLCcganNvbl92YWx1ZV9leHBy CXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7fQorCQk7CisKK2pzb25fYXJyYXlfY29uc3RydWN0 b3JfbnVsbF9jbGF1c2Vfb3B0OgorCQkJTlVMTF9QIE9OIE5VTExfUAkJCQkJCXsgJCQgPSBm YWxzZTsgfQorCQkJfCBBQlNFTlQgT04gTlVMTF9QCQkJCQkJeyAkJCA9IHRydWU7IH0KKwkJ CXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IHRydWU7IH0KKwkJOworCitqc29uX2FnZ3Jl Z2F0ZV9mdW5jOgorCQkJanNvbl9vYmplY3RfYWdncmVnYXRlX2NvbnN0cnVjdG9yCisJCQl8 IGpzb25fYXJyYXlfYWdncmVnYXRlX2NvbnN0cnVjdG9yCisJCTsKKworanNvbl9vYmplY3Rf YWdncmVnYXRlX2NvbnN0cnVjdG9yOgorCQkJSlNPTl9PQkpFQ1RBR0cgJygnCisJCQkJanNv bl9uYW1lX2FuZF92YWx1ZQorCQkJCWpzb25fb2JqZWN0X2NvbnN0cnVjdG9yX251bGxfY2xh dXNlX29wdAorCQkJCWpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKKwkJCQlq c29uX291dHB1dF9jbGF1c2Vfb3B0CisJCQknKScKKwkJCQl7CisJCQkJCUpzb25PYmplY3RB Z2cgKm4gPSBtYWtlTm9kZShKc29uT2JqZWN0QWdnKTsKKwkJCQkJbi0+YXJnID0gKEpzb25L ZXlWYWx1ZSAqKSAkMzsKKwkJCQkJbi0+YWJzZW50X29uX251bGwgPSAkNDsKKwkJCQkJbi0+ dW5pcXVlID0gJDU7CisJCQkJCW4tPmNvbnN0cnVjdG9yID0gbWFrZU5vZGUoSnNvbkFnZ0Nv bnN0cnVjdG9yKTsKKwkJCQkJbi0+Y29uc3RydWN0b3ItPm91dHB1dCA9IChKc29uT3V0cHV0 ICopICQ2OworCQkJCQluLT5jb25zdHJ1Y3Rvci0+YWdnX29yZGVyID0gTlVMTDsKKwkJCQkJ bi0+Y29uc3RydWN0b3ItPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsK KwkJCQl9CisJCTsKKworanNvbl9hcnJheV9hZ2dyZWdhdGVfY29uc3RydWN0b3I6CisJCQlK U09OX0FSUkFZQUdHICcoJworCQkJCWpzb25fdmFsdWVfZXhwcgorCQkJCWpzb25fYXJyYXlf YWdncmVnYXRlX29yZGVyX2J5X2NsYXVzZV9vcHQKKwkJCQlqc29uX2FycmF5X2NvbnN0cnVj dG9yX251bGxfY2xhdXNlX29wdAorCQkJCWpzb25fb3V0cHV0X2NsYXVzZV9vcHQKKwkJCScp JworCQkJCXsKKwkJCQkJSnNvbkFycmF5QWdnICpuID0gbWFrZU5vZGUoSnNvbkFycmF5QWdn KTsKKwkJCQkJbi0+YXJnID0gKEpzb25WYWx1ZUV4cHIgKikgJDM7CisJCQkJCW4tPmFic2Vu dF9vbl9udWxsID0gJDU7CisJCQkJCW4tPmNvbnN0cnVjdG9yID0gbWFrZU5vZGUoSnNvbkFn Z0NvbnN0cnVjdG9yKTsKKwkJCQkJbi0+Y29uc3RydWN0b3ItPmFnZ19vcmRlciA9ICQ0Owor CQkJCQluLT5jb25zdHJ1Y3Rvci0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDY7CisJCQkJ CW4tPmNvbnN0cnVjdG9yLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47 CisJCQkJfQorCQk7CisKK2pzb25fYXJyYXlfYWdncmVnYXRlX29yZGVyX2J5X2NsYXVzZV9v cHQ6CisJCQlPUkRFUiBCWSBzb3J0YnlfbGlzdAkJCQkJeyAkJCA9ICQzOyB9CisJCQl8IC8q IEVNUFRZICovCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOwogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKICAqCkBAIC0xNTY3MSw2ICsxNjM1OCw3IEBAIEJhcmVDb2xMYWJlbDoJSURF TlQJCQkJCQkJCXsgJCQgPSAkMTsgfQogICovCiB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQkg IEFCT1JUX1AKKwkJCXwgQUJTRU5UCiAJCQl8IEFCU09MVVRFX1AKIAkJCXwgQUNDRVNTCiAJ CQl8IEFDVElPTgpAQCAtMTU3MTEsNiArMTYzOTksNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6 CiAJCQl8IENPTU1JVAogCQkJfCBDT01NSVRURUQKIAkJCXwgQ09NUFJFU1NJT04KKwkJCXwg Q09ORElUSU9OQUwKIAkJCXwgQ09ORklHVVJBVElPTgogCQkJfCBDT05GTElDVAogCQkJfCBD T05ORUNUSU9OCkBAIC0xNTc0NywxMCArMTY0MzYsMTIgQEAgdW5yZXNlcnZlZF9rZXl3b3Jk OgogCQkJfCBET1VCTEVfUAogCQkJfCBEUk9QCiAJCQl8IEVBQ0gKKwkJCXwgRU1QVFlfUAog CQkJfCBFTkFCTEVfUAogCQkJfCBFTkNPRElORwogCQkJfCBFTkNSWVBURUQKIAkJCXwgRU5V TV9QCisJCQl8IEVSUk9SX1AKIAkJCXwgRVNDQVBFCiAJCQl8IEVWRU5UCiAJCQl8IEVYQ0xV REUKQEAgLTE1NzY3LDYgKzE2NDU4LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBG SVJTVF9QCiAJCQl8IEZPTExPV0lORwogCQkJfCBGT1JDRQorCQkJfCBGT1JNQVQKIAkJCXwg Rk9SV0FSRAogCQkJfCBGVU5DVElPTgogCQkJfCBGVU5DVElPTlMKQEAgLTE1Nzk4LDcgKzE2 NDkwLDkgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBJTlNURUFECiAJCQl8IElOVk9L RVIKIAkJCXwgSVNPTEFUSU9OCisJCQl8IEtFRVAKIAkJCXwgS0VZCisJCQl8IEtFWVMKIAkJ CXwgTEFCRUwKIAkJCXwgTEFOR1VBR0UKIAkJCXwgTEFSR0VfUApAQCAtMTU4NDEsNiArMTY1 MzUsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9GRgogCQkJfCBPSURTCiAJCQl8 IE9MRAorCQkJfCBPTUlUCiAJCQl8IE9QRVJBVE9SCiAJCQl8IE9QVElPTgogCQkJfCBPUFRJ T05TCkBAIC0xNTg3MCw2ICsxNjU2NSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwg UFJPR1JBTQogCQkJfCBQVUJMSUNBVElPTgogCQkJfCBRVU9URQorCQkJfCBRVU9URVMKIAkJ CXwgUkFOR0UKIAkJCXwgUkVBRAogCQkJfCBSRUFTU0lHTgpAQCAtMTU4OTksNiArMTY1OTUs NyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFJPV1MKIAkJCXwgUlVMRQogCQkJfCBT QVZFUE9JTlQKKwkJCXwgU0NBTEFSCiAJCQl8IFNDSEVNQQogCQkJfCBTQ0hFTUFTCiAJCQl8 IFNDUk9MTApAQCAtMTU5NTAsNiArMTY2NDcsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJ CQl8IFVFU0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVO Q09ORElUSU9OQUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5LTk9XTgogCQkJfCBVTkxJ U1RFTgpAQCAtMTYwMDcsNiArMTY3MDUsMTYgQEAgY29sX25hbWVfa2V5d29yZDoKIAkJCXwg SU5UX1AKIAkJCXwgSU5URUdFUgogCQkJfCBJTlRFUlZBTAorCQkJfCBKU09OCisJCQl8IEpT T05fQVJSQVkKKwkJCXwgSlNPTl9BUlJBWUFHRworCQkJfCBKU09OX0VYSVNUUworCQkJfCBK U09OX09CSkVDVAorCQkJfCBKU09OX09CSkVDVEFHRworCQkJfCBKU09OX1FVRVJZCisJCQl8 IEpTT05fU0NBTEFSCisJCQl8IEpTT05fU0VSSUFMSVpFCisJCQl8IEpTT05fVkFMVUUKIAkJ CXwgTEVBU1QKIAkJCXwgTkFUSU9OQUwKIAkJCXwgTkNIQVIKQEAgLTE2MDc0LDYgKzE2Nzgy LDcgQEAgdHlwZV9mdW5jX25hbWVfa2V5d29yZDoKIAkJCXwgT1ZFUkxBUFMKIAkJCXwgUklH SFQKIAkJCXwgU0lNSUxBUgorCQkJfCBTVFJJTkcKIAkJCXwgVEFCTEVTQU1QTEUKIAkJCXwg VkVSQk9TRQogCQk7CkBAIC0xNjE3NSw2ICsxNjg4NCw3IEBAIHJlc2VydmVkX2tleXdvcmQ6 CiAgKi8KIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCSAgQUJPUlRfUAorCQkJfCBBQlNFTlQK IAkJCXwgQUJTT0xVVEVfUAogCQkJfCBBQ0NFU1MKIAkJCXwgQUNUSU9OCkBAIC0xNjIzNyw2 ICsxNjk0Nyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgQ09NTUlUVEVECiAJCQl8 IENPTVBSRVNTSU9OCiAJCQl8IENPTkNVUlJFTlRMWQorCQkJfCBDT05ESVRJT05BTAogCQkJ fCBDT05GSUdVUkFUSU9OCiAJCQl8IENPTkZMSUNUCiAJCQl8IENPTk5FQ1RJT04KQEAgLTE2 Mjg5LDExICsxNzAwMCwxMyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IERST1AKIAkJ CXwgRUFDSAogCQkJfCBFTFNFCisJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwg RU5DT0RJTkcKIAkJCXwgRU5DUllQVEVECiAJCQl8IEVORF9QCiAJCQl8IEVOVU1fUAorCQkJ fCBFUlJPUl9QCiAJCQl8IEVTQ0FQRQogCQkJfCBFVkVOVAogCQkJfCBFWENMVURFCkBAIC0x NjMxNCw2ICsxNzAyNyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgRk9MTE9XSU5H CiAJCQl8IEZPUkNFCiAJCQl8IEZPUkVJR04KKwkJCXwgRk9STUFUCiAJCQl8IEZPUldBUkQK IAkJCXwgRlJFRVpFCiAJCQl8IEZVTEwKQEAgLTE2MzU4LDcgKzE3MDcyLDE5IEBAIGJhcmVf bGFiZWxfa2V5d29yZDoKIAkJCXwgSVMKIAkJCXwgSVNPTEFUSU9OCiAJCQl8IEpPSU4KKwkJ CXwgSlNPTgorCQkJfCBKU09OX0FSUkFZCisJCQl8IEpTT05fQVJSQVlBR0cKKwkJCXwgSlNP Tl9FWElTVFMKKwkJCXwgSlNPTl9PQkpFQ1QKKwkJCXwgSlNPTl9PQkpFQ1RBR0cKKwkJCXwg SlNPTl9RVUVSWQorCQkJfCBKU09OX1NDQUxBUgorCQkJfCBKU09OX1NFUklBTElaRQorCQkJ fCBKU09OX1ZBTFVFCisJCQl8IEtFRVAKIAkJCXwgS0VZCisJCQl8IEtFWVMKIAkJCXwgTEFC RUwKIAkJCXwgTEFOR1VBR0UKIAkJCXwgTEFSR0VfUApAQCAtMTY0MTUsNiArMTcxNDEsNyBA QCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IE9GRgogCQkJfCBPSURTCiAJCQl8IE9MRAor CQkJfCBPTUlUCiAJCQl8IE9OTFkKIAkJCXwgT1BFUkFUT1IKIAkJCXwgT1BUSU9OCkBAIC0x NjQ1MSw2ICsxNzE3OCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUFJPR1JBTQog CQkJfCBQVUJMSUNBVElPTgogCQkJfCBRVU9URQorCQkJfCBRVU9URVMKIAkJCXwgUkFOR0UK IAkJCXwgUkVBRAogCQkJfCBSRUFMCkBAIC0xNjQ4NCw2ICsxNzIxMiw3IEBAIGJhcmVfbGFi ZWxfa2V5d29yZDoKIAkJCXwgUk9XUwogCQkJfCBSVUxFCiAJCQl8IFNBVkVQT0lOVAorCQkJ fCBTQ0FMQVIKIAkJCXwgU0NIRU1BCiAJCQl8IFNDSEVNQVMKIAkJCXwgU0NST0xMCkBAIC0x NjUxOCw2ICsxNzI0Nyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgU1RPUkFHRQog CQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AKKwkJCXwgU1RSSU5HCiAJCQl8IFNUUklQX1AK IAkJCXwgU1VCU0NSSVBUSU9OCiAJCQl8IFNVQlNUUklORwpAQCAtMTY1NTEsNiArMTcyODEs NyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFVFU0NBUEUKIAkJCXwgVU5CT1VOREVE CiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9OQUwKIAkJCXwgVU5FTkNSWVBU RUQKIAkJCXwgVU5JUVVFCiAJCQl8IFVOS05PV04KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29s bGF0ZS5jCmluZGV4IDZjNzkzYjcyZWMuLjJlNTQ5ZTdiMzkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2NvbGxhdGUuYwpAQCAtNjkwLDYgKzY5MCwxMCBAQCBhc3NpZ25fY29sbGF0aW9u c193YWxrZXIoTm9kZSAqbm9kZSwgYXNzaWduX2NvbGxhdGlvbnNfY29udGV4dCAqY29udGV4 dCkKIAkJCQkJCQkJCQkJCQkJCSZsb2Njb250ZXh0KTsKIAkJCQkJCX0KIAkJCQkJCWJyZWFr OworCQkJCQljYXNlIFRfSnNvbkV4cHI6CisJCQkJCQkvKiBDb250ZXh0IGl0ZW0gYW5kIFBB U1NJTkcgYXJndW1lbnRzIGFyZSBhbHJlYWR5CisJCQkJCQkgKiBtYXJrZWQgd2l0aCBjb2xs YXRpb25zIGluIHBhcnNlX2V4cHIuYy4gKi8KKwkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0 OgogCiAJCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMWMwOWVhMjRj ZC4uMTg2MjJmZDAxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNSw2ICsx NSw4IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC0zNCw2ICszNiw3IEBACiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL2RhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5o IgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgpAQCAtNzQsNiArNzcsMjEgQEAgc3RhdGljIE5v ZGUgKnRyYW5zZm9ybVdob2xlUm93UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIHN0YXRpYyBO b2RlICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJl Y3Rpb24gKmluZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvbGxh dGVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2xsYXRlQ2xhdXNlICpjKTsKK3N0YXRp YyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0 YXRlLAorCQkJCQkJCQkJCQlKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpOworc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUpzb25BcnJheUNvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKKwkJCQkJCQkJCQkgICBKc29uQXJyYXlDb25zdHJ1Y3RvciAqY3Rvcik7CitzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpw c3RhdGUsCisJCQkJCQkJCQkJCQlKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yICpjdG9yKTsK K3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0QWdnKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgSnNvbk9iamVjdEFnZyAqYWdnKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uQXJy YXlBZ2coUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQXJyYXlBZ2cgKmFnZyk7CitzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtSnNvbklzUHJlZGljYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNv bklzUHJlZGljYXRlICpwKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uRnVuY0V4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKnApOworc3RhdGljIE5vZGUgKnRy YW5zZm9ybUpzb25WYWx1ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVmFsdWVFeHBy ICpqdmUpOworc3RhdGljIE5vZGUgKnRyYW5zZm9ybUpzb25QYXJzZUV4cHIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBKc29uUGFyc2VFeHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zv cm1Kc29uU2NhbGFyRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25TY2FsYXJFeHByICpl eHByKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uU2VyaWFsaXplRXhwcihQYXJzZVN0 YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpOwogc3Rh dGljIE5vZGUgKm1ha2Vfcm93X2NvbXBhcmlzb25fb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICpvcG5hbWUsCiAJCQkJCQkJCQlMaXN0ICpsYXJncywgTGlzdCAqcmFyZ3MsIGludCBs b2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9yb3dfZGlzdGluY3Rfb3AoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCkBAIC0zMDEsNiArMzE5LDUwIEBAIHRyYW5zZm9y bUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCQlicmVh azsKIAkJCX0KIAorCQljYXNlIFRfSnNvbk9iamVjdENvbnN0cnVjdG9yOgorCQkJcmVzdWx0 ID0gdHJhbnNmb3JtSnNvbk9iamVjdENvbnN0cnVjdG9yKHBzdGF0ZSwgKEpzb25PYmplY3RD b25zdHJ1Y3RvciAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29uQXJyYXlD b25zdHJ1Y3RvcjoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25BcnJheUNvbnN0cnVjdG9y KHBzdGF0ZSwgKEpzb25BcnJheUNvbnN0cnVjdG9yICopIGV4cHIpOworCQkJYnJlYWs7CisK KwkJY2FzZSBUX0pzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3I6CisJCQlyZXN1bHQgPSB0cmFu c2Zvcm1Kc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yKHBzdGF0ZSwgKEpzb25BcnJheVF1ZXJ5 Q29uc3RydWN0b3IgKikgZXhwcik7CisJCQlicmVhazsKKworCQljYXNlIFRfSnNvbk9iamVj dEFnZzoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25PYmplY3RBZ2cocHN0YXRlLCAoSnNv bk9iamVjdEFnZyAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29uQXJyYXlB Z2c6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uQXJyYXlBZ2cocHN0YXRlLCAoSnNvbkFy cmF5QWdnICopIGV4cHIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0 ZToKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25Jc1ByZWRpY2F0ZShwc3RhdGUsIChKc29u SXNQcmVkaWNhdGUgKikgZXhwcik7CisJCQlicmVhazsKKworCQljYXNlIFRfSnNvbkZ1bmNF eHByOgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtSnNvbkZ1bmNFeHByKHBzdGF0ZSwgKEpzb25G dW5jRXhwciAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29uVmFsdWVFeHBy OgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsIChKc29uVmFs dWVFeHByICopIGV4cHIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUX0pzb25QYXJzZUV4cHI6 CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uUGFyc2VFeHByKHBzdGF0ZSwgKEpzb25QYXJz ZUV4cHIgKikgZXhwcik7CisJCQlicmVhazsKKworCQljYXNlIFRfSnNvblNjYWxhckV4cHI6 CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uU2NhbGFyRXhwcihwc3RhdGUsIChKc29uU2Nh bGFyRXhwciAqKSBleHByKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVF9Kc29uU2VyaWFsaXpl RXhwcjoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKHBzdGF0ZSwg KEpzb25TZXJpYWxpemVFeHByICopIGV4cHIpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoK IAkJCS8qIHNob3VsZCBub3QgcmVhY2ggaGVyZSAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CkBAIC0zMDk5 LDMgKzMxNjEsMTQwNyBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJL aW5kKQogCX0KIAlyZXR1cm4gInVucmVjb2duaXplZCBleHByZXNzaW9uIGtpbmQiOwogfQor CisvKgorICogTWFrZSBzdHJpbmcgQ29uc3Qgbm9kZSBmcm9tIEpTT04gZW5jb2RpbmcgbmFt ZS4KKyAqCisgKiBVVEY4IGlzIGRlZmF1bHQgZW5jb2RpbmcuCisgKi8KK3N0YXRpYyBDb25z dCAqCitnZXRKc29uRW5jb2RpbmdDb25zdChKc29uRm9ybWF0ICpmb3JtYXQpCit7CisJSnNv bkVuY29kaW5nIGVuY29kaW5nOworCWNvbnN0IGNoYXIgKmVuYzsKKwlOYW1lCQllbmNuYW1l ID0gcGFsbG9jKHNpemVvZihOYW1lRGF0YSkpOworCisJaWYgKCFmb3JtYXQgfHwKKwkJZm9y bWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCB8fAorCQlmb3JtYXQtPmVu Y29kaW5nID09IEpTX0VOQ19ERUZBVUxUKQorCQllbmNvZGluZyA9IEpTX0VOQ19VVEY4Owor CWVsc2UKKwkJZW5jb2RpbmcgPSBmb3JtYXQtPmVuY29kaW5nOworCisJc3dpdGNoIChlbmNv ZGluZykKKwl7CisJCWNhc2UgSlNfRU5DX1VURjE2OgorCQkJZW5jID0gIlVURjE2IjsKKwkJ CWJyZWFrOworCQljYXNlIEpTX0VOQ19VVEYzMjoKKwkJCWVuYyA9ICJVVEYzMiI7CisJCQli cmVhazsKKwkJY2FzZSBKU19FTkNfVVRGODoKKwkJCWVuYyA9ICJVVEY4IjsKKwkJCWJyZWFr OworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgSlNPTiBlbmNvZGluZzog JWQiLCBlbmNvZGluZyk7CisJCQlicmVhazsKKwl9CisKKwluYW1lc3RyY3B5KGVuY25hbWUs IGVuYyk7CisKKwlyZXR1cm4gbWFrZUNvbnN0KE5BTUVPSUQsIC0xLCBJbnZhbGlkT2lkLCBO QU1FREFUQUxFTiwKKwkJCQkJIE5hbWVHZXREYXR1bShlbmNuYW1lKSwgZmFsc2UsIGZhbHNl KTsKK30KKworLyoKKyAqIE1ha2UgYnl0ZWEgPT4gdGV4dCBjb252ZXJzaW9uIHVzaW5nIHNw ZWNpZmllZCBKU09OIGZvcm1hdCBlbmNvZGluZy4KKyAqLworc3RhdGljIE5vZGUgKgorbWFr ZUpzb25CeXRlYVRvVGV4dENvbnZlcnNpb24oTm9kZSAqZXhwciwgSnNvbkZvcm1hdCAqZm9y bWF0LCBpbnQgbG9jYXRpb24pCit7CisJQ29uc3QJICAgKmVuY29kaW5nID0gZ2V0SnNvbkVu Y29kaW5nQ29uc3QoZm9ybWF0KTsKKwlGdW5jRXhwciAgICpmZXhwciA9IG1ha2VGdW5jRXhw cihGX0NPTlZFUlRfRlJPTSwgVEVYVE9JRCwKKwkJCQkJCQkJCSBsaXN0X21ha2UyKGV4cHIs IGVuY29kaW5nKSwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJ CQkJIENPRVJDRV9FWFBMSUNJVF9DQUxMKTsKKworCWZleHByLT5sb2NhdGlvbiA9IGxvY2F0 aW9uOworCisJcmV0dXJuIChOb2RlICopIGZleHByOworfQorCisvKgorICogTWFrZSBDYXNl VGVzdEV4cHIgbm9kZS4KKyAqLworc3RhdGljIE5vZGUgKgorbWFrZUNhc2VUZXN0RXhwcihO b2RlICpleHByKQoreworCUNhc2VUZXN0RXhwciAqcGxhY2Vob2xkZXIgPSBtYWtlTm9kZShD YXNlVGVzdEV4cHIpOworCisJcGxhY2Vob2xkZXItPnR5cGVJZCA9IGV4cHJUeXBlKGV4cHIp OworCXBsYWNlaG9sZGVyLT50eXBlTW9kID0gZXhwclR5cG1vZChleHByKTsKKwlwbGFjZWhv bGRlci0+Y29sbGF0aW9uID0gZXhwckNvbGxhdGlvbihleHByKTsKKworCXJldHVybiAoTm9k ZSAqKSBwbGFjZWhvbGRlcjsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBKU09OIHZhbHVlIGV4 cHJlc3Npb24gdXNpbmcgc3BlY2lmaWVkIGlucHV0IEpTT04gZm9ybWF0IG9yCisgKiBkZWZh dWx0IGZvcm1hdCBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpz b25WYWx1ZUV4cHJFeHQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVmFsdWVFeHByICp2ZSwK KwkJCQkJCSAgSnNvbkZvcm1hdFR5cGUgZGVmYXVsdF9mb3JtYXQsIGJvb2wgaXNhcmcsCisJ CQkJCQkgIE9pZCB0YXJnZXR0eXBlKQoreworCU5vZGUJICAgKmV4cHIgPSB0cmFuc2Zvcm1F eHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIHZlLT5yYXdfZXhwcik7CisJTm9kZQkgICAq cmF3ZXhwcjsKKwlKc29uRm9ybWF0VHlwZSBmb3JtYXQ7CisJT2lkCQkJZXhwcnR5cGU7CisJ aW50CQkJbG9jYXRpb247CisJY2hhcgkJdHlwY2F0ZWdvcnk7CisJYm9vbAkJdHlwaXNwcmVm ZXJyZWQ7CisKKwlpZiAoZXhwclR5cGUoZXhwcikgPT0gVU5LTk9XTk9JRCkKKwkJZXhwciA9 IGNvZXJjZV90b19zcGVjaWZpY190eXBlKHBzdGF0ZSwgZXhwciwgVEVYVE9JRCwgIkpTT05f VkFMVUVfRVhQUiIpOworCisJcmF3ZXhwciA9IGV4cHI7CisJZXhwcnR5cGUgPSBleHByVHlw ZShleHByKTsKKwlsb2NhdGlvbiA9IGV4cHJMb2NhdGlvbihleHByKTsKKworCWdldF90eXBl X2NhdGVnb3J5X3ByZWZlcnJlZChleHBydHlwZSwgJnR5cGNhdGVnb3J5LCAmdHlwaXNwcmVm ZXJyZWQpOworCisJcmF3ZXhwciA9IGV4cHI7CisKKwlpZiAodmUtPmZvcm1hdC0+Zm9ybWF0 X3R5cGUgIT0gSlNfRk9STUFUX0RFRkFVTFQpCisJeworCQlpZiAodmUtPmZvcm1hdC0+ZW5j b2RpbmcgIT0gSlNfRU5DX0RFRkFVTFQgJiYgZXhwcnR5cGUgIT0gQllURUFPSUQpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENI KSwKKwkJCQkJIGVycm1zZygiSlNPTiBFTkNPRElORyBjbGF1c2UgaXMgb25seSBhbGxvd2Vk IGZvciBieXRlYSBpbnB1dCB0eXBlIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCB2ZS0+Zm9ybWF0LT5sb2NhdGlvbikpKTsKKworCQlpZiAoZXhwcnR5cGUgPT0gSlNP Tk9JRCB8fCBleHBydHlwZSA9PSBKU09OQk9JRCkKKwkJeworCQkJZm9ybWF0ID0gSlNfRk9S TUFUX0RFRkFVTFQ7CS8qIGRvIG5vdCBmb3JtYXQganNvbltiXSB0eXBlcyAqLworCQkJZXJl cG9ydChXQVJOSU5HLAorCQkJCQkoZXJybXNnKCJGT1JNQVQgSlNPTiBoYXMgbm8gZWZmZWN0 IGZvciBqc29uIGFuZCBqc29uYiB0eXBlcyIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgdmUtPmZvcm1hdC0+bG9jYXRpb24pKSk7CisJCX0KKwkJZWxzZQorCQkJZm9y bWF0ID0gdmUtPmZvcm1hdC0+Zm9ybWF0X3R5cGU7CisJfQorCWVsc2UgaWYgKGlzYXJnKQor CXsKKwkJLyogUGFzcyBTUUwvSlNPTiBpdGVtIHR5cGVzIGRpcmVjdGx5IHdpdGhvdXQgY29u dmVyc2lvbiB0byBqc29uW2JdLiAqLworCQlzd2l0Y2ggKGV4cHJ0eXBlKQorCQl7CisJCQlj YXNlIFRFWFRPSUQ6CisJCQljYXNlIE5VTUVSSUNPSUQ6CisJCQljYXNlIEJPT0xPSUQ6CisJ CQljYXNlIElOVDJPSUQ6CisJCQljYXNlIElOVDRPSUQ6CisJCQljYXNlIElOVDhPSUQ6CisJ CQljYXNlIEZMT0FUNE9JRDoKKwkJCWNhc2UgRkxPQVQ4T0lEOgorCQkJY2FzZSBEQVRFT0lE OgorCQkJY2FzZSBUSU1FT0lEOgorCQkJY2FzZSBUSU1FVFpPSUQ6CisJCQljYXNlIFRJTUVT VEFNUE9JRDoKKwkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQkJcmV0dXJuIGV4cHI7CisK KwkJCWRlZmF1bHQ6CisJCQkJaWYgKHR5cGNhdGVnb3J5ID09IFRZUENBVEVHT1JZX1NUUklO RykKKwkJCQkJcmV0dXJuIGNvZXJjZV90b19zcGVjaWZpY190eXBlKHBzdGF0ZSwgZXhwciwg VEVYVE9JRCwKKwkJCQkJCQkJCQkJCSAgICJKU09OX1ZBTFVFX0VYUFIiKTsKKwkJCQkvKiBl bHNlIGNvbnZlcnQgYXJndW1lbnQgdG8ganNvbltiXSB0eXBlICovCisJCQkJYnJlYWs7CisJ CX0KKworCQlmb3JtYXQgPSBkZWZhdWx0X2Zvcm1hdDsKKwl9CisJZWxzZSBpZiAoZXhwcnR5 cGUgPT0gSlNPTk9JRCB8fCBleHBydHlwZSA9PSBKU09OQk9JRCkKKwkJZm9ybWF0ID0gSlNf Rk9STUFUX0RFRkFVTFQ7CS8qIGRvIG5vdCBmb3JtYXQganNvbltiXSB0eXBlcyAqLworCWVs c2UKKwkJZm9ybWF0ID0gZGVmYXVsdF9mb3JtYXQ7CisKKwlpZiAoZm9ybWF0ID09IEpTX0ZP Uk1BVF9ERUZBVUxUICYmCisJCSghT2lkSXNWYWxpZCh0YXJnZXR0eXBlKSB8fCBleHBydHlw ZSA9PSB0YXJnZXR0eXBlKSkKKwkJZXhwciA9IHJhd2V4cHI7CisJZWxzZQorCXsKKwkJTm9k ZQkgICAqb3JpZyA9IG1ha2VDYXNlVGVzdEV4cHIoZXhwcik7CisJCU5vZGUJICAgKmNvZXJj ZWQ7CisJCWJvb2wJCWNhc3RfaXNfbmVlZGVkID0gT2lkSXNWYWxpZCh0YXJnZXR0eXBlKTsK KworCQlpZiAoIWlzYXJnICYmICFjYXN0X2lzX25lZWRlZCAmJgorCQkJZXhwcnR5cGUgIT0g QllURUFPSUQgJiYgdHlwY2F0ZWdvcnkgIT0gVFlQQ0FURUdPUllfU1RSSU5HKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks CisJCQkJCSBlcnJtc2codmUtPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0RF RkFVTFQgPworCQkJCQkJCSJjYW5ub3QgdXNlIG5vbi1zdHJpbmcgdHlwZXMgd2l0aCBpbXBs aWNpdCBGT1JNQVQgSlNPTiBjbGF1c2UiIDoKKwkJCQkJCQkiY2Fubm90IHVzZSBub24tc3Ry aW5nIHR5cGVzIHdpdGggZXhwbGljaXQgRk9STUFUIEpTT04gY2xhdXNlIiksCisJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB2ZS0+Zm9ybWF0LT5sb2NhdGlvbiA+PSAwID8K KwkJCQkJCQkJCQl2ZS0+Zm9ybWF0LT5sb2NhdGlvbiA6IGxvY2F0aW9uKSkpOworCisJCWV4 cHIgPSBvcmlnOworCisJCS8qIENvbnZlcnQgZW5jb2RlZCBKU09OIHRleHQgZnJvbSBieXRl YS4gKi8KKwkJaWYgKGZvcm1hdCA9PSBKU19GT1JNQVRfSlNPTiAmJiBleHBydHlwZSA9PSBC WVRFQU9JRCkKKwkJeworCQkJZXhwciA9IG1ha2VKc29uQnl0ZWFUb1RleHRDb252ZXJzaW9u KGV4cHIsIHZlLT5mb3JtYXQsIGxvY2F0aW9uKTsKKwkJCWV4cHJ0eXBlID0gVEVYVE9JRDsK KwkJfQorCisJCWlmICghT2lkSXNWYWxpZCh0YXJnZXR0eXBlKSkKKwkJCXRhcmdldHR5cGUg PSBmb3JtYXQgPT0gSlNfRk9STUFUX0pTT05CID8gSlNPTkJPSUQgOiBKU09OT0lEOworCisJ CS8qIFRyeSB0byBjb2VyY2UgdG8gdGhlIHRhcmdldCB0eXBlLiAqLworCQljb2VyY2VkID0g Y29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCisJCQkJCQkJ CQkJdGFyZ2V0dHlwZSwgLTEsCisJCQkJCQkJCQkJQ09FUkNJT05fRVhQTElDSVQsCisJCQkJ CQkJCQkJQ09FUkNFX0VYUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJbG9jYXRpb24pOworCisJ CWlmICghY29lcmNlZCkKKwkJeworCQkJLyogSWYgY29lcmNpb24gZmFpbGVkLCB1c2UgdG9f anNvbigpL3RvX2pzb25iKCkgZnVuY3Rpb25zLiAqLworCQkJRnVuY0V4cHIgICAqZmV4cHI7 CisJCQlPaWQJCQlmbm9pZDsKKworCQkJaWYgKGNhc3RfaXNfbmVlZGVkKQkJLyogb25seSBD QVNUIGlzIGFsbG93ZWQgKi8KKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBjYXN0IHR5 cGUgJXMgdG8gJXMiLAorCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwZSksCisJCQkJ CQkJCWZvcm1hdF90eXBlX2JlKHRhcmdldHR5cGUpKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisKKwkJCWZub2lkID0gdGFyZ2V0dHlwZSA9 PSBKU09OT0lEID8gRl9UT19KU09OIDogRl9UT19KU09OQjsKKwkJCWZleHByID0gbWFrZUZ1 bmNFeHByKGZub2lkLCB0YXJnZXR0eXBlLCBsaXN0X21ha2UxKGV4cHIpLAorCQkJCQkJCQkg SW52YWxpZE9pZCwgSW52YWxpZE9pZCwgQ09FUkNFX0VYUExJQ0lUX0NBTEwpOworCisJCQlm ZXhwci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCQkJY29lcmNlZCA9IChOb2RlICopIGZl eHByOworCQl9CisKKwkJaWYgKGNvZXJjZWQgPT0gb3JpZykKKwkJCWV4cHIgPSByYXdleHBy OworCQllbHNlCisJCXsKKwkJCXZlID0gY29weU9iamVjdCh2ZSk7CisJCQl2ZS0+cmF3X2V4 cHIgPSAoRXhwciAqKSByYXdleHByOworCQkJdmUtPmZvcm1hdHRlZF9leHByID0gKEV4cHIg KikgY29lcmNlZDsKKworCQkJZXhwciA9IChOb2RlICopIHZlOworCQl9CisJfQorCisJcmV0 dXJuIGV4cHI7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTiB2YWx1ZSBleHByZXNzaW9u IHVzaW5nIEZPUk1BVCBKU09OIGJ5IGRlZmF1bHQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3Ry YW5zZm9ybUpzb25WYWx1ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVmFsdWVFeHBy ICpqdmUpCit7CisJcmV0dXJuIHRyYW5zZm9ybUpzb25WYWx1ZUV4cHJFeHQocHN0YXRlLCBq dmUsIEpTX0ZPUk1BVF9KU09OLCBmYWxzZSwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkKTsKK30K KworLyoKKyAqIFRyYW5zZm9ybSBKU09OIHZhbHVlIGV4cHJlc3Npb24gdXNpbmcgdW5zcGVj aWZpZWQgZm9ybWF0IGJ5IGRlZmF1bHQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9y bUpzb25WYWx1ZUV4cHJEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblZhbHVlRXhw ciAqanZlKQoreworCXJldHVybiB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByRXh0KHBzdGF0ZSwg anZlLCBKU19GT1JNQVRfREVGQVVMVCwgZmFsc2UsCisJCQkJCQkJCQkgSW52YWxpZE9pZCk7 Cit9CisKKy8qCisgKiBDaGVja3Mgc3BlY2lmaWVkIG91dHB1dCBmb3JtYXQgZm9yIGl0cyBh cHBsaWNhYmlsaXR5IHRvIHRoZSB0YXJnZXQgdHlwZS4KKyAqLworc3RhdGljIHZvaWQKK2No ZWNrSnNvbk91dHB1dEZvcm1hdChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEpzb25Gb3Jt YXQgKmZvcm1hdCwKKwkJCQkJICBPaWQgdGFyZ2V0dHlwZSwgYm9vbCBhbGxvd19mb3JtYXRf Zm9yX25vbl9zdHJpbmdzKQoreworCWlmICghYWxsb3dfZm9ybWF0X2Zvcl9ub25fc3RyaW5n cyAmJgorCQlmb3JtYXQtPmZvcm1hdF90eXBlICE9IEpTX0ZPUk1BVF9ERUZBVUxUICYmCisJ CSh0YXJnZXR0eXBlICE9IEJZVEVBT0lEICYmCisJCSB0YXJnZXR0eXBlICE9IEpTT05PSUQg JiYKKwkJIHRhcmdldHR5cGUgIT0gSlNPTkJPSUQpKQorCXsKKwkJY2hhcgkJdHlwY2F0ZWdv cnk7CisJCWJvb2wJCXR5cGlzcHJlZmVycmVkOworCisJCWdldF90eXBlX2NhdGVnb3J5X3By ZWZlcnJlZCh0YXJnZXR0eXBlLCAmdHlwY2F0ZWdvcnksICZ0eXBpc3ByZWZlcnJlZCk7CisK KwkJaWYgKHR5cGNhdGVnb3J5ICE9IFRZUENBVEVHT1JZX1NUUklORykKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvcm1hdC0+bG9jYXRpb24pLAor CQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIEpTT04gZm9ybWF0IHdpdGggbm9uLXN0cmluZyBv dXRwdXQgdHlwZXMiKSkpOworCX0KKworCWlmIChmb3JtYXQtPmZvcm1hdF90eXBlID09IEpT X0ZPUk1BVF9KU09OKQorCXsKKwkJSnNvbkVuY29kaW5nIGVuYyA9IGZvcm1hdC0+ZW5jb2Rp bmcgIT0gSlNfRU5DX0RFRkFVTFQgPworCQkJCQkJICAgZm9ybWF0LT5lbmNvZGluZyA6IEpT X0VOQ19VVEY4OworCisJCWlmICh0YXJnZXR0eXBlICE9IEJZVEVBT0lEICYmCisJCQlmb3Jt YXQtPmVuY29kaW5nICE9IEpTX0VOQ19ERUZBVUxUKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9ybWF0LT5sb2NhdGlvbiksCisJCQkJCSBlcnJt c2coImNhbm5vdCBzZXQgSlNPTiBlbmNvZGluZyBmb3Igbm9uLWJ5dGVhIG91dHB1dCB0eXBl cyIpKSk7CisKKwkJaWYgKGVuYyAhPSBKU19FTkNfVVRGOCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ IGVycm1zZygidW5zdXBwb3J0ZWQgSlNPTiBlbmNvZGluZyIpLAorCQkJCQkgZXJyaGludCgi b25seSBVVEY4IEpTT04gZW5jb2RpbmcgaXMgc3VwcG9ydGVkIiksCisJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBmb3JtYXQtPmxvY2F0aW9uKSkpOworCX0KK30KKworLyoK KyAqIFRyYW5zZm9ybSBKU09OIG91dHB1dCBjbGF1c2UuCisgKgorICogQXNzaWducyB0YXJn ZXQgdHlwZSBvaWQgYW5kIG1vZGlmaWVyLgorICogQXNzaWducyBkZWZhdWx0IGZvcm1hdCBv ciBjaGVja3Mgc3BlY2lmaWVkIGZvcm1hdCBmb3IgaXRzIGFwcGxpY2FiaWxpdHkgdG8KKyAq IHRoZSB0YXJnZXQgdHlwZS4KKyAqLworc3RhdGljIEpzb25SZXR1cm5pbmcgKgordHJhbnNm b3JtSnNvbk91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEpzb25PdXRwdXQgKm91 dHB1dCwKKwkJCQkJYm9vbCBhbGxvd19mb3JtYXQpCit7CisJSnNvblJldHVybmluZyAqcmV0 OworCisJLyogaWYgb3V0cHV0IGNsYXVzZSBpcyBub3Qgc3BlY2lmaWVkLCBtYWtlIGRlZmF1 bHQgY2xhdXNlIHZhbHVlICovCisJaWYgKCFvdXRwdXQpCisJeworCQlyZXQgPSBtYWtlTm9k ZShKc29uUmV0dXJuaW5nKTsKKworCQlyZXQtPmZvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpT X0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQlyZXQtPnR5cGlkID0g SW52YWxpZE9pZDsKKwkJcmV0LT50eXBtb2QgPSAtMTsKKworCQlyZXR1cm4gcmV0OworCX0K KworCXJldCA9IGNvcHlPYmplY3Qob3V0cHV0LT5yZXR1cm5pbmcpOworCisJdHlwZW5hbWVU eXBlSWRBbmRNb2QocHN0YXRlLCBvdXRwdXQtPnR5cGVOYW1lLCAmcmV0LT50eXBpZCwgJnJl dC0+dHlwbW9kKTsKKworCWlmIChvdXRwdXQtPnR5cGVOYW1lLT5zZXRvZikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJIGVycm1zZygicmV0dXJuaW5nIFNFVE9GIHR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQg aW4gU1FML0pTT04gZnVuY3Rpb25zIikpKTsKKworCWlmIChyZXQtPmZvcm1hdC0+Zm9ybWF0 X3R5cGUgPT0gSlNfRk9STUFUX0RFRkFVTFQpCisJCS8qIGFzc2lnbiBKU09OQiBmb3JtYXQg d2hlbiByZXR1cm5pbmcganNvbmIsIG9yIEpTT04gZm9ybWF0IG90aGVyd2lzZSAqLworCQly ZXQtPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPQorCQkJcmV0LT50eXBpZCA9PSBKU09OQk9JRCA/ IEpTX0ZPUk1BVF9KU09OQiA6IEpTX0ZPUk1BVF9KU09OOworCWVsc2UKKwkJY2hlY2tKc29u T3V0cHV0Rm9ybWF0KHBzdGF0ZSwgcmV0LT5mb3JtYXQsIHJldC0+dHlwaWQsIGFsbG93X2Zv cm1hdCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogVHJhbnNmb3JtIEpTT04gb3V0 cHV0IGNsYXVzZSBvZiBKU09OIGNvbnRydWN0b3IgZnVuY3Rpb25zLgorICoKKyAqIERlcml2 ZSBSRVRVUk5JTkcgdHlwZSwgaWYgbm90IHNwZWNpZmllZCwgZnJvbSBhcmd1bWVudCB0eXBl cy4KKyAqLworc3RhdGljIEpzb25SZXR1cm5pbmcgKgordHJhbnNmb3JtSnNvbkNvbnN0cnVj dG9yT3V0cHV0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbk91dHB1dCAqb3V0cHV0LAorCQkJ CQkJCSAgIExpc3QgKmFyZ3MpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nID0gdHJh bnNmb3JtSnNvbk91dHB1dChwc3RhdGUsIG91dHB1dCwgdHJ1ZSk7CisKKwlpZiAoIU9pZElz VmFsaWQocmV0dXJuaW5nLT50eXBpZCkpCisJeworCQlMaXN0Q2VsbCAgICpsYzsKKwkJYm9v bAkJaGF2ZV9qc29uID0gZmFsc2U7CisJCWJvb2wJCWhhdmVfanNvbmIgPSBmYWxzZTsKKwor CQlmb3JlYWNoKGxjLCBhcmdzKQorCQl7CisJCQlOb2RlCSAgICpleHByID0gbGZpcnN0KGxj KTsKKwkJCU9pZAkJCXR5cGlkID0gZXhwclR5cGUoZXhwcik7CisKKwkJCWhhdmVfanNvbiB8 PSB0eXBpZCA9PSBKU09OT0lEOworCQkJaGF2ZV9qc29uYiB8PSB0eXBpZCA9PSBKU09OQk9J RDsKKworCQkJaWYgKGhhdmVfanNvbmIpCisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAoaGF2 ZV9qc29uYikKKwkJeworCQkJcmV0dXJuaW5nLT50eXBpZCA9IEpTT05CT0lEOworCQkJcmV0 dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID0gSlNfRk9STUFUX0pTT05COworCQl9CisJ CWVsc2UKKwkJeworCQkJLyogTm90ZTogdGhpcyBpbmNsdWRlcyB0aGUgaGF2ZV9qc29uIGNh c2UgKi8KKwkJCQorCQkJLyogWFhYIFRFWFQgaXMgZGVmYXVsdCBieSB0aGUgc3RhbmRhcmQs IGJ1dCB3ZSByZXR1cm4gSlNPTiAqLworCQkJcmV0dXJuaW5nLT50eXBpZCA9IEpTT05PSUQ7 CisJCQlyZXR1cm5pbmctPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPSBKU19GT1JNQVRfSlNPTjsK KwkJfQorCisJCXJldHVybmluZy0+dHlwbW9kID0gLTE7CisJfQorCisJcmV0dXJuIHJldHVy bmluZzsKK30KKworLyoKKyAqIENvZXJjZSBqc29uW2JdLXZhbHVlZCBmdW5jdGlvbiBleHBy ZXNzaW9uIHRvIHRoZSBvdXRwdXQgdHlwZS4KKyAqLworc3RhdGljIE5vZGUgKgorY29lcmNl SnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwKKwkJCQkgICBj b25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIGJvb2wgcmVwb3J0X2Vycm9yKQorewor CU5vZGUJICAgKnJlczsKKwlpbnQJCQlsb2NhdGlvbjsKKwlPaWQJCQlleHBydHlwZSA9IGV4 cHJUeXBlKGV4cHIpOworCisJLyogaWYgb3V0cHV0IHR5cGUgaXMgbm90IHNwZWNpZmllZCBv ciBlcXVhbHMgdG8gZnVuY3Rpb24gdHlwZSwgcmV0dXJuICovCisJaWYgKCFPaWRJc1ZhbGlk KHJldHVybmluZy0+dHlwaWQpIHx8IHJldHVybmluZy0+dHlwaWQgPT0gZXhwcnR5cGUpCisJ CXJldHVybiBleHByOworCisJbG9jYXRpb24gPSBleHByTG9jYXRpb24oZXhwcik7CisKKwlp ZiAobG9jYXRpb24gPCAwKQorCQlsb2NhdGlvbiA9IHJldHVybmluZyA/IHJldHVybmluZy0+ Zm9ybWF0LT5sb2NhdGlvbiA6IC0xOworCisJLyogc3BlY2lhbCBjYXNlIGZvciBSRVRVUk5J TkcgYnl0ZWEgRk9STUFUIGpzb24gKi8KKwlpZiAocmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1h dF90eXBlID09IEpTX0ZPUk1BVF9KU09OICYmCisJCXJldHVybmluZy0+dHlwaWQgPT0gQllU RUFPSUQpCisJeworCQkvKiBlbmNvZGUganNvbiB0ZXh0IGludG8gYnl0ZWEgdXNpbmcgcGdf Y29udmVydF90bygpICovCisJCU5vZGUJICAgKnRleHByID0gY29lcmNlX3RvX3NwZWNpZmlj X3R5cGUocHN0YXRlLCBleHByLCBURVhUT0lELAorCQkJCQkJCQkJCQkJCSJKU09OX0ZVTkNU SU9OIik7CisJCUNvbnN0CSAgICplbmMgPSBnZXRKc29uRW5jb2RpbmdDb25zdChyZXR1cm5p bmctPmZvcm1hdCk7CisJCUZ1bmNFeHByICAgKmZleHByID0gbWFrZUZ1bmNFeHByKEZfQ09O VkVSVF9UTywgQllURUFPSUQsCisJCQkJCQkJCQkJIGxpc3RfbWFrZTIodGV4cHIsIGVuYyks CisJCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkJIENPRVJD RV9FWFBMSUNJVF9DQUxMKTsKKwkJZmV4cHItPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwkJ cmV0dXJuIChOb2RlICopIGZleHByOworCX0KKworCS8qIHRyeSB0byBjb2VyY2UgZXhwcmVz c2lvbiB0byB0aGUgb3V0cHV0IHR5cGUgKi8KKwlyZXMgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5 cGUocHN0YXRlLCBleHByLCBleHBydHlwZSwKKwkJCQkJCQkJcmV0dXJuaW5nLT50eXBpZCwg cmV0dXJuaW5nLT50eXBtb2QsCisJCQkJCQkJCS8qIFhYWCB0aHJvd2luZyBlcnJvcnMgd2hl biBjYXN0aW5nIHRvIGNoYXIoTikgKi8KKwkJCQkJCQkJQ09FUkNJT05fRVhQTElDSVQsCisJ CQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQVNULAorCQkJCQkJCQlsb2NhdGlvbik7CisKKwlp ZiAoIXJlcyAmJiByZXBvcnRfZXJyb3IpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCB0 eXBlICVzIHRvICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJ0eXBlKSwKKwkJCQkJ CWZvcm1hdF90eXBlX2JlKHJldHVybmluZy0+dHlwaWQpKSwKKwkJCQkgcGFyc2VyX2NvZXJj aW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24sIGV4cHIpKSk7CisKKwlyZXR1cm4g cmVzOworfQorCitzdGF0aWMgTm9kZSAqCittYWtlSnNvbkNvbnN0cnVjdG9yRXhwcihQYXJz ZVN0YXRlICpwc3RhdGUsIEpzb25Db25zdHJ1Y3RvclR5cGUgdHlwZSwKKwkJCQkJCUxpc3Qg KmFyZ3MsIEV4cHIgKmZleHByLCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCQli b29sIHVuaXF1ZSwgYm9vbCBhYnNlbnRfb25fbnVsbCwgaW50IGxvY2F0aW9uKQoreworCUpz b25Db25zdHJ1Y3RvckV4cHIgKmpzY3RvciA9IG1ha2VOb2RlKEpzb25Db25zdHJ1Y3RvckV4 cHIpOworCU5vZGUJICAgKnBsYWNlaG9sZGVyOworCU5vZGUJICAgKmNvZXJjaW9uOworCU9p ZAkJCWludGVybWVkaWF0ZV90eXBpZCA9CisJCXJldHVybmluZy0+Zm9ybWF0LT5mb3JtYXRf dHlwZSA9PSBKU19GT1JNQVRfSlNPTkIgPyBKU09OQk9JRCA6IEpTT05PSUQ7CisKKwlqc2N0 b3ItPmFyZ3MgPSBhcmdzOworCWpzY3Rvci0+ZnVuYyA9IGZleHByOworCWpzY3Rvci0+dHlw ZSA9IHR5cGU7CisJanNjdG9yLT5yZXR1cm5pbmcgPSByZXR1cm5pbmc7CisJanNjdG9yLT51 bmlxdWUgPSB1bmlxdWU7CisJanNjdG9yLT5hYnNlbnRfb25fbnVsbCA9IGFic2VudF9vbl9u dWxsOworCWpzY3Rvci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCWlmIChmZXhwcikKKwkJ cGxhY2Vob2xkZXIgPSBtYWtlQ2FzZVRlc3RFeHByKChOb2RlICopIGZleHByKTsKKwllbHNl CisJeworCQlDYXNlVGVzdEV4cHIgKmN0ZSA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisK KwkJY3RlLT50eXBlSWQgPSBpbnRlcm1lZGlhdGVfdHlwaWQ7CisJCWN0ZS0+dHlwZU1vZCA9 IC0xOworCQljdGUtPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJcGxhY2Vob2xkZXIg PSAoTm9kZSAqKSBjdGU7CisJfQorCisJY29lcmNpb24gPSBjb2VyY2VKc29uRnVuY0V4cHIo cHN0YXRlLCBwbGFjZWhvbGRlciwgcmV0dXJuaW5nLCB0cnVlKTsKKworCWlmIChjb2VyY2lv biAhPSBwbGFjZWhvbGRlcikKKwkJanNjdG9yLT5jb2VyY2lvbiA9IChFeHByICopIGNvZXJj aW9uOworCisJcmV0dXJuIChOb2RlICopIGpzY3RvcjsKK30KKworLyoKKyAqIFRyYW5zZm9y bSBKU09OX09CSkVDVCgpIGNvbnN0cnVjdG9yLgorICoKKyAqIEpTT05fT0JKRUNUKCkgaXMg dHJhbnNmb3JtZWQgaW50byBqc29uW2JdX2J1aWxkX29iamVjdFtfZXh0XSgpIGNhbGwKKyAq IGRlcGVuZGluZyBvbiB0aGUgb3V0cHV0IEpTT04gZm9ybWF0LiBUaGUgZmlyc3QgdHdvIGFy Z3VtZW50cyBvZgorICoganNvbltiXV9idWlsZF9vYmplY3RfZXh0KCkgYXJlIGFic2VudF9v bl9udWxsIGFuZCBjaGVja19rZXlfdW5pcXVlbmVzcy4KKyAqCisgKiBUaGVuIGZ1bmN0aW9u IGNhbGwgcmVzdWx0IGlzIGNvZXJjZWQgdG8gdGhlIHRhcmdldCB0eXBlLgorICovCitzdGF0 aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAq cHN0YXRlLCBKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpCit7CisJSnNvblJldHVybmlu ZyAqcmV0dXJuaW5nOworCUxpc3QJICAgKmFyZ3MgPSBOSUw7CisKKwkvKiB0cmFuc2Zvcm0g a2V5LXZhbHVlIHBhaXJzLCBpZiBhbnkgKi8KKwlpZiAoY3Rvci0+ZXhwcnMpCisJeworCQlM aXN0Q2VsbCAgICpsYzsKKworCQkvKiB0cmFuc2Zvcm0gYW5kIGFwcGVuZCBrZXktdmFsdWUg YXJndW1lbnRzICovCisJCWZvcmVhY2gobGMsIGN0b3ItPmV4cHJzKQorCQl7CisJCQlKc29u S2V5VmFsdWUgKmt2ID0gY2FzdE5vZGUoSnNvbktleVZhbHVlLCBsZmlyc3QobGMpKTsKKwkJ CU5vZGUJICAgKmtleSA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgKE5vZGUgKikg a3YtPmtleSk7CisJCQlOb2RlCSAgICp2YWwgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByRGVm YXVsdChwc3RhdGUsIGt2LT52YWx1ZSk7CisKKwkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIGtl eSk7CisJCQlhcmdzID0gbGFwcGVuZChhcmdzLCB2YWwpOworCQl9CisJfQorCisJcmV0dXJu aW5nID0gdHJhbnNmb3JtSnNvbkNvbnN0cnVjdG9yT3V0cHV0KHBzdGF0ZSwgY3Rvci0+b3V0 cHV0LCBhcmdzKTsKKworCXJldHVybiBtYWtlSnNvbkNvbnN0cnVjdG9yRXhwcihwc3RhdGUs IEpTQ1RPUl9KU09OX09CSkVDVCwgYXJncywgTlVMTCwKKwkJCQkJCQkJICAgcmV0dXJuaW5n LCBjdG9yLT51bmlxdWUsCisJCQkJCQkJCSAgIGN0b3ItPmFic2VudF9vbl9udWxsLCBjdG9y LT5sb2NhdGlvbik7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTl9BUlJBWShxdWVyeSBb Rk9STUFUXSBbUkVUVVJOSU5HXSBbT04gTlVMTF0pIGludG8KKyAqICAoU0VMRUNUICBKU09O X0FSUkFZQUdHKGEgIFtGT1JNQVRdIFtSRVRVUk5JTkddIFtPTiBOVUxMXSkgRlJPTSAocXVl cnkpIHEoYSkpCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25BcnJheVF1ZXJ5 Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkgICBKc29uQXJyYXlR dWVyeUNvbnN0cnVjdG9yICpjdG9yKQoreworCVN1YkxpbmsJICAgKnN1YmxpbmsgPSBtYWtl Tm9kZShTdWJMaW5rKTsKKwlTZWxlY3RTdG10ICpzZWxlY3QgPSBtYWtlTm9kZShTZWxlY3RT dG10KTsKKwlSYW5nZVN1YnNlbGVjdCAqcmFuZ2UgPSBtYWtlTm9kZShSYW5nZVN1YnNlbGVj dCk7CisJQWxpYXMJICAgKmFsaWFzID0gbWFrZU5vZGUoQWxpYXMpOworCVJlc1RhcmdldCAg KnRhcmdldCA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisJSnNvbkFycmF5QWdnICphZ2cgPSBt YWtlTm9kZShKc29uQXJyYXlBZ2cpOworCUNvbHVtblJlZiAgKmNvbHJlZiA9IG1ha2VOb2Rl KENvbHVtblJlZik7CisJUXVlcnkJICAgKnF1ZXJ5OworCVBhcnNlU3RhdGUgKnFwc3RhdGU7 CisKKwkvKiBUcmFuc2Zvcm0gcXVlcnkgb25seSBmb3IgY291bnRpbmcgdGFyZ2V0IGxpc3Qg ZW50cmllcy4gKi8KKwlxcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKHBzdGF0ZSk7CisKKwlx dWVyeSA9IHRyYW5zZm9ybVN0bXQocXBzdGF0ZSwgY3Rvci0+cXVlcnkpOworCisJaWYgKGNv dW50X25vbmp1bmtfdGxpc3RfZW50cmllcyhxdWVyeS0+dGFyZ2V0TGlzdCkgIT0gMSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJIGVycm1zZygic3VicXVlcnkgbXVzdCByZXR1cm4gb25seSBvbmUgY29sdW1uIiksCisJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGN0b3ItPmxvY2F0aW9uKSkpOworCisJ ZnJlZV9wYXJzZXN0YXRlKHFwc3RhdGUpOworCisJY29scmVmLT5maWVsZHMgPSBsaXN0X21h a2UyKG1ha2VTdHJpbmcocHN0cmR1cCgicSIpKSwKKwkJCQkJCQkJbWFrZVN0cmluZyhwc3Ry ZHVwKCJhIikpKTsKKwljb2xyZWYtPmxvY2F0aW9uID0gY3Rvci0+bG9jYXRpb247CisKKwlh Z2ctPmFyZyA9IG1ha2VKc29uVmFsdWVFeHByKChFeHByICopIGNvbHJlZiwgY3Rvci0+Zm9y bWF0KTsKKwlhZ2ctPmFic2VudF9vbl9udWxsID0gY3Rvci0+YWJzZW50X29uX251bGw7CisJ YWdnLT5jb25zdHJ1Y3RvciA9IG1ha2VOb2RlKEpzb25BZ2dDb25zdHJ1Y3Rvcik7CisJYWdn LT5jb25zdHJ1Y3Rvci0+YWdnX29yZGVyID0gTklMOworCWFnZy0+Y29uc3RydWN0b3ItPm91 dHB1dCA9IGN0b3ItPm91dHB1dDsKKwlhZ2ctPmNvbnN0cnVjdG9yLT5sb2NhdGlvbiA9IGN0 b3ItPmxvY2F0aW9uOworCisJdGFyZ2V0LT5uYW1lID0gTlVMTDsKKwl0YXJnZXQtPmluZGly ZWN0aW9uID0gTklMOworCXRhcmdldC0+dmFsID0gKE5vZGUgKikgYWdnOworCXRhcmdldC0+ bG9jYXRpb24gPSBjdG9yLT5sb2NhdGlvbjsKKworCWFsaWFzLT5hbGlhc25hbWUgPSBwc3Ry ZHVwKCJxIik7CisJYWxpYXMtPmNvbG5hbWVzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBz dHJkdXAoImEiKSkpOworCisJcmFuZ2UtPmxhdGVyYWwgPSBmYWxzZTsKKwlyYW5nZS0+c3Vi cXVlcnkgPSBjdG9yLT5xdWVyeTsKKwlyYW5nZS0+YWxpYXMgPSBhbGlhczsKKworCXNlbGVj dC0+dGFyZ2V0TGlzdCA9IGxpc3RfbWFrZTEodGFyZ2V0KTsKKwlzZWxlY3QtPmZyb21DbGF1 c2UgPSBsaXN0X21ha2UxKHJhbmdlKTsKKworCXN1YmxpbmstPnN1YkxpbmtUeXBlID0gRVhQ Ul9TVUJMSU5LOworCXN1YmxpbmstPnN1YkxpbmtJZCA9IDA7CisJc3VibGluay0+dGVzdGV4 cHIgPSBOVUxMOworCXN1YmxpbmstPm9wZXJOYW1lID0gTklMOworCXN1YmxpbmstPnN1YnNl bGVjdCA9IChOb2RlICopIHNlbGVjdDsKKwlzdWJsaW5rLT5sb2NhdGlvbiA9IGN0b3ItPmxv Y2F0aW9uOworCisJcmV0dXJuIHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgKE5vZGUg Kikgc3VibGluayk7Cit9CisKKy8qCisgKiBDb21tb24gY29kZSBmb3IgSlNPTl9PQkpFQ1RB R0cgYW5kIEpTT05fQVJSQVlBR0cgdHJhbnNmb3JtYXRpb24uCisgKi8KK3N0YXRpYyBOb2Rl ICoKK3RyYW5zZm9ybUpzb25BZ2dDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3RhdGUsIEpz b25BZ2dDb25zdHJ1Y3RvciAqYWdnX2N0b3IsCisJCQkJCQkJSnNvblJldHVybmluZyAqcmV0 dXJuaW5nLCBMaXN0ICphcmdzLAorCQkJCQkJCWNvbnN0IGNoYXIgKmFnZ2ZuLCBPaWQgYWdn dHlwZSwKKwkJCQkJCQlKc29uQ29uc3RydWN0b3JUeXBlIGN0b3JfdHlwZSwKKwkJCQkJCQli b29sIHVuaXF1ZSwgYm9vbCBhYnNlbnRfb25fbnVsbCkKK3sKKwlPaWQJCQlhZ2dmbm9pZDsK KwlOb2RlCSAgICpub2RlOworCUV4cHIJICAgKmFnZ2ZpbHRlciA9IGFnZ19jdG9yLT5hZ2df ZmlsdGVyID8gKEV4cHIgKikKKwkJdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCBhZ2df Y3Rvci0+YWdnX2ZpbHRlciwKKwkJCQkJCQkgRVhQUl9LSU5EX0ZJTFRFUiwgIkZJTFRFUiIp IDogTlVMTDsKKworCWFnZ2Zub2lkID0gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNh bGwxKHJlZ3Byb2NpbiwKKwkJCQkJCQkJCQkJCSBDU3RyaW5nR2V0RGF0dW0oYWdnZm4pKSk7 CisKKwlpZiAoYWdnX2N0b3ItPm92ZXIpCisJeworCQkvKiB3aW5kb3cgZnVuY3Rpb24gKi8K KwkJV2luZG93RnVuYyAqd2Z1bmMgPSBtYWtlTm9kZShXaW5kb3dGdW5jKTsKKworCQl3ZnVu Yy0+d2luZm5vaWQgPSBhZ2dmbm9pZDsKKwkJd2Z1bmMtPndpbnR5cGUgPSBhZ2d0eXBlOwor CQkvKiB3aW5jb2xsaWQgYW5kIGlucHV0Y29sbGlkIHdpbGwgYmUgc2V0IGJ5IHBhcnNlX2Nv bGxhdGUuYyAqLworCQl3ZnVuYy0+YXJncyA9IGFyZ3M7CisJCS8qIHdpbnJlZiB3aWxsIGJl IHNldCBieSB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbCAqLworCQl3ZnVuYy0+d2luc3RhciA9 IGZhbHNlOworCQl3ZnVuYy0+d2luYWdnID0gdHJ1ZTsKKwkJd2Z1bmMtPmFnZ2ZpbHRlciA9 IGFnZ2ZpbHRlcjsKKwkJd2Z1bmMtPmxvY2F0aW9uID0gYWdnX2N0b3ItPmxvY2F0aW9uOwor CisJCS8qCisJCSAqIG9yZGVyZWQgYWdncyBub3QgYWxsb3dlZCBpbiB3aW5kb3dzIHlldAor CQkgKi8KKwkJaWYgKGFnZ19jdG9yLT5hZ2dfb3JkZXIgIT0gTklMKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCQkgZXJybXNnKCJhZ2dyZWdhdGUgT1JERVIgQlkgaXMgbm90IGltcGxlbWVudGVkIGZv ciB3aW5kb3cgZnVuY3Rpb25zIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBhZ2dfY3Rvci0+bG9jYXRpb24pKSk7CisKKwkJLyogcGFyc2VfYWdnLmMgZG9lcyBhZGRp dGlvbmFsIHdpbmRvdy1mdW5jLXNwZWNpZmljIHByb2Nlc3NpbmcgKi8KKwkJdHJhbnNmb3Jt V2luZG93RnVuY0NhbGwocHN0YXRlLCB3ZnVuYywgYWdnX2N0b3ItPm92ZXIpOworCisJCW5v ZGUgPSAoTm9kZSAqKSB3ZnVuYzsKKwl9CisJZWxzZQorCXsKKwkJQWdncmVmCSAgICphZ2dy ZWYgPSBtYWtlTm9kZShBZ2dyZWYpOworCisJCWFnZ3JlZi0+YWdnZm5vaWQgPSBhZ2dmbm9p ZDsKKwkJYWdncmVmLT5hZ2d0eXBlID0gYWdndHlwZTsKKworCQkvKiBhZ2djb2xsaWQgYW5k IGlucHV0Y29sbGlkIHdpbGwgYmUgc2V0IGJ5IHBhcnNlX2NvbGxhdGUuYyAqLworCQlhZ2dy ZWYtPmFnZ3RyYW5zdHlwZSA9IEludmFsaWRPaWQ7CQkvKiB3aWxsIGJlIHNldCBieSBwbGFu bmVyICovCisJCS8qIGFnZ2FyZ3R5cGVzIHdpbGwgYmUgc2V0IGJ5IHRyYW5zZm9ybUFnZ3Jl Z2F0ZUNhbGwgKi8KKwkJLyogYWdnZGlyZWN0YXJncyBhbmQgYXJncyB3aWxsIGJlIHNldCBi eSB0cmFuc2Zvcm1BZ2dyZWdhdGVDYWxsICovCisJCS8qIGFnZ29yZGVyIGFuZCBhZ2dkaXN0 aW5jdCB3aWxsIGJlIHNldCBieSB0cmFuc2Zvcm1BZ2dyZWdhdGVDYWxsICovCisJCWFnZ3Jl Zi0+YWdnZmlsdGVyID0gYWdnZmlsdGVyOworCQlhZ2dyZWYtPmFnZ3N0YXIgPSBmYWxzZTsK KwkJYWdncmVmLT5hZ2d2YXJpYWRpYyA9IGZhbHNlOworCQlhZ2dyZWYtPmFnZ2tpbmQgPSBB R0dLSU5EX05PUk1BTDsKKwkJLyogYWdnbGV2ZWxzdXAgd2lsbCBiZSBzZXQgYnkgdHJhbnNm b3JtQWdncmVnYXRlQ2FsbCAqLworCQlhZ2dyZWYtPmFnZ3NwbGl0ID0gQUdHU1BMSVRfU0lN UExFOwkJLyogcGxhbm5lciBtaWdodCBjaGFuZ2UgdGhpcyAqLworCQlhZ2dyZWYtPmxvY2F0 aW9uID0gYWdnX2N0b3ItPmxvY2F0aW9uOworCisJCXRyYW5zZm9ybUFnZ3JlZ2F0ZUNhbGwo cHN0YXRlLCBhZ2dyZWYsIGFyZ3MsIGFnZ19jdG9yLT5hZ2dfb3JkZXIsIGZhbHNlKTsKKwor CQlub2RlID0gKE5vZGUgKikgYWdncmVmOworCX0KKworCXJldHVybiBtYWtlSnNvbkNvbnN0 cnVjdG9yRXhwcihwc3RhdGUsIGN0b3JfdHlwZSwgTklMLCAoRXhwciAqKSBub2RlLAorCQkJ CQkJCQkgICByZXR1cm5pbmcsIHVuaXF1ZSwgYWJzZW50X29uX251bGwsCisJCQkJCQkJCSAg IGFnZ19jdG9yLT5sb2NhdGlvbik7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTl9PQkpF Q1RBR0coKSBhZ2dyZWdhdGUgZnVuY3Rpb24uCisgKgorICogSlNPTl9PQkpFQ1RBR0coKSBp cyB0cmFuc2Zvcm1lZCBpbnRvCisgKiBqc29uW2JdX29iamVjdGFnZyhrZXksIHZhbHVlLCBh YnNlbnRfb25fbnVsbCwgY2hlY2tfdW5pcXVlKSBjYWxsIGRlcGVuZGluZyBvbgorICogdGhl IG91dHB1dCBKU09OIGZvcm1hdC4gIFRoZW4gdGhlIGZ1bmN0aW9uIGNhbGwgcmVzdWx0IGlz IGNvZXJjZWQgdG8gdGhlCisgKiB0YXJnZXQgb3V0cHV0IHR5cGUuCisgKi8KK3N0YXRpYyBO b2RlICoKK3RyYW5zZm9ybUpzb25PYmplY3RBZ2coUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29u T2JqZWN0QWdnICphZ2cpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOworCU5vZGUJ ICAgKmtleTsKKwlOb2RlCSAgICp2YWw7CisJTGlzdAkgICAqYXJnczsKKwljb25zdCBjaGFy ICphZ2dmbm5hbWU7CisJT2lkCQkJYWdndHlwZTsKKworCWtleSA9IHRyYW5zZm9ybUV4cHJS ZWN1cnNlKHBzdGF0ZSwgKE5vZGUgKikgYWdnLT5hcmctPmtleSk7CisJdmFsID0gdHJhbnNm b3JtSnNvblZhbHVlRXhwckRlZmF1bHQocHN0YXRlLCBhZ2ctPmFyZy0+dmFsdWUpOworCWFy Z3MgPSBsaXN0X21ha2UyKGtleSwgdmFsKTsKKworCXJldHVybmluZyA9IHRyYW5zZm9ybUpz b25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUsIGFnZy0+Y29uc3RydWN0b3ItPm91dHB1dCwK KwkJCQkJCQkJCQkJICAgYXJncyk7CisKKwlpZiAocmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1h dF90eXBlID09IEpTX0ZPUk1BVF9KU09OQikKKwl7CisJCWlmIChhZ2ctPmFic2VudF9vbl9u dWxsKQorCQkJaWYgKGFnZy0+dW5pcXVlKQorCQkJCWFnZ2ZubmFtZSA9ICJwZ19jYXRhbG9n Lmpzb25iX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdCI7IC8qIEZfSlNPTkJfT0JKRUNUX0FH R19VTklRVUVfU1RSSUNUICovCisJCQllbHNlCisJCQkJYWdnZm5uYW1lID0gInBnX2NhdGFs b2cuanNvbmJfb2JqZWN0X2FnZ19zdHJpY3QiOyAvKiBGX0pTT05CX09CSkVDVF9BR0dfU1RS SUNUICovCisJCWVsc2UKKwkJCWlmIChhZ2ctPnVuaXF1ZSkKKwkJCQlhZ2dmbm5hbWUgPSAi cGdfY2F0YWxvZy5qc29uYl9vYmplY3RfYWdnX3VuaXF1ZSI7IC8qIEZfSlNPTkJfT0JKRUNU X0FHR19VTklRVUUgKi8KKwkJCWVsc2UKKwkJCQlhZ2dmbm5hbWUgPSAicGdfY2F0YWxvZy5q c29uYl9vYmplY3RfYWdnIjsgLyogRl9KU09OQl9PQkpFQ1RfQUdHICovCisKKwkJYWdndHlw ZSA9IEpTT05CT0lEOworCX0KKwllbHNlCisJeworCQlpZiAoYWdnLT5hYnNlbnRfb25fbnVs bCkKKwkJCWlmIChhZ2ctPnVuaXF1ZSkKKwkJCQlhZ2dmbm5hbWUgPSAicGdfY2F0YWxvZy5q c29uX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdCI7IC8qIEZfSlNPTl9PQkpFQ1RfQUdHX1VO SVFVRV9TVFJJQ1QgKi8KKwkJCWVsc2UKKwkJCQlhZ2dmbm5hbWUgPSAicGdfY2F0YWxvZy5q c29uX29iamVjdF9hZ2dfc3RyaWN0IjsgLyogRl9KU09OX09CSkVDVF9BR0dfU1RSSUNUICov CisJCWVsc2UKKwkJCWlmIChhZ2ctPnVuaXF1ZSkKKwkJCQlhZ2dmbm5hbWUgPSAicGdfY2F0 YWxvZy5qc29uX29iamVjdF9hZ2dfdW5pcXVlIjsgLyogRl9KU09OX09CSkVDVF9BR0dfVU5J UVVFICovCisJCQllbHNlCisJCQkJYWdnZm5uYW1lID0gInBnX2NhdGFsb2cuanNvbl9vYmpl Y3RfYWdnIjsgLyogRl9KU09OX09CSkVDVF9BR0cgKi8KKworCQlhZ2d0eXBlID0gSlNPTk9J RDsKKwl9CisKKwlyZXR1cm4gdHJhbnNmb3JtSnNvbkFnZ0NvbnN0cnVjdG9yKHBzdGF0ZSwg YWdnLT5jb25zdHJ1Y3RvciwgcmV0dXJuaW5nLAorCQkJCQkJCQkJICAgYXJncywgYWdnZm5u YW1lLCBhZ2d0eXBlLAorCQkJCQkJCQkJICAgSlNDVE9SX0pTT05fT0JKRUNUQUdHLAorCQkJ CQkJCQkJICAgYWdnLT51bmlxdWUsIGFnZy0+YWJzZW50X29uX251bGwpOworfQorCisvKgor ICogVHJhbnNmb3JtIEpTT05fQVJSQVlBR0coKSBhZ2dyZWdhdGUgZnVuY3Rpb24uCisgKgor ICogSlNPTl9BUlJBWUFHRygpIGlzIHRyYW5zZm9ybWVkIGludG8ganNvbltiXV9hZ2dbX3N0 cmljdF0oKSBjYWxsIGRlcGVuZGluZworICogb24gdGhlIG91dHB1dCBKU09OIGZvcm1hdCBh bmQgYWJzZW50X29uX251bGwuICBUaGVuIHRoZSBmdW5jdGlvbiBjYWxsIHJlc3VsdAorICog aXMgY29lcmNlZCB0byB0aGUgdGFyZ2V0IG91dHB1dCB0eXBlLgorICovCitzdGF0aWMgTm9k ZSAqCit0cmFuc2Zvcm1Kc29uQXJyYXlBZ2coUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQXJy YXlBZ2cgKmFnZykKK3sKKwlKc29uUmV0dXJuaW5nICpyZXR1cm5pbmc7CisJTm9kZQkgICAq YXJnOworCWNvbnN0IGNoYXIgKmFnZ2ZubmFtZTsKKwlPaWQJCQlhZ2d0eXBlOworCisJYXJn ID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwckRlZmF1bHQocHN0YXRlLCBhZ2ctPmFyZyk7CisK KwlyZXR1cm5pbmcgPSB0cmFuc2Zvcm1Kc29uQ29uc3RydWN0b3JPdXRwdXQocHN0YXRlLCBh Z2ctPmNvbnN0cnVjdG9yLT5vdXRwdXQsCisJCQkJCQkJCQkJCSAgIGxpc3RfbWFrZTEoYXJn KSk7CisKKwlpZiAocmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1B VF9KU09OQikKKwl7CisJCWFnZ2ZubmFtZSA9IGFnZy0+YWJzZW50X29uX251bGwgPworCQkJ InBnX2NhdGFsb2cuanNvbmJfYWdnX3N0cmljdCIgOiAicGdfY2F0YWxvZy5qc29uYl9hZ2ci OworCQlhZ2d0eXBlID0gSlNPTkJPSUQ7CisJfQorCWVsc2UKKwl7CisJCWFnZ2ZubmFtZSA9 IGFnZy0+YWJzZW50X29uX251bGwgPworCQkJInBnX2NhdGFsb2cuanNvbl9hZ2dfc3RyaWN0 IiA6ICJwZ19jYXRhbG9nLmpzb25fYWdnIjsKKwkJYWdndHlwZSA9IEpTT05PSUQ7CisJfQor CisJcmV0dXJuIHRyYW5zZm9ybUpzb25BZ2dDb25zdHJ1Y3Rvcihwc3RhdGUsIGFnZy0+Y29u c3RydWN0b3IsIHJldHVybmluZywKKwkJCQkJCQkJCSAgIGxpc3RfbWFrZTEoYXJnKSwgYWdn Zm5uYW1lLCBhZ2d0eXBlLAorCQkJCQkJCQkJICAgSlNDVE9SX0pTT05fQVJSQVlBR0csCisJ CQkJCQkJCQkgICBmYWxzZSwgYWdnLT5hYnNlbnRfb25fbnVsbCk7Cit9CisKKy8qCisgKiBU cmFuc2Zvcm0gSlNPTl9BUlJBWSgpIGNvbnN0cnVjdG9yLgorICoKKyAqIEpTT05fQVJSQVko KSBpcyB0cmFuc2Zvcm1lZCBpbnRvIGpzb25bYl1fYnVpbGRfYXJyYXlbX2V4dF0oKSBjYWxs CisgKiBkZXBlbmRpbmcgb24gdGhlIG91dHB1dCBKU09OIGZvcm1hdC4gVGhlIGZpcnN0IGFy Z3VtZW50IG9mCisgKiBqc29uW2JdX2J1aWxkX2FycmF5X2V4dCgpIGlzIGFic2VudF9vbl9u dWxsLgorICoKKyAqIFRoZW4gZnVuY3Rpb24gY2FsbCByZXN1bHQgaXMgY29lcmNlZCB0byB0 aGUgdGFyZ2V0IHR5cGUuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25BcnJh eUNvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkFycmF5Q29uc3RydWN0b3Ig KmN0b3IpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOworCUxpc3QJICAgKmFyZ3Mg PSBOSUw7CisKKwkvKiB0cmFuc2Zvcm0gZWxlbWVudCBleHByZXNzaW9ucywgaWYgYW55ICov CisJaWYgKGN0b3ItPmV4cHJzKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJLyogdHJh bnNmb3JtIGFuZCBhcHBlbmQgZWxlbWVudCBhcmd1bWVudHMgKi8KKwkJZm9yZWFjaChsYywg Y3Rvci0+ZXhwcnMpCisJCXsKKwkJCUpzb25WYWx1ZUV4cHIgKmpzdmFsID0gY2FzdE5vZGUo SnNvblZhbHVlRXhwciwgbGZpcnN0KGxjKSk7CisJCQlOb2RlCSAgICp2YWwgPSB0cmFuc2Zv cm1Kc29uVmFsdWVFeHByRGVmYXVsdChwc3RhdGUsIGpzdmFsKTsKKworCQkJYXJncyA9IGxh cHBlbmQoYXJncywgdmFsKTsKKwkJfQorCX0KKworCXJldHVybmluZyA9IHRyYW5zZm9ybUpz b25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUsIGN0b3ItPm91dHB1dCwgYXJncyk7CisKKwly ZXR1cm4gbWFrZUpzb25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBKU0NUT1JfSlNPTl9BUlJB WSwgYXJncywgTlVMTCwKKwkJCQkJCQkJICAgcmV0dXJuaW5nLCBmYWxzZSwgY3Rvci0+YWJz ZW50X29uX251bGwsCisJCQkJCQkJCSAgIGN0b3ItPmxvY2F0aW9uKTsKK30KKworc3RhdGlj IE5vZGUgKgordHJhbnNmb3JtSnNvblBhcnNlQXJnKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqanNleHByLCBKc29uRm9ybWF0ICpmb3JtYXQsCisJCQkJCSAgT2lkICpleHBydHlwZSkK K3sKKwlOb2RlCSAgICpyYXdfZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwg anNleHByKTsKKwlOb2RlCSAgICpleHByID0gcmF3X2V4cHI7CisKKwkqZXhwcnR5cGUgPSBl eHByVHlwZShleHByKTsKKworCS8qIHByZXBhcmUgaW5wdXQgZG9jdW1lbnQgKi8KKwlpZiAo KmV4cHJ0eXBlID09IEJZVEVBT0lEKQorCXsKKwkJSnNvblZhbHVlRXhwciAqanZlOworCisJ CWV4cHIgPSBtYWtlQ2FzZVRlc3RFeHByKHJhd19leHByKTsKKwkJZXhwciA9IG1ha2VKc29u Qnl0ZWFUb1RleHRDb252ZXJzaW9uKGV4cHIsIGZvcm1hdCwgZXhwckxvY2F0aW9uKGV4cHIp KTsKKwkJKmV4cHJ0eXBlID0gVEVYVE9JRDsKKworCQlqdmUgPSBtYWtlSnNvblZhbHVlRXhw cigoRXhwciAqKSByYXdfZXhwciwgZm9ybWF0KTsKKworCQlqdmUtPmZvcm1hdHRlZF9leHBy ID0gKEV4cHIgKikgZXhwcjsKKwkJZXhwciA9IChOb2RlICopIGp2ZTsKKwl9CisJZWxzZQor CXsKKwkJY2hhcgkJdHlwY2F0ZWdvcnk7CisJCWJvb2wJCXR5cGlzcHJlZmVycmVkOworCisJ CWdldF90eXBlX2NhdGVnb3J5X3ByZWZlcnJlZCgqZXhwcnR5cGUsICZ0eXBjYXRlZ29yeSwg JnR5cGlzcHJlZmVycmVkKTsKKworCQlpZiAoKmV4cHJ0eXBlID09IFVOS05PV05PSUQgfHwg dHlwY2F0ZWdvcnkgPT0gVFlQQ0FURUdPUllfU1RSSU5HKQorCQl7CisJCQlleHByID0gY29l cmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgKE5vZGUgKikgZXhwciwgKmV4cHJ0eXBlLAor CQkJCQkJCQkJCSBURVhUT0lELCAtMSwKKwkJCQkJCQkJCQkgQ09FUkNJT05fSU1QTElDSVQs CisJCQkJCQkJCQkJIENPRVJDRV9JTVBMSUNJVF9DQVNULCAtMSk7CisJCQkqZXhwcnR5cGUg PSBURVhUT0lEOworCQl9CisKKwkJaWYgKGZvcm1hdC0+ZW5jb2RpbmcgIT0gSlNfRU5DX0RF RkFVTFQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBm b3JtYXQtPmxvY2F0aW9uKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IHVzZSBKU09OIEZPUk1B VCBFTkNPRElORyBjbGF1c2UgZm9yIG5vbi1ieXRlYSBpbnB1dCB0eXBlcyIpKSk7CisJfQor CisJcmV0dXJuIGV4cHI7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gSVMgSlNPTiBwcmVkaWNh dGUgaW50bworICoganNvbltiXV9pc192YWxpZChqc29uLCB2YWx1ZV90eXBlIFssIGNoZWNr X2tleV91bmlxdWVuZXNzXSkgY2FsbC4KKyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3Jt SnNvbklzUHJlZGljYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbklzUHJlZGljYXRlICpw cmVkKQoreworCU9pZAkJCWV4cHJ0eXBlOworCU5vZGUJICAgKmV4cHIgPSB0cmFuc2Zvcm1K c29uUGFyc2VBcmcocHN0YXRlLCBwcmVkLT5leHByLCBwcmVkLT5mb3JtYXQsCisJCQkJCQkJ CQkJCSAmZXhwcnR5cGUpOworCisJLyogbWFrZSByZXN1bHRpbmcgZXhwcmVzc2lvbiAqLwor CWlmIChleHBydHlwZSAhPSBURVhUT0lEICYmIGV4cHJ0eXBlICE9IEpTT05PSUQgJiYgZXhw cnR5cGUgIT0gSlNPTkJPSUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSB0eXBl ICVzIGluIElTIEpTT04gcHJlZGljYXRlIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJ0 eXBlKSkpKTsKKworCXJldHVybiBtYWtlSnNvbklzUHJlZGljYXRlKGV4cHIsIE5VTEwsIHBy ZWQtPnZhbHVlX3R5cGUsCisJCQkJCQkJICAgcHJlZC0+dW5pcXVlX2tleXMsIHByZWQtPmxv Y2F0aW9uKTsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBhIEpTT04gUEFTU0lORyBjbGF1c2Uu CisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBKc29uRm9ybWF0VHlwZSBmb3JtYXQsIExpc3QgKmFyZ3MsCisJCQkJCQkg TGlzdCAqKnBhc3NpbmdfdmFsdWVzLCBMaXN0ICoqcGFzc2luZ19uYW1lcykKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKworCSpwYXNzaW5nX3ZhbHVlcyA9IE5JTDsKKwkqcGFzc2luZ19uYW1l cyA9IE5JTDsKKworCWZvcmVhY2gobGMsIGFyZ3MpCisJeworCQlKc29uQXJndW1lbnQgKmFy ZyA9IGNhc3ROb2RlKEpzb25Bcmd1bWVudCwgbGZpcnN0KGxjKSk7CisJCU5vZGUJICAgKmV4 cHIgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByRXh0KHBzdGF0ZSwgYXJnLT52YWwsCisJCQkJ CQkJCQkJCQkJIGZvcm1hdCwgdHJ1ZSwgSW52YWxpZE9pZCk7CisKKwkJYXNzaWduX2V4cHJf Y29sbGF0aW9ucyhwc3RhdGUsIGV4cHIpOworCisJCSpwYXNzaW5nX3ZhbHVlcyA9IGxhcHBl bmQoKnBhc3NpbmdfdmFsdWVzLCBleHByKTsKKwkJKnBhc3NpbmdfbmFtZXMgPSBsYXBwZW5k KCpwYXNzaW5nX25hbWVzLCBtYWtlU3RyaW5nKGFyZy0+bmFtZSkpOworCX0KK30KKworLyoK KyAqIFRyYW5zZm9ybSBhIEpTT04gQkVIQVZJT1IgY2xhdXNlLgorICovCitzdGF0aWMgSnNv bkJlaGF2aW9yICoKK3RyYW5zZm9ybUpzb25CZWhhdmlvcihQYXJzZVN0YXRlICpwc3RhdGUs IEpzb25CZWhhdmlvciAqYmVoYXZpb3IsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlwZSBkZWZh dWx0X2JlaGF2aW9yKQoreworCUpzb25CZWhhdmlvclR5cGUgYmVoYXZpb3JfdHlwZTsKKwlO b2RlCSAgICpkZWZhdWx0X2V4cHI7CisKKwliZWhhdmlvcl90eXBlID0gYmVoYXZpb3IgPyBi ZWhhdmlvci0+YnR5cGUgOiBkZWZhdWx0X2JlaGF2aW9yOworCWRlZmF1bHRfZXhwciA9IGJl aGF2aW9yX3R5cGUgIT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUID8gTlVMTCA6CisJCXRyYW5z Zm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYmVoYXZpb3ItPmRlZmF1bHRfZXhwcik7CisKKwly ZXR1cm4gbWFrZUpzb25CZWhhdmlvcihiZWhhdmlvcl90eXBlLCBkZWZhdWx0X2V4cHIpOwor fQorCisvKgorICogQ29tbW9uIGNvZGUgZm9yIEpTT05fVkFMVUUsIEpTT05fUVVFUlksIEpT T05fRVhJU1RTIHRyYW5zZm9ybWF0aW9uCisgKiBpbnRvIGEgSnNvbkV4cHIgbm9kZS4KKyAq Lworc3RhdGljIEpzb25FeHByICoKK3RyYW5zZm9ybUpzb25FeHByQ29tbW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQoreworCUpzb25FeHByICAgKmpzZXhw ciA9IG1ha2VOb2RlKEpzb25FeHByKTsKKwlOb2RlCSAgICpwYXRoc3BlYzsKKwlKc29uRm9y bWF0VHlwZSBmb3JtYXQ7CisKKwlpZiAoZnVuYy0+Y29tbW9uLT5wYXRobmFtZSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ IGVycm1zZygiSlNPTl9UQUJMRSBwYXRoIG5hbWUgaXMgbm90IGFsbG93ZWQgaGVyZSIpLAor CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmdW5jLT5sb2NhdGlvbikpKTsKKwor CWpzZXhwci0+bG9jYXRpb24gPSBmdW5jLT5sb2NhdGlvbjsKKwlqc2V4cHItPm9wID0gZnVu Yy0+b3A7CisJanNleHByLT5mb3JtYXR0ZWRfZXhwciA9IHRyYW5zZm9ybUpzb25WYWx1ZUV4 cHIocHN0YXRlLCBmdW5jLT5jb21tb24tPmV4cHIpOworCisJYXNzaWduX2V4cHJfY29sbGF0 aW9ucyhwc3RhdGUsIGpzZXhwci0+Zm9ybWF0dGVkX2V4cHIpOworCisJLyogZm9ybWF0IGlz IGRldGVybWluZWQgYnkgY29udGV4dCBpdGVtIHR5cGUgKi8KKwlmb3JtYXQgPSBleHByVHlw ZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSA9PSBKU09OQk9JRCA/IEpTX0ZPUk1BVF9KU09O QiA6IEpTX0ZPUk1BVF9KU09OOworCisJanNleHByLT5yZXN1bHRfY29lcmNpb24gPSBOVUxM OworCWpzZXhwci0+b21pdF9xdW90ZXMgPSBmYWxzZTsKKworCWpzZXhwci0+Zm9ybWF0ID0g ZnVuYy0+Y29tbW9uLT5leHByLT5mb3JtYXQ7CisKKwlwYXRoc3BlYyA9IHRyYW5zZm9ybUV4 cHJSZWN1cnNlKHBzdGF0ZSwgZnVuYy0+Y29tbW9uLT5wYXRoc3BlYyk7CisKKwlqc2V4cHIt PnBhdGhfc3BlYyA9CisJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIHBhdGhzcGVj LCBleHByVHlwZShwYXRoc3BlYyksCisJCQkJCQkJICBKU09OUEFUSE9JRCwgLTEsCisJCQkJ CQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJ ICBleHByTG9jYXRpb24ocGF0aHNwZWMpKTsKKwlpZiAoIWpzZXhwci0+cGF0aF9zcGVjKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFU Q0gpLAorCQkJCSBlcnJtc2coIkpTT04gcGF0aCBleHByZXNzaW9uIG11c3QgYmUgdHlwZSAl cywgbm90IHR5cGUgJXMiLAorCQkJCQkJImpzb25wYXRoIiwgZm9ybWF0X3R5cGVfYmUoZXhw clR5cGUocGF0aHNwZWMpKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4 cHJMb2NhdGlvbihwYXRoc3BlYykpKSk7CisKKwkvKiB0cmFuc2Zvcm0gYW5kIGNvZXJjZSB0 byBqc29uW2JdIHBhc3NpbmcgYXJndW1lbnRzICovCisJdHJhbnNmb3JtSnNvblBhc3NpbmdB cmdzKHBzdGF0ZSwgZm9ybWF0LCBmdW5jLT5jb21tb24tPnBhc3NpbmcsCisJCQkJCQkJICZq c2V4cHItPnBhc3NpbmdfdmFsdWVzLCAmanNleHByLT5wYXNzaW5nX25hbWVzKTsKKworCWlm IChmdW5jLT5vcCAhPSBJU19KU09OX0VYSVNUUykKKwkJanNleHByLT5vbl9lbXB0eSA9IHRy YW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2VtcHR5LAorCQkJCQkJCQkJ CQkJIEpTT05fQkVIQVZJT1JfTlVMTCk7CisKKwlqc2V4cHItPm9uX2Vycm9yID0gdHJhbnNm b3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJCQkJCQkJCSBm dW5jLT5vcCA9PSBJU19KU09OX0VYSVNUUyA/CisJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9S X0ZBTFNFIDoKKwkJCQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfTlVMTCk7CisKKwlyZXR1cm4g anNleHByOworfQorCisvKgorICogQXNzaWduIGRlZmF1bHQgSlNPTiByZXR1cm5pbmcgdHlw ZSBmcm9tIHRoZSBzcGVjaWZpZWQgZm9ybWF0IG9yIGZyb20KKyAqIHRoZSBjb250ZXh0IGl0 ZW0gdHlwZS4KKyAqLworc3RhdGljIHZvaWQKK2Fzc2lnbkRlZmF1bHRKc29uUmV0dXJuaW5n VHlwZShOb2RlICpjb250ZXh0X2l0ZW0sIEpzb25Gb3JtYXQgKmNvbnRleHRfZm9ybWF0LAor CQkJCQkJCSAgIEpzb25SZXR1cm5pbmcgKnJldCkKK3sKKwlib29sCQlpc19qc29uYjsKKwor CXJldC0+Zm9ybWF0ID0gY29weU9iamVjdChjb250ZXh0X2Zvcm1hdCk7CisKKwlpZiAocmV0 LT5mb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9ERUZBVUxUKQorCQlpc19qc29u YiA9IGV4cHJUeXBlKGNvbnRleHRfaXRlbSkgPT0gSlNPTkJPSUQ7CisJZWxzZQorCQlpc19q c29uYiA9IHJldC0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfSlNPTkI7CisK KwlyZXQtPnR5cGlkID0gaXNfanNvbmIgPyBKU09OQk9JRCA6IEpTT05PSUQ7CisJcmV0LT50 eXBtb2QgPSAtMTsKK30KKworLyoKKyAqIFRyeSB0byBjb2VyY2UgZXhwcmVzc2lvbiB0byB0 aGUgb3V0cHV0IHR5cGUgb3IKKyAqIHVzZSBqc29uX3BvcHVsYXRlX3R5cGUoKSBmb3IgY29t cG9zaXRlLCBhcnJheSBhbmQgZG9tYWluIHR5cGVzIG9yCisgKiB1c2UgY29lcmNpb24gdmlh IEkvTy4KKyAqLworc3RhdGljIEpzb25Db2VyY2lvbiAqCitjb2VyY2VKc29uRXhwcihQYXJz ZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIGNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVy bmluZykKK3sKKwljaGFyCQl0eXB0eXBlOworCUpzb25Db2VyY2lvbiAqY29lcmNpb24gPSBt YWtlTm9kZShKc29uQ29lcmNpb24pOworCisJY29lcmNpb24tPmV4cHIgPSBjb2VyY2VKc29u RnVuY0V4cHIocHN0YXRlLCBleHByLCByZXR1cm5pbmcsIGZhbHNlKTsKKworCWlmIChjb2Vy Y2lvbi0+ZXhwcikKKwl7CisJCWlmIChjb2VyY2lvbi0+ZXhwciA9PSBleHByKQorCQkJY29l cmNpb24tPmV4cHIgPSBOVUxMOworCisJCXJldHVybiBjb2VyY2lvbjsKKwl9CisKKwl0eXB0 eXBlID0gZ2V0X3R5cHR5cGUocmV0dXJuaW5nLT50eXBpZCk7CisKKwlpZiAocmV0dXJuaW5n LT50eXBpZCA9PSBSRUNPUkRPSUQgfHwKKwkJdHlwdHlwZSA9PSBUWVBUWVBFX0NPTVBPU0lU RSB8fAorCQl0eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOIHx8CisJCXR5cGVfaXNfYXJyYXko cmV0dXJuaW5nLT50eXBpZCkpCisJCWNvZXJjaW9uLT52aWFfcG9wdWxhdGUgPSB0cnVlOwor CWVsc2UKKwkJY29lcmNpb24tPnZpYV9pbyA9IHRydWU7CisKKwlyZXR1cm4gY29lcmNpb247 Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gYSBKU09OIG91dHB1dCBjbGF1c2Ugb2YgSlNPTl9W QUxVRSBhbmQgSlNPTl9RVUVSWS4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybUpzb25G dW5jRXhwck91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsCUpzb25GdW5jRXhwciAqZnVuYywK KwkJCQkJCQlKc29uRXhwciAqanNleHByKQoreworCU5vZGUJICAgKmV4cHIgPSBqc2V4cHIt PmZvcm1hdHRlZF9leHByOworCisJanNleHByLT5yZXR1cm5pbmcgPSB0cmFuc2Zvcm1Kc29u T3V0cHV0KHBzdGF0ZSwgZnVuYy0+b3V0cHV0LCBmYWxzZSk7CisKKwkvKiBKU09OX1ZBTFVF IHJldHVybnMgdGV4dCBieSBkZWZhdWx0ICovCisJaWYgKGZ1bmMtPm9wID09IElTX0pTT05f VkFMVUUgJiYgIU9pZElzVmFsaWQoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSkKKwl7CisJ CWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IFRFWFRPSUQ7CisJCWpzZXhwci0+cmV0dXJu aW5nLT50eXBtb2QgPSAtMTsKKwl9CisKKwlpZiAoT2lkSXNWYWxpZChqc2V4cHItPnJldHVy bmluZy0+dHlwaWQpKQorCXsKKwkJSnNvblJldHVybmluZyByZXQ7CisKKwkJaWYgKGZ1bmMt Pm9wID09IElTX0pTT05fVkFMVUUgJiYKKwkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCAh PSBKU09OT0lEICYmCisJCQlqc2V4cHItPnJldHVybmluZy0+dHlwaWQgIT0gSlNPTkJPSUQp CisJCXsKKwkJCS8qIEZvcmNlZCBjb2VyY2lvbiB2aWEgSS9PIGZvciBKU09OX1ZBTFVFIGZv ciBub24tSlNPTiB0eXBlcyAqLworCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24gPSBtYWtl Tm9kZShKc29uQ29lcmNpb24pOworCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24tPmV4cHIg PSBOVUxMOworCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24tPnZpYV9pbyA9IHRydWU7CisJ CQlyZXR1cm47CisJCX0KKworCQlhc3NpZ25EZWZhdWx0SnNvblJldHVybmluZ1R5cGUoanNl eHByLT5mb3JtYXR0ZWRfZXhwciwganNleHByLT5mb3JtYXQsICZyZXQpOworCisJCWlmIChy ZXQudHlwaWQgIT0ganNleHByLT5yZXR1cm5pbmctPnR5cGlkIHx8CisJCQlyZXQudHlwbW9k ICE9IGpzZXhwci0+cmV0dXJuaW5nLT50eXBtb2QpCisJCXsKKwkJCU5vZGUJICAgKnBsYWNl aG9sZGVyID0gbWFrZUNhc2VUZXN0RXhwcihleHByKTsKKworCQkJQXNzZXJ0KCgoQ2FzZVRl c3RFeHByICopIHBsYWNlaG9sZGVyKS0+dHlwZUlkID09IHJldC50eXBpZCk7CisJCQlBc3Nl cnQoKChDYXNlVGVzdEV4cHIgKikgcGxhY2Vob2xkZXIpLT50eXBlTW9kID09IHJldC50eXBt b2QpOworCisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25FeHByKHBz dGF0ZSwgcGxhY2Vob2xkZXIsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsK KwkJfQorCX0KKwllbHNlCisJCWFzc2lnbkRlZmF1bHRKc29uUmV0dXJuaW5nVHlwZShqc2V4 cHItPmZvcm1hdHRlZF9leHByLCBqc2V4cHItPmZvcm1hdCwKKwkJCQkJCQkJCSAgIGpzZXhw ci0+cmV0dXJuaW5nKTsKK30KKworLyoKKyAqIENvZXJjZSBhIGV4cHJlc3Npb24gaW4gSlNP TiBERUZBVUxUIGJlaGF2aW9yIHRvIHRoZSB0YXJnZXQgb3V0cHV0IHR5cGUuCisgKi8KK3N0 YXRpYyBOb2RlICoKK2NvZXJjZURlZmF1bHRKc29uRXhwcihQYXJzZVN0YXRlICpwc3RhdGUs IEpzb25FeHByICpqc2V4cHIsIE5vZGUgKmRlZmV4cHIpCit7CisJaW50CQkJbG9jYXRpb247 CisJT2lkCQkJZXhwcnR5cGU7CisKKwlpZiAoIWRlZmV4cHIpCisJCXJldHVybiBOVUxMOwor CisJZXhwcnR5cGUgPSBleHByVHlwZShkZWZleHByKTsKKwlsb2NhdGlvbiA9IGV4cHJMb2Nh dGlvbihkZWZleHByKTsKKworCWlmIChsb2NhdGlvbiA8IDApCisJCWxvY2F0aW9uID0ganNl eHByLT5sb2NhdGlvbjsKKworCWRlZmV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0 YXRlLAorCQkJCQkJCQkJZGVmZXhwciwKKwkJCQkJCQkJCWV4cHJ0eXBlLAorCQkJCQkJCQkJ anNleHByLT5yZXR1cm5pbmctPnR5cGlkLAorCQkJCQkJCQkJanNleHByLT5yZXR1cm5pbmct PnR5cG1vZCwKKwkJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJQ09FUkNF X0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCQlsb2NhdGlvbik7CisKKwlpZiAoIWRlZmV4cHIp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNF KSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCBERUZBVUxUIGV4cHJlc3Npb24gdHlwZSAl cyB0byAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwZSksCisJCQkJCQlmb3Jt YXRfdHlwZV9iZShqc2V4cHItPnJldHVybmluZy0+dHlwaWQpKSwKKwkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisKKwlyZXR1cm4gZGVmZXhwcjsKK30K KworLyoKKyAqIEluaXRpYWxpemUgU1FML0pTT04gaXRlbSBjb2VyY2lvbiBmcm9tIHRoZSBT UUwgdHlwZSAidHlwaWQiIHRvIHRoZSB0YXJnZXQKKyAqICJyZXR1cm5pbmciIHR5cGUuCisg Ki8KK3N0YXRpYyBKc29uQ29lcmNpb24gKgoraW5pdEpzb25JdGVtQ29lcmNpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBPaWQgdHlwaWQsCisJCQkJCSBjb25zdCBKc29uUmV0dXJuaW5nICpy ZXR1cm5pbmcpCit7CisJTm9kZQkgICAqZXhwcjsKKworCWlmICh0eXBpZCA9PSBVTktOT1dO T0lEKQorCXsKKwkJZXhwciA9IChOb2RlICopIG1ha2VOdWxsQ29uc3QoVU5LTk9XTk9JRCwg LTEsIEludmFsaWRPaWQpOworCX0KKwllbHNlCisJeworCQlDYXNlVGVzdEV4cHIgKnBsYWNl aG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKworCQlwbGFjZWhvbGRlci0+dHlw ZUlkID0gdHlwaWQ7CisJCXBsYWNlaG9sZGVyLT50eXBlTW9kID0gLTE7CisJCXBsYWNlaG9s ZGVyLT5jb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCisJCWV4cHIgPSAoTm9kZSAqKSBwbGFj ZWhvbGRlcjsKKwl9CisKKwlyZXR1cm4gY29lcmNlSnNvbkV4cHIocHN0YXRlLCBleHByLCBy ZXR1cm5pbmcpOworfQorCitzdGF0aWMgdm9pZAoraW5pdEpzb25JdGVtQ29lcmNpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkl0ZW1Db2VyY2lvbnMgKmNvZXJjaW9ucywKKwkJCQkJ ICBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIE9pZCBjb250ZXh0SXRlbVR5cGVJ ZCkKK3sKKwlzdHJ1Y3QKKwl7CisJCUpzb25Db2VyY2lvbiAqKmNvZXJjaW9uOworCQlPaWQJ CQl0eXBpZDsKKwl9CQkgICAqcCwKKwkJCQljb2VyY2lvblR5cGlkc1tdID0KKwkJCQl7CisJ CQkJCXsgJmNvZXJjaW9ucy0+bnVsbCwgVU5LTk9XTk9JRCB9LAorCQkJCQl7ICZjb2VyY2lv bnMtPnN0cmluZywgVEVYVE9JRCB9LAorCQkJCQl7ICZjb2VyY2lvbnMtPm51bWVyaWMsIE5V TUVSSUNPSUQgfSwKKwkJCQkJeyAmY29lcmNpb25zLT5ib29sZWFuLCBCT09MT0lEIH0sCisJ CQkJCXsgJmNvZXJjaW9ucy0+ZGF0ZSwgREFURU9JRCB9LAorCQkJCQl7ICZjb2VyY2lvbnMt PnRpbWUsIFRJTUVPSUQgfSwKKwkJCQkJeyAmY29lcmNpb25zLT50aW1ldHosIFRJTUVUWk9J RCB9LAorCQkJCQl7ICZjb2VyY2lvbnMtPnRpbWVzdGFtcCwgVElNRVNUQU1QT0lEIH0sCisJ CQkJCXsgJmNvZXJjaW9ucy0+dGltZXN0YW1wdHosIFRJTUVTVEFNUFRaT0lEIH0sCisJCQkJ CXsgJmNvZXJjaW9ucy0+Y29tcG9zaXRlLCBjb250ZXh0SXRlbVR5cGVJZCB9LAorCQkJCQl7 IE5VTEwsIEludmFsaWRPaWQgfQorCQkJCX07CisKKwlmb3IgKHAgPSBjb2VyY2lvblR5cGlk czsgcC0+Y29lcmNpb247IHArKykKKwkJKnAtPmNvZXJjaW9uID0gaW5pdEpzb25JdGVtQ29l cmNpb24ocHN0YXRlLCBwLT50eXBpZCwgcmV0dXJuaW5nKTsKK30KKworLyoKKyAqIFRyYW5z Zm9ybSBKU09OX1ZBTFVFLCBKU09OX1FVRVJZLCBKU09OX0VYSVNUUyBmdW5jdGlvbnMgaW50 byBhIEpzb25FeHByIG5vZGUuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25G dW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKK3sKKwlK c29uRXhwciAgICpqc2V4cHIgPSB0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihwc3RhdGUsIGZ1 bmMpOworCWNvbnN0IGNoYXIgKmZ1bmNfbmFtZSA9IE5VTEw7CisJTm9kZQkgICAqY29udGV4 dEl0ZW1FeHByID0ganNleHByLT5mb3JtYXR0ZWRfZXhwcjsKKworCXN3aXRjaCAoZnVuYy0+ b3ApCisJeworCQljYXNlIElTX0pTT05fVkFMVUU6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9W QUxVRSI7CisKKwkJCXRyYW5zZm9ybUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGZ1bmMs IGpzZXhwcik7CisKKwkJCWpzZXhwci0+cmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBl ID0gSlNfRk9STUFUX0RFRkFVTFQ7CisJCQlqc2V4cHItPnJldHVybmluZy0+Zm9ybWF0LT5l bmNvZGluZyA9IEpTX0VOQ19ERUZBVUxUOworCisJCQlqc2V4cHItPm9uX2VtcHR5LT5kZWZh dWx0X2V4cHIgPQorCQkJCWNvZXJjZURlZmF1bHRKc29uRXhwcihwc3RhdGUsIGpzZXhwciwK KwkJCQkJCQkJCSAganNleHByLT5vbl9lbXB0eS0+ZGVmYXVsdF9leHByKTsKKworCQkJanNl eHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByID0KKwkJCQljb2VyY2VEZWZhdWx0SnNvbkV4 cHIocHN0YXRlLCBqc2V4cHIsCisJCQkJCQkJCQkgIGpzZXhwci0+b25fZXJyb3ItPmRlZmF1 bHRfZXhwcik7CisKKwkJCWpzZXhwci0+Y29lcmNpb25zID0gbWFrZU5vZGUoSnNvbkl0ZW1D b2VyY2lvbnMpOworCQkJaW5pdEpzb25JdGVtQ29lcmNpb25zKHBzdGF0ZSwganNleHByLT5j b2VyY2lvbnMsIGpzZXhwci0+cmV0dXJuaW5nLAorCQkJCQkJCQkgIGV4cHJUeXBlKGNvbnRl eHRJdGVtRXhwcikpOworCisJCQlicmVhazsKKworCQljYXNlIElTX0pTT05fUVVFUlk6CisJ CQlmdW5jX25hbWUgPSAiSlNPTl9RVUVSWSI7CisKKwkJCXRyYW5zZm9ybUpzb25GdW5jRXhw ck91dHB1dChwc3RhdGUsIGZ1bmMsIGpzZXhwcik7CisKKwkJCWpzZXhwci0+b25fZW1wdHkt PmRlZmF1bHRfZXhwciA9CisJCQkJY29lcmNlRGVmYXVsdEpzb25FeHByKHBzdGF0ZSwganNl eHByLAorCQkJCQkJCQkJICBqc2V4cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIpOworCisJ CQlqc2V4cHItPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIgPQorCQkJCWNvZXJjZURlZmF1bHRK c29uRXhwcihwc3RhdGUsIGpzZXhwciwKKwkJCQkJCQkJCSAganNleHByLT5vbl9lcnJvci0+ ZGVmYXVsdF9leHByKTsKKworCQkJanNleHByLT53cmFwcGVyID0gZnVuYy0+d3JhcHBlcjsK KwkJCWpzZXhwci0+b21pdF9xdW90ZXMgPSBmdW5jLT5vbWl0X3F1b3RlczsKKworCQkJYnJl YWs7CisKKwkJY2FzZSBJU19KU09OX0VYSVNUUzoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX0VY SVNUUyI7CisKKwkJCWpzZXhwci0+cmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbk91dHB1dChw c3RhdGUsIGZ1bmMtPm91dHB1dCwgZmFsc2UpOworCisJCQlqc2V4cHItPnJldHVybmluZy0+ Zm9ybWF0LT5mb3JtYXRfdHlwZSA9IEpTX0ZPUk1BVF9ERUZBVUxUOworCQkJanNleHByLT5y ZXR1cm5pbmctPmZvcm1hdC0+ZW5jb2RpbmcgPSBKU19FTkNfREVGQVVMVDsKKworCQkJaWYg KCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCkpCisJCQl7CisJCQkJanNl eHByLT5yZXR1cm5pbmctPnR5cGlkID0gQk9PTE9JRDsKKwkJCQlqc2V4cHItPnJldHVybmlu Zy0+dHlwbW9kID0gLTE7CisJCQl9CisJCQllbHNlIGlmIChqc2V4cHItPnJldHVybmluZy0+ dHlwaWQgIT0gQk9PTE9JRCkKKwkJCXsKKwkJCQlDYXNlVGVzdEV4cHIgKnBsYWNlaG9sZGVy ID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKwkJCQlpbnQJCQlsb2NhdGlvbiA9IGV4cHJM b2NhdGlvbigoTm9kZSAqKSBqc2V4cHIpOworCisJCQkJcGxhY2Vob2xkZXItPnR5cGVJZCA9 IEJPT0xPSUQ7CisJCQkJcGxhY2Vob2xkZXItPnR5cGVNb2QgPSAtMTsKKwkJCQlwbGFjZWhv bGRlci0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQkJCWpzZXhwci0+cmVzdWx0X2Nv ZXJjaW9uID0gbWFrZU5vZGUoSnNvbkNvZXJjaW9uKTsKKwkJCQlqc2V4cHItPnJlc3VsdF9j b2VyY2lvbi0+ZXhwciA9CisJCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIChO b2RlICopIHBsYWNlaG9sZGVyLCBCT09MT0lELAorCQkJCQkJCQkJCSAganNleHByLT5yZXR1 cm5pbmctPnR5cGlkLAorCQkJCQkJCQkJCSAganNleHByLT5yZXR1cm5pbmctPnR5cG1vZCwK KwkJCQkJCQkJCQkgIENPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCSAgQ09FUkNFX0lN UExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJICBsb2NhdGlvbik7CisKKwkJCQlpZiAoIWpzZXhw ci0+cmVzdWx0X2NvZXJjaW9uLT5leHByKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJCQkJCQkJIGVycm1zZygiY2Fu bm90IGNhc3QgdHlwZSAlcyB0byAlcyIsCisJCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShCT09M T0lEKSwKKwkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGpzZXhwci0+cmV0dXJuaW5nLT50eXBp ZCkpLAorCQkJCQkJCSBwYXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRlLCBsb2Nh dGlvbiwgKE5vZGUgKikganNleHByKSkpOworCisJCQkJaWYgKGpzZXhwci0+cmVzdWx0X2Nv ZXJjaW9uLT5leHByID09IChOb2RlICopIHBsYWNlaG9sZGVyKQorCQkJCQlqc2V4cHItPnJl c3VsdF9jb2VyY2lvbi0+ZXhwciA9IE5VTEw7CisJCQl9CisJCQlicmVhazsKKwl9CisKKwlp ZiAoZXhwclR5cGUoY29udGV4dEl0ZW1FeHByKSAhPSBKU09OQk9JRCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJIGVycm1zZygiJXMoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciBqc29uIHR5cGUi LCBmdW5jX25hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmdW5jLT5s b2NhdGlvbikpKTsKKworCXJldHVybiAoTm9kZSAqKSBqc2V4cHI7Cit9CisKK3N0YXRpYyBK c29uUmV0dXJuaW5nICoKK3RyYW5zZm9ybUpzb25Db25zdHJ1Y3RvclJldChQYXJzZVN0YXRl ICpwc3RhdGUsIEpzb25PdXRwdXQgKm91dHB1dCwgY29uc3QgY2hhciAqZm5hbWUpCit7CisJ SnNvblJldHVybmluZyAqcmV0dXJuaW5nOworCisJaWYgKG91dHB1dCkKKwl7CisJCXJldHVy bmluZyA9IHRyYW5zZm9ybUpzb25PdXRwdXQocHN0YXRlLCBvdXRwdXQsIGZhbHNlKTsKKwor CQlBc3NlcnQoT2lkSXNWYWxpZChyZXR1cm5pbmctPnR5cGlkKSk7CisKKwkJaWYgKHJldHVy bmluZy0+dHlwaWQgIT0gSlNPTk9JRCAmJiByZXR1cm5pbmctPnR5cGlkICE9IEpTT05CT0lE KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9N SVNNQVRDSCksCisJCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgUkVUVVJOSU5HIHR5cGUgJXMg aW4gJXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHJldHVybmluZy0+dHlwaWQpLCBmbmFt ZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdXRwdXQtPnR5cGVOYW1l LT5sb2NhdGlvbikpKTsKKwl9CisJZWxzZQorCXsKKwkJT2lkCQkJdGFyZ2V0dHlwZSA9IEpT T05PSUQ7CisJCUpzb25Gb3JtYXRUeXBlIGZvcm1hdCA9IEpTX0ZPUk1BVF9KU09OOworCisJ CXJldHVybmluZyA9IG1ha2VOb2RlKEpzb25SZXR1cm5pbmcpOworCQlyZXR1cm5pbmctPmZv cm1hdCA9IG1ha2VKc29uRm9ybWF0KGZvcm1hdCwgSlNfRU5DX0RFRkFVTFQsIC0xKTsKKwkJ cmV0dXJuaW5nLT50eXBpZCA9IHRhcmdldHR5cGU7CisJCXJldHVybmluZy0+dHlwbW9kID0g LTE7CisJfQorCisJcmV0dXJuIHJldHVybmluZzsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBh IEpTT04oKSBleHByZXNzaW9uLgorICovCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29u UGFyc2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqanNleHByKQor eworCUpzb25SZXR1cm5pbmcgKnJldHVybmluZyA9IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3Rv clJldChwc3RhdGUsIGpzZXhwci0+b3V0cHV0LAorCQkJCQkJCQkJCQkJCSJKU09OKCkiKTsK KwlOb2RlCSAgICphcmc7CisKKwlpZiAoanNleHByLT51bmlxdWVfa2V5cykKKwl7CisJCS8q CisJCSAqIENvZXJjZSBzdHJpbmcgYXJndW1lbnQgdG8gdGV4dCBhbmQgdGhlbiB0byBqc29u W2JdIGluIHRoZSBleGVjdXRvcgorCQkgKiBub2RlIHdpdGgga2V5IHVuaXF1ZW5lc3MgY2hl Y2suCisJCSAqLworCQlKc29uVmFsdWVFeHByICpqdmUgPSBqc2V4cHItPmV4cHI7CisJCU9p ZAkJCWFyZ190eXBlOworCisJCWFyZyA9IHRyYW5zZm9ybUpzb25QYXJzZUFyZyhwc3RhdGUs IChOb2RlICopIGp2ZS0+cmF3X2V4cHIsIGp2ZS0+Zm9ybWF0LAorCQkJCQkJCQkJJmFyZ190 eXBlKTsKKworCQlpZiAoYXJnX3R5cGUgIT0gVEVYVE9JRCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJy bXNnKCJjYW5ub3QgdXNlIG5vbi1zdHJpbmcgdHlwZXMgd2l0aCBXSVRIIFVOSVFVRSBLRVlT IGNsYXVzZSIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwganNleHByLT5s b2NhdGlvbikpKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogQ29lcmNlIGFyZ3VtZW50 IHRvIHRhcmdldCB0eXBlIHVzaW5nIENBU1QgZm9yIGNvbXBhdGliaWx0eSB3aXRoIFBHCisJ CSAqIGZ1bmN0aW9uLWxpa2UgQ0FTVHMuCisJCSAqLworCQlhcmcgPSB0cmFuc2Zvcm1Kc29u VmFsdWVFeHByRXh0KHBzdGF0ZSwganNleHByLT5leHByLCBKU19GT1JNQVRfSlNPTiwKKwkJ CQkJCQkJCQlmYWxzZSwgcmV0dXJuaW5nLT50eXBpZCk7CisJfQorCisJcmV0dXJuIG1ha2VK c29uQ29uc3RydWN0b3JFeHByKHBzdGF0ZSwgSlNDVE9SX0pTT05fUEFSU0UsIGxpc3RfbWFr ZTEoYXJnKSwgTlVMTCwKKwkJCQkJCQlyZXR1cm5pbmcsIGpzZXhwci0+dW5pcXVlX2tleXMs IGZhbHNlLAorCQkJCQkJCWpzZXhwci0+bG9jYXRpb24pOworfQorCisvKgorICogVHJhbnNm b3JtIGEgSlNPTl9TQ0FMQVIoKSBleHByZXNzaW9uLgorICovCitzdGF0aWMgTm9kZSAqCit0 cmFuc2Zvcm1Kc29uU2NhbGFyRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25TY2FsYXJF eHByICpqc2V4cHIpCit7CisJTm9kZQkgICAqYXJnID0gdHJhbnNmb3JtRXhwclJlY3Vyc2Uo cHN0YXRlLCAoTm9kZSAqKSBqc2V4cHItPmV4cHIpOworCUpzb25SZXR1cm5pbmcgKnJldHVy bmluZyA9IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3RvclJldChwc3RhdGUsIGpzZXhwci0+b3V0 cHV0LAorCQkJCQkJCQkJCQkJCSJKU09OX1NDQUxBUigpIik7CisKKwlpZiAoZXhwclR5cGUo YXJnKSA9PSBVTktOT1dOT0lEKQorCQlhcmcgPSBjb2VyY2VfdG9fc3BlY2lmaWNfdHlwZShw c3RhdGUsIGFyZywgVEVYVE9JRCwgIkpTT05fU0NBTEFSIik7CisKKwlyZXR1cm4gbWFrZUpz b25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBKU0NUT1JfSlNPTl9TQ0FMQVIsIGxpc3RfbWFr ZTEoYXJnKSwgTlVMTCwKKwkJCQkJCQlyZXR1cm5pbmcsIGZhbHNlLCBmYWxzZSwganNleHBy LT5sb2NhdGlvbik7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gYSBKU09OX1NFUklBTElaRSgp IGV4cHJlc3Npb24uCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25TZXJpYWxp emVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpCit7 CisJTm9kZQkgICAqYXJnID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsIGV4cHIt PmV4cHIpOworCUpzb25SZXR1cm5pbmcgKnJldHVybmluZzsKKworCWlmIChleHByLT5vdXRw dXQpCisJCXJldHVybmluZyA9IHRyYW5zZm9ybUpzb25PdXRwdXQocHN0YXRlLCBleHByLT5v dXRwdXQsIHRydWUpOworCWVsc2UKKwl7CisJCS8qIFJFVFVSTklORyBURVhUIEZPUk1BVCBK U09OIGlzIGJ5IGRlZmF1bHQgKi8KKwkJcmV0dXJuaW5nID0gbWFrZU5vZGUoSnNvblJldHVy bmluZyk7CisJCXJldHVybmluZy0+Zm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFU X0pTT04sIEpTX0VOQ19ERUZBVUxULCAtMSk7CisJCXJldHVybmluZy0+dHlwaWQgPSBURVhU T0lEOworCQlyZXR1cm5pbmctPnR5cG1vZCA9IC0xOworCX0KKworCXJldHVybiBtYWtlSnNv bkNvbnN0cnVjdG9yRXhwcihwc3RhdGUsIEpTQ1RPUl9KU09OX1NFUklBTElaRSwgbGlzdF9t YWtlMShhcmcpLAorCQkJCQkJCU5VTEwsIHJldHVybmluZywgZmFsc2UsIGZhbHNlLCBleHBy LT5sb2NhdGlvbik7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggMDU5 ZWViOWU5NC4uODI5YzBmOTQ5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpA QCAtMTk1Nyw2ICsxOTU3LDQzIEBAIEZpZ3VyZUNvbG5hbWVJbnRlcm5hbChOb2RlICpub2Rl LCBjaGFyICoqbmFtZSkKIAkJY2FzZSBUX1htbFNlcmlhbGl6ZToKIAkJCSpuYW1lID0gInht bHNlcmlhbGl6ZSI7CiAJCQlyZXR1cm4gMjsKKwkJY2FzZSBUX0pzb25QYXJzZUV4cHI6CisJ CQkqbmFtZSA9ICJqc29uIjsKKwkJCXJldHVybiAyOworCQljYXNlIFRfSnNvblNjYWxhckV4 cHI6CisJCQkqbmFtZSA9ICJqc29uX3NjYWxhciI7CisJCQlyZXR1cm4gMjsKKwkJY2FzZSBU X0pzb25TZXJpYWxpemVFeHByOgorCQkJKm5hbWUgPSAianNvbl9zZXJpYWxpemUiOworCQkJ cmV0dXJuIDI7CisJCWNhc2UgVF9Kc29uT2JqZWN0Q29uc3RydWN0b3I6CisJCQkqbmFtZSA9 ICJqc29uX29iamVjdCI7CisJCQlyZXR1cm4gMjsKKwkJY2FzZSBUX0pzb25BcnJheUNvbnN0 cnVjdG9yOgorCQljYXNlIFRfSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvcjoKKwkJCSpuYW1l ID0gImpzb25fYXJyYXkiOworCQkJcmV0dXJuIDI7CisJCWNhc2UgVF9Kc29uT2JqZWN0QWdn OgorCQkJKm5hbWUgPSAianNvbl9vYmplY3RhZ2ciOworCQkJcmV0dXJuIDI7CisJCWNhc2Ug VF9Kc29uQXJyYXlBZ2c6CisJCQkqbmFtZSA9ICJqc29uX2FycmF5YWdnIjsKKwkJCXJldHVy biAyOworCQljYXNlIFRfSnNvbkZ1bmNFeHByOgorCQkJLyogbWFrZSBTUUwvSlNPTiBmdW5j dGlvbnMgYWN0IGxpa2UgYSByZWd1bGFyIGZ1bmN0aW9uICovCisJCQlzd2l0Y2ggKCgoSnNv bkZ1bmNFeHByICopIG5vZGUpLT5vcCkKKwkJCXsKKwkJCQljYXNlIElTX0pTT05fUVVFUlk6 CisJCQkJCSpuYW1lID0gImpzb25fcXVlcnkiOworCQkJCQlyZXR1cm4gMjsKKwkJCQljYXNl IElTX0pTT05fVkFMVUU6CisJCQkJCSpuYW1lID0gImpzb25fdmFsdWUiOworCQkJCQlyZXR1 cm4gMjsKKwkJCQljYXNlIElTX0pTT05fRVhJU1RTOgorCQkJCQkqbmFtZSA9ICJqc29uX2V4 aXN0cyI7CisJCQkJCXJldHVybiAyOworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ CQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMKaW5kZXggNTAyMjdjYzA5OC4uZWVlMGEy OWMwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZXIuYwpAQCAtMTUwLDYgKzE1MCw5IEBAIGJhc2VfeXls ZXgoWVlTVFlQRSAqbHZhbHAsIFlZTFRZUEUgKmxsb2NwLCBjb3JlX3l5c2Nhbl90IHl5c2Nh bm5lcikKIAkJY2FzZSBVU0NPTlNUOgogCQkJY3VyX3Rva2VuX2xlbmd0aCA9IHN0cmxlbih5 eWV4dHJhLT5jb3JlX3l5X2V4dHJhLnNjYW5idWYgKyAqbGxvY3ApOwogCQkJYnJlYWs7CisJ CWNhc2UgV0lUSE9VVDoKKwkJCWN1cl90b2tlbl9sZW5ndGggPSA3OworCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQlyZXR1cm4gY3VyX3Rva2VuOwogCX0KQEAgLTIyMSw2ICsyMjQsMTkg QEAgYmFzZV95eWxleChZWVNUWVBFICpsdmFscCwgWVlMVFlQRSAqbGxvY3AsIGNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKQogCQkJCWNhc2UgT1JESU5BTElUWToKIAkJCQkJY3VyX3Rva2Vu ID0gV0lUSF9MQTsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBVTklRVUU6CisJCQkJCWN1cl90 b2tlbiA9IFdJVEhfTEFfVU5JUVVFOworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOwor CisJCWNhc2UgV0lUSE9VVDoKKwkJCS8qIFJlcGxhY2UgV0lUSE9VVCBieSBXSVRIT1VUX0xB IGlmIGl0J3MgZm9sbG93ZWQgYnkgVElNRSAqLworCQkJc3dpdGNoIChuZXh0X3Rva2VuKQor CQkJeworCQkJCWNhc2UgVElNRToKKwkJCQkJY3VyX3Rva2VuID0gV0lUSE9VVF9MQTsKKwkJ CQkJYnJlYWs7CiAJCQl9CiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2Zvcm1hdF90eXBlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0 X3R5cGUuYwppbmRleCAyOTE4ZmRiZmI2Li4wNjBmZDdlMTgzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvZm9ybWF0X3R5cGUuYwpAQCAtMjk0LDYgKzI5NCwxMCBAQCBmb3JtYXRfdHlwZV9l eHRlbmRlZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsIGJpdHMxNiBmbGFncykKIAkJ CWVsc2UKIAkJCQlidWYgPSBwc3RyZHVwKCJjaGFyYWN0ZXIgdmFyeWluZyIpOwogCQkJYnJl YWs7CisKKwkJY2FzZSBKU09OT0lEOgorCQkJYnVmID0gcHN0cmR1cCgianNvbiIpOworCQkJ YnJlYWs7CiAJfQogCiAJaWYgKGJ1ZiA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXR0aW5nLmMKaW5kZXggZDRjMmU3YjA2OS4uZmIzOTViNmY3OCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvZm9ybWF0dGluZy5jCkBAIC0xMDE3LDExICsxMDE3LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgTlVNUHJvYwogCQkJICAgKkxfY3VycmVuY3lfc3ltYm9sOwogfSBOVU1Qcm9jOwogCi0v KiBSZXR1cm4gZmxhZ3MgZm9yIERDSF9mcm9tX2NoYXIoKSAqLwotI2RlZmluZSBEQ0hfREFU RUQJMHgwMQotI2RlZmluZSBEQ0hfVElNRUQJMHgwMgotI2RlZmluZSBEQ0hfWk9ORUQJMHgw NAotCiAvKiAtLS0tLS0tLS0tCiAgKiBGdW5jdGlvbnMKICAqIC0tLS0tLS0tLS0KQEAgLTY2 NjYsMyArNjY2MSw0MyBAQCBmbG9hdDhfdG9fY2hhcihQR19GVU5DVElPTl9BUkdTKQogCU5V TV9UT0NIQVJfZmluaXNoOwogCVBHX1JFVFVSTl9URVhUX1AocmVzdWx0KTsKIH0KKworaW50 CitkYXRldGltZV9mb3JtYXRfZmxhZ3MoY29uc3QgY2hhciAqZm10X3N0ciwgYm9vbCAqaGF2 ZV9lcnJvcikKK3sKKwlib29sCQlpbmNhY2hlOworCWludAkJCWZtdF9sZW4gPSBzdHJsZW4o Zm10X3N0cik7CisJaW50CQkJcmVzdWx0OworCUZvcm1hdE5vZGUgKmZvcm1hdDsKKworCWlm IChmbXRfbGVuID4gRENIX0NBQ0hFX1NJWkUpCisJeworCQkvKgorCQkgKiBBbGxvY2F0ZSBu ZXcgbWVtb3J5IGlmIGZvcm1hdCBwaWN0dXJlIGlzIGJpZ2dlciB0aGFuIHN0YXRpYyBjYWNo ZQorCQkgKiBhbmQgZG8gbm90IHVzZSBjYWNoZSAoY2FsbCBwYXJzZXIgYWx3YXlzKQorCQkg Ki8KKwkJaW5jYWNoZSA9IGZhbHNlOworCisJCWZvcm1hdCA9IChGb3JtYXROb2RlICopIHBh bGxvYygoZm10X2xlbiArIDEpICogc2l6ZW9mKEZvcm1hdE5vZGUpKTsKKworCQlwYXJzZV9m b3JtYXQoZm9ybWF0LCBmbXRfc3RyLCBEQ0hfa2V5d29yZHMsCisJCQkJCSBEQ0hfc3VmZiwg RENIX2luZGV4LCBEQ0hfRkxBRywgTlVMTCk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAq IFVzZSBjYWNoZSBidWZmZXJzCisJCSAqLworCQlEQ0hDYWNoZUVudHJ5ICplbnQgPSBEQ0hf Y2FjaGVfZmV0Y2goZm10X3N0ciwgZmFsc2UpOworCisJCWluY2FjaGUgPSB0cnVlOworCQlm b3JtYXQgPSBlbnQtPmZvcm1hdDsKKwl9CisKKwlyZXN1bHQgPSBEQ0hfZGF0ZXRpbWVfdHlw ZShmb3JtYXQsIGhhdmVfZXJyb3IpOworCisJaWYgKCFpbmNhY2hlKQorCQlwZnJlZShmb3Jt YXQpOworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDc4 NzlmMzQyZTYuLjQ5Mjc5NmViODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYwpAQCAtMTMsNyAr MTMsMTAgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nl c3MvaGFzaC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRl ICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKQEAgLTI3LDIwICszMCw0MSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKLXR5cGVkZWYgZW51bQkJ CQkJLyogdHlwZSBjYXRlZ29yaWVzIGZvciBkYXR1bV90b19qc29uICovCisvKiBDb21tb24g Y29udGV4dCBmb3Iga2V5IHVuaXF1ZW5lc3MgY2hlY2sgKi8KK3R5cGVkZWYgc3RydWN0IEhU QUIgKkpzb25VbmlxdWVDaGVja1N0YXRlOwkvKiBoYXNoIHRhYmxlIGZvciBrZXkgbmFtZXMg Ki8KKworLyogSGFzaCBlbnRyeSBmb3IgSnNvblVuaXF1ZUNoZWNrU3RhdGUgKi8KK3R5cGVk ZWYgc3RydWN0IEpzb25VbmlxdWVIYXNoRW50cnkKK3sKKwljb25zdCBjaGFyICprZXk7CisJ aW50CQkJa2V5X2xlbjsKKwlpbnQJCQlvYmplY3RfaWQ7Cit9IEpzb25VbmlxdWVIYXNoRW50 cnk7CisKKy8qIENvbnRleHQgZm9yIGtleSB1bmlxdWVuZXNzIGNoZWNrIGluIGJ1aWxkZXIg ZnVuY3Rpb25zICovCit0eXBlZGVmIHN0cnVjdCBKc29uVW5pcXVlQnVpbGRlclN0YXRlCit7 CisJSnNvblVuaXF1ZUNoZWNrU3RhdGUgY2hlY2s7CS8qIHVuaXF1ZSBjaGVjayAqLworCVN0 cmluZ0luZm9EYXRhIHNraXBwZWRfa2V5czsJLyogc2tpcHBlZCBrZXlzIHdpdGggTlVMTCB2 YWx1ZXMgKi8KKwlNZW1vcnlDb250ZXh0IG1jeHQ7CQkJCS8qIGNvbnRleHQgZm9yIHNhdmlu ZyBza2lwcGVkIGtleXMgKi8KK30gSnNvblVuaXF1ZUJ1aWxkZXJTdGF0ZTsKKworLyogRWxl bWVudCBvZiBvYmplY3Qgc3RhY2sgZm9yIGtleSB1bmlxdWVuZXNzIGNoZWNrIGR1cmluZyBq c29uIHBhcnNpbmcgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25VbmlxdWVTdGFja0VudHJ5CiB7 Ci0JSlNPTlRZUEVfTlVMTCwJCQkJLyogbnVsbCwgc28gd2UgZGlkbid0IGJvdGhlciB0byBp ZGVudGlmeSAqLwotCUpTT05UWVBFX0JPT0wsCQkJCS8qIGJvb2xlYW4gKGJ1aWx0LWluIHR5 cGVzIG9ubHkpICovCi0JSlNPTlRZUEVfTlVNRVJJQywJCQkvKiBudW1lcmljIChkaXR0bykg Ki8KLQlKU09OVFlQRV9EQVRFLAkJCQkvKiB3ZSB1c2Ugc3BlY2lhbCBmb3JtYXR0aW5nIGZv ciBkYXRldGltZXMgKi8KLQlKU09OVFlQRV9USU1FU1RBTVAsCi0JSlNPTlRZUEVfVElNRVNU QU1QVFosCi0JSlNPTlRZUEVfSlNPTiwJCQkJLyogSlNPTiBpdHNlbGYgKGFuZCBKU09OQikg Ki8KLQlKU09OVFlQRV9BUlJBWSwJCQkJLyogYXJyYXkgKi8KLQlKU09OVFlQRV9DT01QT1NJ VEUsCQkJLyogY29tcG9zaXRlICovCi0JSlNPTlRZUEVfQ0FTVCwJCQkJLyogc29tZXRoaW5n IHdpdGggYW4gZXhwbGljaXQgY2FzdCB0byBKU09OICovCi0JSlNPTlRZUEVfT1RIRVIJCQkJ LyogYWxsIGVsc2UgKi8KLX0gSnNvblR5cGVDYXRlZ29yeTsKKwlzdHJ1Y3QgSnNvblVuaXF1 ZVN0YWNrRW50cnkgKnBhcmVudDsKKwlpbnQJCQlvYmplY3RfaWQ7Cit9IEpzb25VbmlxdWVT dGFja0VudHJ5OworCisvKiBTdGF0ZSBmb3Iga2V5IHVuaXF1ZW5lc3MgY2hlY2sgZHVyaW5n IGpzb24gcGFyc2luZyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblVuaXF1ZVBhcnNpbmdTdGF0 ZQoreworCUpzb25MZXhDb250ZXh0ICpsZXg7CisJSnNvblVuaXF1ZUNoZWNrU3RhdGUgY2hl Y2s7CisJSnNvblVuaXF1ZVN0YWNrRW50cnkgKnN0YWNrOworCWludAkJCWlkX2NvdW50ZXI7 CisJYm9vbAkJdW5pcXVlOworfSBKc29uVW5pcXVlUGFyc2luZ1N0YXRlOwogCiB0eXBlZGVm IHN0cnVjdCBKc29uQWdnU3RhdGUKIHsKQEAgLTQ5LDYgKzczLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgSnNvbkFnZ1N0YXRlCiAJT2lkCQkJa2V5X291dHB1dF9mdW5jOwogCUpzb25UeXBlQ2F0 ZWdvcnkgdmFsX2NhdGVnb3J5OwogCU9pZAkJCXZhbF9vdXRwdXRfZnVuYzsKKwlKc29uVW5p cXVlQnVpbGRlclN0YXRlIHVuaXF1ZV9jaGVjazsKIH0gSnNvbkFnZ1N0YXRlOwogCiBzdGF0 aWMgdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8g cmVzdWx0LApAQCAtNTksOSArODQsNiBAQCBzdGF0aWMgdm9pZCBhcnJheV9kaW1fdG9fanNv bihTdHJpbmdJbmZvIHJlc3VsdCwgaW50IGRpbSwgaW50IG5kaW1zLCBpbnQgKmRpbXMsCiAJ CQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5X3RvX2pz b25faW50ZXJuYWwoRGF0dW0gYXJyYXksIFN0cmluZ0luZm8gcmVzdWx0LAogCQkJCQkJCQkg ICBib29sIHVzZV9saW5lX2ZlZWRzKTsKLXN0YXRpYyB2b2lkIGpzb25fY2F0ZWdvcml6ZV90 eXBlKE9pZCB0eXBvaWQsCi0JCQkJCQkJCSBKc29uVHlwZUNhdGVnb3J5ICp0Y2F0ZWdvcnks Ci0JCQkJCQkJCSBPaWQgKm91dGZ1bmNvaWQpOwogc3RhdGljIHZvaWQgZGF0dW1fdG9fanNv bihEYXR1bSB2YWwsIGJvb2wgaXNfbnVsbCwgU3RyaW5nSW5mbyByZXN1bHQsCiAJCQkJCQkg IEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0ZnVuY29pZCwKIAkJCQkJCSAg Ym9vbCBrZXlfc2NhbGFyKTsKQEAgLTE0MCw3ICsxNjIsNyBAQCBqc29uX3JlY3YoUEdfRlVO Q1RJT05fQVJHUykKICAqIG91dHB1dCBmdW5jdGlvbiBPSUQuICBJZiB0aGUgcmV0dXJuZWQg Y2F0ZWdvcnkgaXMgSlNPTlRZUEVfQ0FTVCwgd2UKICAqIHJldHVybiB0aGUgT0lEIG9mIHRo ZSB0eXBlLT5KU09OIGNhc3QgZnVuY3Rpb24gaW5zdGVhZC4KICAqLwotc3RhdGljIHZvaWQK K3ZvaWQKIGpzb25fY2F0ZWdvcml6ZV90eXBlKE9pZCB0eXBvaWQsCiAJCQkJCSBKc29uVHlw ZUNhdGVnb3J5ICp0Y2F0ZWdvcnksCiAJCQkJCSBPaWQgKm91dGZ1bmNvaWQpCkBAIC03MjIs NiArNzQ0LDQ4IEBAIHJvd190b19qc29uX3ByZXR0eShQR19GVU5DVElPTl9BUkdTKQogCVBH X1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ZGF0YSwg cmVzdWx0LT5sZW4pKTsKIH0KIAorRGF0dW0KK3RvX2pzb25fd29ya2VyKERhdHVtIHZhbCwg SnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5jb2lkKQoreworCVN0cmlu Z0luZm8JcmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKKworCWRhdHVtX3RvX2pzb24odmFs LCBmYWxzZSwgcmVzdWx0LCB0Y2F0ZWdvcnksIG91dGZ1bmNvaWQsIGZhbHNlKTsKKworCXJl dHVybiBQb2ludGVyR2V0RGF0dW0oY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ ZGF0YSwgcmVzdWx0LT5sZW4pKTsKK30KKworYm9vbAordG9fanNvbl9pc19pbW11dGFibGUo T2lkIHR5cG9pZCkKK3sKKwlKc29uVHlwZUNhdGVnb3J5IHRjYXRlZ29yeTsKKwlPaWQJCQlv dXRmdW5jb2lkOworCisJanNvbl9jYXRlZ29yaXplX3R5cGUodHlwb2lkLCAmdGNhdGVnb3J5 LCAmb3V0ZnVuY29pZCk7CisKKwlzd2l0Y2ggKHRjYXRlZ29yeSkKKwl7CisJCWNhc2UgSlNP TlRZUEVfQk9PTDoKKwkJY2FzZSBKU09OVFlQRV9KU09OOgorCQkJcmV0dXJuIHRydWU7CisK KwkJY2FzZSBKU09OVFlQRV9EQVRFOgorCQljYXNlIEpTT05UWVBFX1RJTUVTVEFNUDoKKwkJ Y2FzZSBKU09OVFlQRV9USU1FU1RBTVBUWjoKKwkJCXJldHVybiBmYWxzZTsKKworCQljYXNl IEpTT05UWVBFX0FSUkFZOgorCQkJcmV0dXJuIGZhbHNlOwkvKiBUT0RPIHJlY3Vyc2UgaW50 byBlbGVtZW50cyAqLworCisJCWNhc2UgSlNPTlRZUEVfQ09NUE9TSVRFOgorCQkJcmV0dXJu IGZhbHNlOwkvKiBUT0RPIHJlY3Vyc2UgaW50byBmaWVsZHMgKi8KKworCQljYXNlIEpTT05U WVBFX05VTUVSSUM6CisJCWNhc2UgSlNPTlRZUEVfQ0FTVDoKKwkJZGVmYXVsdDoKKwkJCXJl dHVybiBmdW5jX3ZvbGF0aWxlKG91dGZ1bmNvaWQpID09IFBST1ZPTEFUSUxFX0lNTVVUQUJM RTsKKwl9Cit9CisKIC8qCiAgKiBTUUwgZnVuY3Rpb24gdG9fanNvbihhbnl2YWx1ZSkKICAq LwpAQCAtNzMwLDcgKzc5NCw2IEBAIHRvX2pzb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlE YXR1bQkJdmFsID0gUEdfR0VUQVJHX0RBVFVNKDApOwogCU9pZAkJCXZhbF90eXBlID0gZ2V0 X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywgMCk7Ci0JU3RyaW5nSW5mbwlyZXN1 bHQ7CiAJSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnk7CiAJT2lkCQkJb3V0ZnVuY29pZDsK IApAQCAtNzQyLDExICs4MDUsNyBAQCB0b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJanNv bl9jYXRlZ29yaXplX3R5cGUodmFsX3R5cGUsCiAJCQkJCQkgJnRjYXRlZ29yeSwgJm91dGZ1 bmNvaWQpOwogCi0JcmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKLQotCWRhdHVtX3RvX2pz b24odmFsLCBmYWxzZSwgcmVzdWx0LCB0Y2F0ZWdvcnksIG91dGZ1bmNvaWQsIGZhbHNlKTsK LQotCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ ZGF0YSwgcmVzdWx0LT5sZW4pKTsKKwlQR19SRVRVUk5fREFUVU0odG9fanNvbl93b3JrZXIo dmFsLCB0Y2F0ZWdvcnksIG91dGZ1bmNvaWQpKTsKIH0KIAogLyoKQEAgLTc1NCw4ICs4MTMs OCBAQCB0b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKgogICogYWdncmVnYXRlIGlucHV0 IGNvbHVtbiBhcyBhIGpzb24gYXJyYXkgdmFsdWUuCiAgKi8KLURhdHVtCi1qc29uX2FnZ190 cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCitzdGF0aWMgRGF0dW0KK2pzb25fYWdnX3RyYW5z Zm5fd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGFic2VudF9vbl9udWxs KQogewogCU1lbW9yeUNvbnRleHQgYWdnY29udGV4dCwKIAkJCQlvbGRjb250ZXh0OwpAQCAt Nzk1LDkgKzg1NCwxNCBAQCBqc29uX2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ ZWxzZQogCXsKIAkJc3RhdGUgPSAoSnNvbkFnZ1N0YXRlICopIFBHX0dFVEFSR19QT0lOVEVS KDApOwotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0YXRlLT5zdHIsICIsICIpOwogCX0K IAorCWlmIChhYnNlbnRfb25fbnVsbCAmJiBQR19BUkdJU05VTEwoMSkpCisJCVBHX1JFVFVS Tl9QT0lOVEVSKHN0YXRlKTsKKworCWlmIChzdGF0ZS0+c3RyLT5sZW4gPiAxKQorCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKHN0YXRlLT5zdHIsICIsICIpOworCiAJLyogZmFzdCBwYXRo IGZvciBOVUxMcyAqLwogCWlmIChQR19BUkdJU05VTEwoMSkpCiAJewpAQCAtODA5LDcgKzg3 Myw3IEBAIGpzb25fYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAl2YWwgPSBQR19H RVRBUkdfREFUVU0oMSk7CiAKIAkvKiBhZGQgc29tZSB3aGl0ZXNwYWNlIGlmIHN0cnVjdHVy ZWQgdHlwZSBhbmQgbm90IGZpcnN0IGl0ZW0gKi8KLQlpZiAoIVBHX0FSR0lTTlVMTCgwKSAm JgorCWlmICghUEdfQVJHSVNOVUxMKDApICYmIHN0YXRlLT5zdHItPmxlbiA+IDEgJiYKIAkJ KHN0YXRlLT52YWxfY2F0ZWdvcnkgPT0gSlNPTlRZUEVfQVJSQVkgfHwKIAkJIHN0YXRlLT52 YWxfY2F0ZWdvcnkgPT0gSlNPTlRZUEVfQ09NUE9TSVRFKSkKIAl7CkBAIC04MjcsNiArODkx LDI1IEBAIGpzb25fYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5f UE9JTlRFUihzdGF0ZSk7CiB9CiAKKworLyoKKyAqIGpzb25fYWdnIGFnZ3JlZ2F0ZSBmdW5j dGlvbgorICovCitEYXR1bQoranNvbl9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQor eworCXJldHVybiBqc29uX2FnZ190cmFuc2ZuX3dvcmtlcihmY2luZm8sIGZhbHNlKTsKK30K KworLyoKKyAqIGpzb25fYWdnX3N0cmljdCBhZ2dyZWdhdGUgZnVuY3Rpb24KKyAqLworRGF0 dW0KK2pzb25fYWdnX3N0cmljdF90cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0 dXJuIGpzb25fYWdnX3RyYW5zZm5fd29ya2VyKGZjaW5mbywgdHJ1ZSk7Cit9CisKIC8qCiAg KiBqc29uX2FnZyBmaW5hbCBmdW5jdGlvbgogICovCkBAIC04NTAsMTggKzkzMywxMjIgQEAg anNvbl9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhUX1Ao Y2F0ZW5hdGVfc3RyaW5naW5mb19zdHJpbmcoc3RhdGUtPnN0ciwgIl0iKSk7CiB9CiAKKy8q IEZ1bmN0aW9ucyBpbXBsZW1lbnRpbmcgaGFzaCB0YWJsZSBmb3Iga2V5IHVuaXF1ZW5lc3Mg Y2hlY2sgKi8KK3N0YXRpYyB1aW50MzIKK2pzb25fdW5pcXVlX2hhc2goY29uc3Qgdm9pZCAq a2V5LCBTaXplIGtleXNpemUpCit7CisJY29uc3QgSnNvblVuaXF1ZUhhc2hFbnRyeSAqZW50 cnkgPSAoSnNvblVuaXF1ZUhhc2hFbnRyeSAqKSBrZXk7CisJdWludDMyCQloYXNoID0gIGhh c2hfYnl0ZXNfdWludDMyKGVudHJ5LT5vYmplY3RfaWQpOworCisJaGFzaCBePSBoYXNoX2J5 dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGVudHJ5LT5rZXksIGVudHJ5LT5rZXlfbGVu KTsKKworCXJldHVybiBEYXR1bUdldFVJbnQzMihoYXNoKTsKK30KKworc3RhdGljIGludAor anNvbl91bmlxdWVfaGFzaF9tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICpr ZXkyLCBTaXplIGtleXNpemUpCit7CisJY29uc3QgSnNvblVuaXF1ZUhhc2hFbnRyeSAqZW50 cnkxID0gKGNvbnN0IEpzb25VbmlxdWVIYXNoRW50cnkgKikga2V5MTsKKwljb25zdCBKc29u VW5pcXVlSGFzaEVudHJ5ICplbnRyeTIgPSAoY29uc3QgSnNvblVuaXF1ZUhhc2hFbnRyeSAq KSBrZXkyOworCisJaWYgKGVudHJ5MS0+b2JqZWN0X2lkICE9IGVudHJ5Mi0+b2JqZWN0X2lk KQorCQlyZXR1cm4gZW50cnkxLT5vYmplY3RfaWQgPiBlbnRyeTItPm9iamVjdF9pZCA/IDEg OiAtMTsKKworCWlmIChlbnRyeTEtPmtleV9sZW4gIT0gZW50cnkyLT5rZXlfbGVuKQorCQly ZXR1cm4gZW50cnkxLT5rZXlfbGVuID4gZW50cnkyLT5rZXlfbGVuID8gMSA6IC0xOworCisJ cmV0dXJuIHN0cm5jbXAoZW50cnkxLT5rZXksIGVudHJ5Mi0+a2V5LCBlbnRyeTEtPmtleV9s ZW4pOworfQorCisvKiBGdW5jdGlvbnMgaW1wbGVtZW50aW5nIG9iamVjdCBrZXkgdW5pcXVl bmVzcyBjaGVjayAqLworc3RhdGljIHZvaWQKK2pzb25fdW5pcXVlX2NoZWNrX2luaXQoSnNv blVuaXF1ZUNoZWNrU3RhdGUgKmN4dCkKK3sKKwlIQVNIQ1RMCQljdGw7CisKKwltZW1zZXQo JmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCWN0bC5rZXlzaXplID0gc2l6ZW9mKEpzb25Vbmlx dWVIYXNoRW50cnkpOworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hF bnRyeSk7CisJY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwljdGwuaGFzaCA9 IGpzb25fdW5pcXVlX2hhc2g7CisJY3RsLm1hdGNoID0ganNvbl91bmlxdWVfaGFzaF9tYXRj aDsKKworCSpjeHQgPSBoYXNoX2NyZWF0ZSgianNvbiBvYmplY3QgaGFzaHRhYmxlIiwKKwkJ CQkJICAgMzIsCisJCQkJCSAgICZjdGwsCisJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQ09O VEVYVCB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworfQorCitzdGF0aWMgdm9p ZAoranNvbl91bmlxdWVfY2hlY2tfZnJlZShKc29uVW5pcXVlQ2hlY2tTdGF0ZSAqY3h0KQor eworCWhhc2hfZGVzdHJveSgqY3h0KTsKK30KKworc3RhdGljIGJvb2wKK2pzb25fdW5pcXVl X2NoZWNrX2tleShKc29uVW5pcXVlQ2hlY2tTdGF0ZSAqY3h0LCBjb25zdCBjaGFyICprZXks IGludCBvYmplY3RfaWQpCit7CisJSnNvblVuaXF1ZUhhc2hFbnRyeSBlbnRyeTsKKwlib29s CQlmb3VuZDsKKworCWVudHJ5LmtleSA9IGtleTsKKwllbnRyeS5rZXlfbGVuID0gc3RybGVu KGtleSk7CisJZW50cnkub2JqZWN0X2lkID0gb2JqZWN0X2lkOworCisJKHZvaWQpIGhhc2hf c2VhcmNoKCpjeHQsICZlbnRyeSwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKworCXJldHVybiAh Zm91bmQ7Cit9CisKK3N0YXRpYyB2b2lkCitqc29uX3VuaXF1ZV9idWlsZGVyX2luaXQoSnNv blVuaXF1ZUJ1aWxkZXJTdGF0ZSAqY3h0KQoreworCWpzb25fdW5pcXVlX2NoZWNrX2luaXQo JmN4dC0+Y2hlY2spOworCWN4dC0+bWN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCWN4 dC0+c2tpcHBlZF9rZXlzLmRhdGEgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAoranNvbl91 bmlxdWVfYnVpbGRlcl9mcmVlKEpzb25VbmlxdWVCdWlsZGVyU3RhdGUgKmN4dCkKK3sKKwlq c29uX3VuaXF1ZV9jaGVja19mcmVlKCZjeHQtPmNoZWNrKTsKKworCWlmIChjeHQtPnNraXBw ZWRfa2V5cy5kYXRhKQorCQlwZnJlZShjeHQtPnNraXBwZWRfa2V5cy5kYXRhKTsKK30KKwor LyogT24tZGVtYW5kIGluaXRpYWxpemF0aW9uIG9mIHNraXBwZWRfa2V5cyBTdHJpbmdJbmZv IHN0cnVjdHVyZSAqLworc3RhdGljIFN0cmluZ0luZm8KK2pzb25fdW5pcXVlX2J1aWxkZXJf Z2V0X3NraXBwZWRfa2V5cyhKc29uVW5pcXVlQnVpbGRlclN0YXRlICpjeHQpCit7CisJU3Ry aW5nSW5mbwlvdXQgPSAmY3h0LT5za2lwcGVkX2tleXM7CisKKwlpZiAoIW91dC0+ZGF0YSkK Kwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN4 dC0+bWN4dCk7CisJCWluaXRTdHJpbmdJbmZvKG91dCk7CisJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOworCX0KKworCXJldHVybiBvdXQ7Cit9CisKIC8qCiAgKiBqc29uX29i amVjdF9hZ2cgdHJhbnNpdGlvbiBmdW5jdGlvbi4KICAqCiAgKiBhZ2dyZWdhdGUgdHdvIGlu cHV0IGNvbHVtbnMgYXMgYSBzaW5nbGUganNvbiBvYmplY3QgdmFsdWUuCiAgKi8KLURhdHVt Ci1qc29uX29iamVjdF9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQorc3RhdGljIERh dHVtCitqc29uX29iamVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8sCisJCQkJCQkJICAgYm9vbCBhYnNlbnRfb25fbnVsbCwgYm9vbCB1bmlxdWVfa2V5 cykKIHsKIAlNZW1vcnlDb250ZXh0IGFnZ2NvbnRleHQsCiAJCQkJb2xkY29udGV4dDsKIAlK c29uQWdnU3RhdGUgKnN0YXRlOworCVN0cmluZ0luZm8Jb3V0OwogCURhdHVtCQlhcmc7CisJ Ym9vbAkJc2tpcDsKKwlpbnQJCQlrZXlfb2Zmc2V0OwogCiAJaWYgKCFBZ2dDaGVja0NhbGxD b250ZXh0KGZjaW5mbywgJmFnZ2NvbnRleHQpKQogCXsKQEAgLTg4Miw2ICsxMDY5LDEwIEBA IGpzb25fb2JqZWN0X2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW9sZGNvbnRl eHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYWdnY29udGV4dCk7CiAJCXN0YXRlID0gKEpz b25BZ2dTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEpzb25BZ2dTdGF0ZSkpOwogCQlzdGF0ZS0+ c3RyID0gbWFrZVN0cmluZ0luZm8oKTsKKwkJaWYgKHVuaXF1ZV9rZXlzKQorCQkJanNvbl91 bmlxdWVfYnVpbGRlcl9pbml0KCZzdGF0ZS0+dW5pcXVlX2NoZWNrKTsKKwkJZWxzZQorCQkJ bWVtc2V0KCZzdGF0ZS0+dW5pcXVlX2NoZWNrLCAwLCBzaXplb2Yoc3RhdGUtPnVuaXF1ZV9j aGVjaykpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJYXJn X3R5cGUgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAxKTsKQEAgLTkw OSw3ICsxMTAwLDYgQEAganNvbl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJH UykKIAllbHNlCiAJewogCQlzdGF0ZSA9IChKc29uQWdnU3RhdGUgKikgUEdfR0VUQVJHX1BP SU5URVIoMCk7Ci0JCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RhdGUtPnN0ciwgIiwgIik7 CiAJfQogCiAJLyoKQEAgLTkyNSwxMSArMTExNSw0OSBAQCBqc29uX29iamVjdF9hZ2dfdHJh bnNmbihQR19GVU5DVElPTl9BUkdTKQogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coImZpZWxkIG5hbWUgbXVzdCBub3QgYmUg bnVsbCIpKSk7CiAKKwkvKiBTa2lwIG51bGwgdmFsdWVzIGlmIGFic2VudF9vbl9udWxsICov CisJc2tpcCA9IGFic2VudF9vbl9udWxsICYmIFBHX0FSR0lTTlVMTCgyKTsKKworCWlmIChz a2lwKQorCXsKKwkJLyogSWYga2V5IHVuaXF1ZW5lc3MgY2hlY2sgaXMgbmVlZGVkIHdlIG11 c3Qgc2F2ZSBza2lwcGVkIGtleXMgKi8KKwkJaWYgKCF1bmlxdWVfa2V5cykKKwkJCVBHX1JF VFVSTl9QT0lOVEVSKHN0YXRlKTsKKworCQlvdXQgPSBqc29uX3VuaXF1ZV9idWlsZGVyX2dl dF9za2lwcGVkX2tleXMoJnN0YXRlLT51bmlxdWVfY2hlY2spOworCX0KKwllbHNlCisJewor CQlvdXQgPSBzdGF0ZS0+c3RyOworCisJCS8qCisJCSAqIEFwcGVuZCBjb21tYSBkZWxpbWl0 ZXIgb25seSBpZiB3ZSBoYXZlIGFscmVhZHkgb3V0cHV0dGVkIHNvbWUgZmllbGRzCisJCSAq IGFmdGVyIHRoZSBpbml0aWFsIHN0cmluZyAieyAiLgorCQkgKi8KKwkJaWYgKG91dC0+bGVu ID4gMikKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcob3V0LCAiLCAiKTsKKwl9CisKIAlh cmcgPSBQR19HRVRBUkdfREFUVU0oMSk7CiAKLQlkYXR1bV90b19qc29uKGFyZywgZmFsc2Us IHN0YXRlLT5zdHIsIHN0YXRlLT5rZXlfY2F0ZWdvcnksCisJa2V5X29mZnNldCA9IG91dC0+ bGVuOworCisJZGF0dW1fdG9fanNvbihhcmcsIGZhbHNlLCBvdXQsIHN0YXRlLT5rZXlfY2F0 ZWdvcnksCiAJCQkJICBzdGF0ZS0+a2V5X291dHB1dF9mdW5jLCB0cnVlKTsKIAorCWlmICh1 bmlxdWVfa2V5cykKKwl7CisJCWNvbnN0IGNoYXIgKmtleSA9ICZvdXQtPmRhdGFba2V5X29m ZnNldF07CisKKwkJaWYgKCFqc29uX3VuaXF1ZV9jaGVja19rZXkoJnN0YXRlLT51bmlxdWVf Y2hlY2suY2hlY2ssIGtleSwgMCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RVUExJQ0FURV9KU09OX09CSkVDVF9LRVlfVkFMVUUpLAorCQkJCQkgZXJy bXNnKCJkdXBsaWNhdGUgSlNPTiBrZXkgJXMiLCBrZXkpKSk7CisKKwkJaWYgKHNraXApCisJ CQlQR19SRVRVUk5fUE9JTlRFUihzdGF0ZSk7CisJfQorCiAJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhzdGF0ZS0+c3RyLCAiIDogIik7CiAKIAlpZiAoUEdfQVJHSVNOVUxMKDIpKQpAQCAt OTQzLDYgKzExNzEsNDIgQEAganNvbl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05f QVJHUykKIAlQR19SRVRVUk5fUE9JTlRFUihzdGF0ZSk7CiB9CiAKKy8qCisgKiBqc29uX29i amVjdF9hZ2cgYWdncmVnYXRlIGZ1bmN0aW9uCisgKi8KK0RhdHVtCitqc29uX29iamVjdF9h Z2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBqc29uX29iamVjdF9h Z2dfdHJhbnNmbl93b3JrZXIoZmNpbmZvLCBmYWxzZSwgZmFsc2UpOworfQorCisvKgorICog anNvbl9vYmplY3RfYWdnX3N0cmljdCBhZ2dyZWdhdGUgZnVuY3Rpb24KKyAqLworRGF0dW0K K2pzb25fb2JqZWN0X2FnZ19zdHJpY3RfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQorewor CXJldHVybiBqc29uX29iamVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoZmNpbmZvLCB0cnVlLCBm YWxzZSk7Cit9CisKKy8qCisgKiBqc29uX29iamVjdF9hZ2dfdW5pcXVlIGFnZ3JlZ2F0ZSBm dW5jdGlvbgorICovCitEYXR1bQoranNvbl9vYmplY3RfYWdnX3VuaXF1ZV90cmFuc2ZuKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIGpzb25fb2JqZWN0X2FnZ190cmFuc2ZuX3dv cmtlcihmY2luZm8sIGZhbHNlLCB0cnVlKTsKK30KKworLyoKKyAqIGpzb25fb2JqZWN0X2Fn Z191bmlxdWVfc3RyaWN0IGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICovCitEYXR1bQoranNvbl9v YmplY3RfYWdnX3VuaXF1ZV9zdHJpY3RfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQorewor CXJldHVybiBqc29uX29iamVjdF9hZ2dfdHJhbnNmbl93b3JrZXIoZmNpbmZvLCB0cnVlLCB0 cnVlKTsKK30KKwogLyoKICAqIGpzb25fb2JqZWN0X2FnZyBmaW5hbCBmdW5jdGlvbi4KICAq LwpAQCAtOTYwLDYgKzEyMjQsOCBAQCBqc29uX29iamVjdF9hZ2dfZmluYWxmbihQR19GVU5D VElPTl9BUkdTKQogCWlmIChzdGF0ZSA9PSBOVUxMKQogCQlQR19SRVRVUk5fTlVMTCgpOwog CisJanNvbl91bmlxdWVfYnVpbGRlcl9mcmVlKCZzdGF0ZS0+dW5pcXVlX2NoZWNrKTsKKwog CS8qIEVsc2UgcmV0dXJuIHN0YXRlIHdpdGggYXBwcm9wcmlhdGUgb2JqZWN0IHRlcm1pbmF0 b3IgYWRkZWQgKi8KIAlQR19SRVRVUk5fVEVYVF9QKGNhdGVuYXRlX3N0cmluZ2luZm9fc3Ry aW5nKHN0YXRlLT5zdHIsICIgfSIpKTsKIH0KQEAgLTk4NCwyNSArMTI1MCwxNCBAQCBjYXRl bmF0ZV9zdHJpbmdpbmZvX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZmZlciwgY29uc3QgY2hhciAq YWRkb24pCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotLyoKLSAqIFNRTCBmdW5jdGlvbiBqc29u X2J1aWxkX29iamVjdCh2YXJpYWRpYyAiYW55IikKLSAqLwogRGF0dW0KLWpzb25fYnVpbGRf b2JqZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCitqc29uX2J1aWxkX29iamVjdF93b3JrZXIoaW50 IG5hcmdzLCBEYXR1bSAqYXJncywgYm9vbCAqbnVsbHMsIE9pZCAqdHlwZXMsCisJCQkJCQkg Ym9vbCBhYnNlbnRfb25fbnVsbCwgYm9vbCB1bmlxdWVfa2V5cykKIHsKLQlpbnQJCQluYXJn czsKIAlpbnQJCQlpOwogCWNvbnN0IGNoYXIgKnNlcCA9ICIiOwogCVN0cmluZ0luZm8JcmVz dWx0OwotCURhdHVtCSAgICphcmdzOwotCWJvb2wJICAgKm51bGxzOwotCU9pZAkJICAgKnR5 cGVzOwotCi0JLyogZmV0Y2ggYXJndW1lbnQgdmFsdWVzIHRvIGJ1aWxkIHRoZSBvYmplY3Qg Ki8KLQluYXJncyA9IGV4dHJhY3RfdmFyaWFkaWNfYXJncyhmY2luZm8sIDAsIGZhbHNlLCAm YXJncywgJnR5cGVzLCAmbnVsbHMpOwotCi0JaWYgKG5hcmdzIDwgMCkKLQkJUEdfUkVUVVJO X05VTEwoKTsKKwlKc29uVW5pcXVlQnVpbGRlclN0YXRlIHVuaXF1ZV9jaGVjazsKIAogCWlm IChuYXJncyAlIDIgIT0gMCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTEwMTYsMTkgKzEyNzEs NTggQEAganNvbl9idWlsZF9vYmplY3QoUEdfRlVOQ1RJT05fQVJHUykKIAogCWFwcGVuZFN0 cmluZ0luZm9DaGFyKHJlc3VsdCwgJ3snKTsKIAorCWlmICh1bmlxdWVfa2V5cykKKwkJanNv bl91bmlxdWVfYnVpbGRlcl9pbml0KCZ1bmlxdWVfY2hlY2spOworCiAJZm9yIChpID0gMDsg aSA8IG5hcmdzOyBpICs9IDIpCiAJewotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHJlc3Vs dCwgc2VwKTsKLQkJc2VwID0gIiwgIjsKKwkJU3RyaW5nSW5mbwlvdXQ7CisJCWJvb2wJCXNr aXA7CisJCWludAkJCWtleV9vZmZzZXQ7CisKKwkJLyogU2tpcCBudWxsIHZhbHVlcyBpZiBh YnNlbnRfb25fbnVsbCAqLworCQlza2lwID0gYWJzZW50X29uX251bGwgJiYgbnVsbHNbaSAr IDFdOworCisJCWlmIChza2lwKQorCQl7CisJCQkvKiBJZiBrZXkgdW5pcXVlbmVzcyBjaGVj ayBpcyBuZWVkZWQgd2UgbXVzdCBzYXZlIHNraXBwZWQga2V5cyAqLworCQkJaWYgKCF1bmlx dWVfa2V5cykKKwkJCQljb250aW51ZTsKKworCQkJb3V0ID0ganNvbl91bmlxdWVfYnVpbGRl cl9nZXRfc2tpcHBlZF9rZXlzKCZ1bmlxdWVfY2hlY2spOworCQl9CisJCWVsc2UKKwkJewor CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhyZXN1bHQsIHNlcCk7CisJCQlzZXAgPSAiLCAi OworCQkJb3V0ID0gcmVzdWx0OworCQl9CiAKIAkJLyogcHJvY2VzcyBrZXkgKi8KIAkJaWYg KG51bGxzW2ldKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJCSBlcnJtc2coImFyZ3VtZW50ICVkIGNh bm5vdCBiZSBudWxsIiwgaSArIDEpLAorCQkJCQkgZXJybXNnKCJhcmd1bWVudCAlZCBjYW5u b3QgYmUgbnVsbCIsICBpICsgMSksCiAJCQkJCSBlcnJoaW50KCJPYmplY3Qga2V5cyBzaG91 bGQgYmUgdGV4dC4iKSkpOwogCi0JCWFkZF9qc29uKGFyZ3NbaV0sIGZhbHNlLCByZXN1bHQs IHR5cGVzW2ldLCB0cnVlKTsKKwkJLyogc2F2ZSBrZXkgb2Zmc2V0IGJlZm9yZSBrZXkgYXBw ZW5kaW5nICovCisJCWtleV9vZmZzZXQgPSBvdXQtPmxlbjsKKworCQlhZGRfanNvbihhcmdz W2ldLCBmYWxzZSwgb3V0LCB0eXBlc1tpXSwgdHJ1ZSk7CisKKwkJaWYgKHVuaXF1ZV9rZXlz KQorCQl7CisJCQkvKiBjaGVjayBrZXkgdW5pcXVlbmVzcyBhZnRlciBrZXkgYXBwZW5kaW5n ICovCisJCQljb25zdCBjaGFyICprZXkgPSAmb3V0LT5kYXRhW2tleV9vZmZzZXRdOworCisJ CQlpZiAoIWpzb25fdW5pcXVlX2NoZWNrX2tleSgmdW5pcXVlX2NoZWNrLmNoZWNrLCBrZXks IDApKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJ Q0FURV9KU09OX09CSkVDVF9LRVlfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiZHVwbGljYXRl IEpTT04ga2V5ICVzIiwga2V5KSkpOworCisJCQlpZiAoc2tpcCkKKwkJCQljb250aW51ZTsK KwkJfQogCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcocmVzdWx0LCAiIDogIik7CiAKQEAg LTEwMzgsNyArMTMzMiwyOSBAQCBqc29uX2J1aWxkX29iamVjdChQR19GVU5DVElPTl9BUkdT KQogCiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIocmVzdWx0LCAnfScpOwogCi0JUEdfUkVUVVJO X1RFWFRfUChjc3RyaW5nX3RvX3RleHRfd2l0aF9sZW4ocmVzdWx0LT5kYXRhLCByZXN1bHQt PmxlbikpOworCWlmICh1bmlxdWVfa2V5cykKKwkJanNvbl91bmlxdWVfYnVpbGRlcl9mcmVl KCZ1bmlxdWVfY2hlY2spOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShjc3RyaW5nX3Rv X3RleHRfd2l0aF9sZW4ocmVzdWx0LT5kYXRhLCByZXN1bHQtPmxlbikpOworfQorCisvKgor ICogU1FMIGZ1bmN0aW9uIGpzb25fYnVpbGRfb2JqZWN0KHZhcmlhZGljICJhbnkiKQorICov CitEYXR1bQoranNvbl9idWlsZF9vYmplY3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlEYXR1 bQkgICAqYXJnczsKKwlib29sCSAgICpudWxsczsKKwlPaWQJCSAgICp0eXBlczsKKwkvKiBi dWlsZCBhcmd1bWVudCB2YWx1ZXMgdG8gYnVpbGQgdGhlIG9iamVjdCAqLworCWludAkJCW5h cmdzID0gZXh0cmFjdF92YXJpYWRpY19hcmdzKGZjaW5mbywgMCwgdHJ1ZSwKKwkJCQkJCQkJ CQkJICAmYXJncywgJnR5cGVzLCAmbnVsbHMpOworCisJaWYgKG5hcmdzIDwgMCkKKwkJUEdf UkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9EQVRVTShqc29uX2J1aWxkX29iamVjdF93 b3JrZXIobmFyZ3MsIGFyZ3MsIG51bGxzLCB0eXBlcywgZmFsc2UsIGZhbHNlKSk7CiB9CiAK IC8qCkBAIC0xMDUwLDI1ICsxMzY2LDEzIEBAIGpzb25fYnVpbGRfb2JqZWN0X25vYXJncyhQ R19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0X3dp dGhfbGVuKCJ7fSIsIDIpKTsKIH0KIAotLyoKLSAqIFNRTCBmdW5jdGlvbiBqc29uX2J1aWxk X2FycmF5KHZhcmlhZGljICJhbnkiKQotICovCiBEYXR1bQotanNvbl9idWlsZF9hcnJheShQ R19GVU5DVElPTl9BUkdTKQoranNvbl9idWlsZF9hcnJheV93b3JrZXIoaW50IG5hcmdzLCBE YXR1bSAqYXJncywgYm9vbCAqbnVsbHMsIE9pZCAqdHlwZXMsCisJCQkJCQlib29sIGFic2Vu dF9vbl9udWxsKQogewotCWludAkJCW5hcmdzOwogCWludAkJCWk7CiAJY29uc3QgY2hhciAq c2VwID0gIiI7CiAJU3RyaW5nSW5mbwlyZXN1bHQ7Ci0JRGF0dW0JICAgKmFyZ3M7Ci0JYm9v bAkgICAqbnVsbHM7Ci0JT2lkCQkgICAqdHlwZXM7Ci0KLQkvKiBmZXRjaCBhcmd1bWVudCB2 YWx1ZXMgdG8gYnVpbGQgdGhlIGFycmF5ICovCi0JbmFyZ3MgPSBleHRyYWN0X3ZhcmlhZGlj X2FyZ3MoZmNpbmZvLCAwLCBmYWxzZSwgJmFyZ3MsICZ0eXBlcywgJm51bGxzKTsKLQotCWlm IChuYXJncyA8IDApCi0JCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlyZXN1bHQgPSBtYWtlU3Ry aW5nSW5mbygpOwogCkBAIC0xMDc2LDYgKzEzODAsOSBAQCBqc29uX2J1aWxkX2FycmF5KFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKIAl7CisJ CWlmIChhYnNlbnRfb25fbnVsbCAmJiBudWxsc1tpXSkKKwkJCWNvbnRpbnVlOworCiAJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcocmVzdWx0LCBzZXApOwogCQlzZXAgPSAiLCAiOwogCQlh ZGRfanNvbihhcmdzW2ldLCBudWxsc1tpXSwgcmVzdWx0LCB0eXBlc1tpXSwgZmFsc2UpOwpA QCAtMTA4Myw3ICsxMzkwLDI2IEBAIGpzb25fYnVpbGRfYXJyYXkoUEdfRlVOQ1RJT05fQVJH UykKIAogCWFwcGVuZFN0cmluZ0luZm9DaGFyKHJlc3VsdCwgJ10nKTsKIAotCVBHX1JFVFVS Tl9URVhUX1AoY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHJlc3VsdC0+ZGF0YSwgcmVzdWx0 LT5sZW4pKTsKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dF93aXRo X2xlbihyZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuKSk7Cit9CisKKy8qCisgKiBTUUwgZnVu Y3Rpb24ganNvbl9idWlsZF9hcnJheSh2YXJpYWRpYyAiYW55IikKKyAqLworRGF0dW0KK2pz b25fYnVpbGRfYXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlEYXR1bQkgICAqYXJnczsK Kwlib29sCSAgICpudWxsczsKKwlPaWQJCSAgICp0eXBlczsKKwkvKiBidWlsZCBhcmd1bWVu dCB2YWx1ZXMgdG8gYnVpbGQgdGhlIG9iamVjdCAqLworCWludAkJCW5hcmdzID0gZXh0cmFj dF92YXJpYWRpY19hcmdzKGZjaW5mbywgMCwgdHJ1ZSwKKwkJCQkJCQkJCQkJICAmYXJncywg JnR5cGVzLCAmbnVsbHMpOworCisJaWYgKG5hcmdzIDwgMCkKKwkJUEdfUkVUVVJOX05VTEwo KTsKKworCVBHX1JFVFVSTl9EQVRVTShqc29uX2J1aWxkX2FycmF5X3dvcmtlcihuYXJncywg YXJncywgbnVsbHMsIHR5cGVzLCBmYWxzZSkpOwogfQogCiAvKgpAQCAtMTMxNyw2ICsxNjQz LDEwNiBAQCBlc2NhcGVfanNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyKQog CWFwcGVuZFN0cmluZ0luZm9DaGFyTWFjcm8oYnVmLCAnIicpOwogfQogCisvKiBTZW1hbnRp YyBhY3Rpb25zIGZvciBrZXkgdW5pcXVlbmVzcyBjaGVjayAqLworc3RhdGljIHZvaWQKK2pz b25fdW5pcXVlX29iamVjdF9zdGFydCh2b2lkICpfc3RhdGUpCit7CisJSnNvblVuaXF1ZVBh cnNpbmdTdGF0ZSAqc3RhdGUgPSBfc3RhdGU7CisJSnNvblVuaXF1ZVN0YWNrRW50cnkgKmVu dHJ5OworCisJaWYgKCFzdGF0ZS0+dW5pcXVlKQorCQlyZXR1cm47CisKKwkvKiBwdXNoIG9i amVjdCBlbnRyeSB0byBzdGFjayAqLworCWVudHJ5ID0gcGFsbG9jKHNpemVvZigqZW50cnkp KTsKKwllbnRyeS0+b2JqZWN0X2lkID0gc3RhdGUtPmlkX2NvdW50ZXIrKzsKKwllbnRyeS0+ cGFyZW50ID0gc3RhdGUtPnN0YWNrOworCXN0YXRlLT5zdGFjayA9IGVudHJ5OworfQorCitz dGF0aWMgdm9pZAoranNvbl91bmlxdWVfb2JqZWN0X2VuZCh2b2lkICpfc3RhdGUpCit7CisJ SnNvblVuaXF1ZVBhcnNpbmdTdGF0ZSAqc3RhdGUgPSBfc3RhdGU7CisJSnNvblVuaXF1ZVN0 YWNrRW50cnkgKmVudHJ5OworCisJaWYgKCFzdGF0ZS0+dW5pcXVlKQorCQlyZXR1cm47CisK KwllbnRyeSA9IHN0YXRlLT5zdGFjazsKKwlzdGF0ZS0+c3RhY2sgPSBlbnRyeS0+cGFyZW50 OwkvKiBwb3Agb2JqZWN0IGZyb20gc3RhY2sgKi8KKwlwZnJlZShlbnRyeSk7Cit9CisKK3N0 YXRpYyB2b2lkCitqc29uX3VuaXF1ZV9vYmplY3RfZmllbGRfc3RhcnQodm9pZCAqX3N0YXRl LCBjaGFyICpmaWVsZCwgYm9vbCBpc251bGwpCit7CisJSnNvblVuaXF1ZVBhcnNpbmdTdGF0 ZSAqc3RhdGUgPSBfc3RhdGU7CisJSnNvblVuaXF1ZVN0YWNrRW50cnkgKmVudHJ5OworCisJ aWYgKCFzdGF0ZS0+dW5pcXVlKQorCQlyZXR1cm47CisKKwkvKiBmaW5kIGtleSBjb2xsaXNp b24gaW4gdGhlIGN1cnJlbnQgb2JqZWN0ICovCisJaWYgKGpzb25fdW5pcXVlX2NoZWNrX2tl eSgmc3RhdGUtPmNoZWNrLCBmaWVsZCwgc3RhdGUtPnN0YWNrLT5vYmplY3RfaWQpKQorCQly ZXR1cm47CisKKwlzdGF0ZS0+dW5pcXVlID0gZmFsc2U7CisKKwkvKiBwb3AgYWxsIG9iamVj dHMgZW50cmllcyAqLworCXdoaWxlICgoZW50cnkgPSBzdGF0ZS0+c3RhY2spKQorCXsKKwkJ c3RhdGUtPnN0YWNrID0gZW50cnktPnBhcmVudDsKKwkJcGZyZWUoZW50cnkpOworCX0KK30K KworLyogVmFsaWRhdGUgSlNPTiB0ZXh0IGFuZCBhZGRpdGlvbmFsbHkgY2hlY2sga2V5IHVu aXF1ZW5lc3MgKi8KK2Jvb2wKK2pzb25fdmFsaWRhdGUodGV4dCAqanNvbiwgYm9vbCBjaGVj a191bmlxdWVfa2V5cywgYm9vbCB0aHJvd19lcnJvcikKK3sKKwlKc29uTGV4Q29udGV4dCAq bGV4ID0gbWFrZUpzb25MZXhDb250ZXh0KGpzb24sIGNoZWNrX3VuaXF1ZV9rZXlzKTsKKwlK c29uU2VtQWN0aW9uIHVuaXF1ZVNlbUFjdGlvbiA9IHswfTsKKwlKc29uVW5pcXVlUGFyc2lu Z1N0YXRlIHN0YXRlOworCUpzb25QYXJzZUVycm9yVHlwZSByZXN1bHQ7CisKKwlpZiAoY2hl Y2tfdW5pcXVlX2tleXMpCisJeworCQlzdGF0ZS5sZXggPSBsZXg7CisJCXN0YXRlLnN0YWNr ID0gTlVMTDsKKwkJc3RhdGUuaWRfY291bnRlciA9IDA7CisJCXN0YXRlLnVuaXF1ZSA9IHRy dWU7CisJCWpzb25fdW5pcXVlX2NoZWNrX2luaXQoJnN0YXRlLmNoZWNrKTsKKworCQl1bmlx dWVTZW1BY3Rpb24uc2Vtc3RhdGUgPSAmc3RhdGU7CisJCXVuaXF1ZVNlbUFjdGlvbi5vYmpl Y3Rfc3RhcnQgPSBqc29uX3VuaXF1ZV9vYmplY3Rfc3RhcnQ7CisJCXVuaXF1ZVNlbUFjdGlv bi5vYmplY3RfZmllbGRfc3RhcnQgPSBqc29uX3VuaXF1ZV9vYmplY3RfZmllbGRfc3RhcnQ7 CisJCXVuaXF1ZVNlbUFjdGlvbi5vYmplY3RfZW5kID0ganNvbl91bmlxdWVfb2JqZWN0X2Vu ZDsKKwl9CisKKwlyZXN1bHQgPSBwZ19wYXJzZV9qc29uKGxleCwgY2hlY2tfdW5pcXVlX2tl eXMgPyAmdW5pcXVlU2VtQWN0aW9uIDogJm51bGxTZW1BY3Rpb24pOworCisJaWYgKHJlc3Vs dCAhPSBKU09OX1NVQ0NFU1MpCisJeworCQlpZiAodGhyb3dfZXJyb3IpCisJCQlqc29uX2Vy ZXBvcnRfZXJyb3IocmVzdWx0LCBsZXgpOworCisJCXJldHVybiBmYWxzZTsJLyogaW52YWxp ZCBqc29uICovCisJfQorCisJaWYgKGNoZWNrX3VuaXF1ZV9rZXlzICYmICFzdGF0ZS51bmlx dWUpCisJeworCQlpZiAodGhyb3dfZXJyb3IpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9KU09OX09CSkVDVF9LRVlfVkFMVUUpLAorCQkJ CQkgZXJybXNnKCJkdXBsaWNhdGUgSlNPTiBvYmplY3Qga2V5IHZhbHVlIikpKTsKKworCQly ZXR1cm4gZmFsc2U7CS8qIG5vdCB1bmlxdWUga2V5cyAqLworCX0KKworCXJldHVybiB0cnVl OwkvKiBvayAqLworfQorCiAvKgogICogU1FMIGZ1bmN0aW9uIGpzb25fdHlwZW9mKGpzb24p IC0+IHRleHQKICAqCkBAIC0xMzMyLDIxICsxNzU4LDEzIEBAIGVzY2FwZV9qc29uKFN0cmlu Z0luZm8gYnVmLCBjb25zdCBjaGFyICpzdHIpCiBEYXR1bQoganNvbl90eXBlb2YoUEdfRlVO Q1RJT05fQVJHUykKIHsKLQl0ZXh0CSAgICpqc29uOwotCi0JSnNvbkxleENvbnRleHQgKmxl eDsKLQlKc29uVG9rZW5UeXBlIHRvazsKKwl0ZXh0CSAgICpqc29uID0gUEdfR0VUQVJHX1RF WFRfUFAoMCk7CiAJY2hhcgkgICAqdHlwZTsKLQlKc29uUGFyc2VFcnJvclR5cGUgcmVzdWx0 OwotCi0JanNvbiA9IFBHX0dFVEFSR19URVhUX1BQKDApOwotCWxleCA9IG1ha2VKc29uTGV4 Q29udGV4dChqc29uLCBmYWxzZSk7CisJSnNvblRva2VuVHlwZSB0b2s7CiAKIAkvKiBMZXgg ZXhhY3RseSBvbmUgdG9rZW4gZnJvbSB0aGUgaW5wdXQgYW5kIGNoZWNrIGl0cyB0eXBlLiAq LwotCXJlc3VsdCA9IGpzb25fbGV4KGxleCk7Ci0JaWYgKHJlc3VsdCAhPSBKU09OX1NVQ0NF U1MpCi0JCWpzb25fZXJlcG9ydF9lcnJvcihyZXN1bHQsIGxleCk7Ci0JdG9rID0gbGV4LT50 b2tlbl90eXBlOworCXRvayA9IGpzb25fZ2V0X2ZpcnN0X3Rva2VuKGpzb24sIHRydWUpOwor CiAJc3dpdGNoICh0b2spCiAJewogCQljYXNlIEpTT05fVE9LRU5fT0JKRUNUX1NUQVJUOgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmIuYwppbmRleCBmNWY0MGE5NGJkLi4yMDQzZjJlNzRhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmIuYwpAQCAtMTQsNiArMTQsNyBAQAogCiAjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCkBA IC0zMywyNSArMzQsOSBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYkluU3RhdGUKIHsKIAlKc29u YlBhcnNlU3RhdGUgKnBhcnNlU3RhdGU7CiAJSnNvbmJWYWx1ZSAqcmVzOworCWJvb2wJCXVu aXF1ZV9rZXlzOwogfSBKc29uYkluU3RhdGU7CiAKLS8qIHVubGlrZSB3aXRoIGpzb24gY2F0 ZWdvcmllcywgd2UgbmVlZCB0byB0cmVhdCBqc29uIGFuZCBqc29uYiBkaWZmZXJlbnRseSAq LwotdHlwZWRlZiBlbnVtCQkJCQkvKiB0eXBlIGNhdGVnb3JpZXMgZm9yIGRhdHVtX3RvX2pz b25iICovCi17Ci0JSlNPTkJUWVBFX05VTEwsCQkJCS8qIG51bGwsIHNvIHdlIGRpZG4ndCBi b3RoZXIgdG8gaWRlbnRpZnkgKi8KLQlKU09OQlRZUEVfQk9PTCwJCQkJLyogYm9vbGVhbiAo YnVpbHQtaW4gdHlwZXMgb25seSkgKi8KLQlKU09OQlRZUEVfTlVNRVJJQywJCQkvKiBudW1l cmljIChkaXR0bykgKi8KLQlKU09OQlRZUEVfREFURSwJCQkJLyogd2UgdXNlIHNwZWNpYWwg Zm9ybWF0dGluZyBmb3IgZGF0ZXRpbWVzICovCi0JSlNPTkJUWVBFX1RJTUVTVEFNUCwJCS8q IHdlIHVzZSBzcGVjaWFsIGZvcm1hdHRpbmcgZm9yIHRpbWVzdGFtcCAqLwotCUpTT05CVFlQ RV9USU1FU1RBTVBUWiwJCS8qIC4uLiBhbmQgdGltZXN0YW1wdHogKi8KLQlKU09OQlRZUEVf SlNPTiwJCQkJLyogSlNPTiAqLwotCUpTT05CVFlQRV9KU09OQiwJCQkvKiBKU09OQiAqLwot CUpTT05CVFlQRV9BUlJBWSwJCQkvKiBhcnJheSAqLwotCUpTT05CVFlQRV9DT01QT1NJVEUs CQkvKiBjb21wb3NpdGUgKi8KLQlKU09OQlRZUEVfSlNPTkNBU1QsCQkJLyogc29tZXRoaW5n IHdpdGggYW4gZXhwbGljaXQgY2FzdCB0byBKU09OICovCi0JSlNPTkJUWVBFX09USEVSCQkJ CS8qIGFsbCBlbHNlICovCi19IEpzb25iVHlwZUNhdGVnb3J5OwotCiB0eXBlZGVmIHN0cnVj dCBKc29uYkFnZ1N0YXRlCiB7CiAJSnNvbmJJblN0YXRlICpyZXM7CkBAIC02MSw3ICs0Niw3 IEBAIHR5cGVkZWYgc3RydWN0IEpzb25iQWdnU3RhdGUKIAlPaWQJCQl2YWxfb3V0cHV0X2Z1 bmM7CiB9IEpzb25iQWdnU3RhdGU7CiAKLXN0YXRpYyBpbmxpbmUgRGF0dW0ganNvbmJfZnJv bV9jc3RyaW5nKGNoYXIgKmpzb24sIGludCBsZW4pOworc3RhdGljIGlubGluZSBEYXR1bSBq c29uYl9mcm9tX2NzdHJpbmcoY2hhciAqanNvbiwgaW50IGxlbiwgYm9vbCB1bmlxdWVfa2V5 cyk7CiBzdGF0aWMgc2l6ZV90IGNoZWNrU3RyaW5nTGVuKHNpemVfdCBsZW4pOwogc3RhdGlj IHZvaWQganNvbmJfaW5fb2JqZWN0X3N0YXJ0KHZvaWQgKnBzdGF0ZSk7CiBzdGF0aWMgdm9p ZCBqc29uYl9pbl9vYmplY3RfZW5kKHZvaWQgKnBzdGF0ZSk7CkBAIC03MCwxNyArNTUsMTEg QEAgc3RhdGljIHZvaWQganNvbmJfaW5fYXJyYXlfZW5kKHZvaWQgKnBzdGF0ZSk7CiBzdGF0 aWMgdm9pZCBqc29uYl9pbl9vYmplY3RfZmllbGRfc3RhcnQodm9pZCAqcHN0YXRlLCBjaGFy ICpmbmFtZSwgYm9vbCBpc251bGwpOwogc3RhdGljIHZvaWQganNvbmJfcHV0X2VzY2FwZWRf dmFsdWUoU3RyaW5nSW5mbyBvdXQsIEpzb25iVmFsdWUgKnNjYWxhclZhbCk7CiBzdGF0aWMg dm9pZCBqc29uYl9pbl9zY2FsYXIodm9pZCAqcHN0YXRlLCBjaGFyICp0b2tlbiwgSnNvblRv a2VuVHlwZSB0b2tlbnR5cGUpOwotc3RhdGljIHZvaWQganNvbmJfY2F0ZWdvcml6ZV90eXBl KE9pZCB0eXBvaWQsCi0JCQkJCQkJCSAgSnNvbmJUeXBlQ2F0ZWdvcnkgKnRjYXRlZ29yeSwK LQkJCQkJCQkJICBPaWQgKm91dGZ1bmNvaWQpOwogc3RhdGljIHZvaWQgY29tcG9zaXRlX3Rv X2pzb25iKERhdHVtIGNvbXBvc2l0ZSwgSnNvbmJJblN0YXRlICpyZXN1bHQpOwogc3RhdGlj IHZvaWQgYXJyYXlfZGltX3RvX2pzb25iKEpzb25iSW5TdGF0ZSAqcmVzdWx0LCBpbnQgZGlt LCBpbnQgbmRpbXMsIGludCAqZGltcywKIAkJCQkJCQkgICBEYXR1bSAqdmFscywgYm9vbCAq bnVsbHMsIGludCAqdmFsY291bnQsCiAJCQkJCQkJICAgSnNvbmJUeXBlQ2F0ZWdvcnkgdGNh dGVnb3J5LCBPaWQgb3V0ZnVuY29pZCk7CiBzdGF0aWMgdm9pZCBhcnJheV90b19qc29uYl9p bnRlcm5hbChEYXR1bSBhcnJheSwgSnNvbmJJblN0YXRlICpyZXN1bHQpOwotc3RhdGljIHZv aWQganNvbmJfY2F0ZWdvcml6ZV90eXBlKE9pZCB0eXBvaWQsCi0JCQkJCQkJCSAgSnNvbmJU eXBlQ2F0ZWdvcnkgKnRjYXRlZ29yeSwKLQkJCQkJCQkJICBPaWQgKm91dGZ1bmNvaWQpOwog c3RhdGljIHZvaWQgZGF0dW1fdG9fanNvbmIoRGF0dW0gdmFsLCBib29sIGlzX251bGwsIEpz b25iSW5TdGF0ZSAqcmVzdWx0LAogCQkJCQkJICAgSnNvbmJUeXBlQ2F0ZWdvcnkgdGNhdGVn b3J5LCBPaWQgb3V0ZnVuY29pZCwKIAkJCQkJCSAgIGJvb2wga2V5X3NjYWxhcik7CkBAIC05 OCw3ICs3Nyw3IEBAIGpzb25iX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJY2hhcgkgICAq anNvbiA9IFBHX0dFVEFSR19DU1RSSU5HKDApOwogCi0JcmV0dXJuIGpzb25iX2Zyb21fY3N0 cmluZyhqc29uLCBzdHJsZW4oanNvbikpOworCXJldHVybiBqc29uYl9mcm9tX2NzdHJpbmco anNvbiwgc3RybGVuKGpzb24pLCBmYWxzZSk7CiB9CiAKIC8qCkBAIC0xMjIsNyArMTAxLDcg QEAganNvbmJfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCWVsc2UKIAkJZWxvZyhFUlJPUiwg InVuc3VwcG9ydGVkIGpzb25iIHZlcnNpb24gbnVtYmVyICVkIiwgdmVyc2lvbik7CiAKLQly ZXR1cm4ganNvbmJfZnJvbV9jc3RyaW5nKHN0ciwgbmJ5dGVzKTsKKwlyZXR1cm4ganNvbmJf ZnJvbV9jc3RyaW5nKHN0ciwgbmJ5dGVzLCBmYWxzZSk7CiB9CiAKIC8qCkBAIC0xNjMsNiAr MTQyLDE0IEBAIGpzb25iX3NlbmQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fQllU RUFfUChwcV9lbmR0eXBzZW5kKCZidWYpKTsKIH0KIAorRGF0dW0KK2pzb25iX2Zyb21fdGV4 dCh0ZXh0ICpqcywgYm9vbCB1bmlxdWVfa2V5cykKK3sKKwlyZXR1cm4ganNvbmJfZnJvbV9j c3RyaW5nKFZBUkRBVEFfQU5ZKGpzKSwKKwkJCQkJCQkgIFZBUlNJWkVfQU5ZX0VYSERSKGpz KSwKKwkJCQkJCQkgIHVuaXF1ZV9rZXlzKTsKK30KKwogLyoKICAqIEdldCB0aGUgdHlwZSBu YW1lIG9mIGEganNvbmIgY29udGFpbmVyLgogICovCkBAIC0yNTMsNyArMjQwLDcgQEAganNv bmJfdHlwZW9mKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBVc2VzIHRoZSBqc29uIHBhcnNlciAo d2l0aCBob29rcykgdG8gY29uc3RydWN0IGEganNvbmIuCiAgKi8KIHN0YXRpYyBpbmxpbmUg RGF0dW0KLWpzb25iX2Zyb21fY3N0cmluZyhjaGFyICpqc29uLCBpbnQgbGVuKQoranNvbmJf ZnJvbV9jc3RyaW5nKGNoYXIgKmpzb24sIGludCBsZW4sIGJvb2wgdW5pcXVlX2tleXMpCiB7 CiAJSnNvbkxleENvbnRleHQgKmxleDsKIAlKc29uYkluU3RhdGUgc3RhdGU7CkBAIC0yNjMs NiArMjUwLDggQEAganNvbmJfZnJvbV9jc3RyaW5nKGNoYXIgKmpzb24sIGludCBsZW4pCiAJ bWVtc2V0KCZzZW0sIDAsIHNpemVvZihzZW0pKTsKIAlsZXggPSBtYWtlSnNvbkxleENvbnRl eHRDc3RyaW5nTGVuKGpzb24sIGxlbiwgR2V0RGF0YWJhc2VFbmNvZGluZygpLCB0cnVlKTsK IAorCXN0YXRlLnVuaXF1ZV9rZXlzID0gdW5pcXVlX2tleXM7CisKIAlzZW0uc2Vtc3RhdGUg PSAodm9pZCAqKSAmc3RhdGU7CiAKIAlzZW0ub2JqZWN0X3N0YXJ0ID0ganNvbmJfaW5fb2Jq ZWN0X3N0YXJ0OwpAQCAtMjk3LDYgKzI4Niw3IEBAIGpzb25iX2luX29iamVjdF9zdGFydCh2 b2lkICpwc3RhdGUpCiAJSnNvbmJJblN0YXRlICpfc3RhdGUgPSAoSnNvbmJJblN0YXRlICop IHBzdGF0ZTsKIAogCV9zdGF0ZS0+cmVzID0gcHVzaEpzb25iVmFsdWUoJl9zdGF0ZS0+cGFy c2VTdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJX3N0YXRlLT5wYXJzZVN0YXRl LT51bmlxdWVfa2V5cyA9IF9zdGF0ZS0+dW5pcXVlX2tleXM7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC02MTksNyArNjA5LDcgQEAgYWRkX2luZGVudChTdHJpbmdJbmZvIG91dCwgYm9vbCBp bmRlbnQsIGludCBsZXZlbCkKICAqIG91dHB1dCBmdW5jdGlvbiBPSUQuICBJZiB0aGUgcmV0 dXJuZWQgY2F0ZWdvcnkgaXMgSlNPTkJUWVBFX0pTT05DQVNULAogICogd2UgcmV0dXJuIHRo ZSBPSUQgb2YgdGhlIHJlbGV2YW50IGNhc3QgZnVuY3Rpb24gaW5zdGVhZC4KICAqLwotc3Rh dGljIHZvaWQKK3ZvaWQKIGpzb25iX2NhdGVnb3JpemVfdHlwZShPaWQgdHlwb2lkLAogCQkJ CQkgIEpzb25iVHlwZUNhdGVnb3J5ICp0Y2F0ZWdvcnksCiAJCQkJCSAgT2lkICpvdXRmdW5j b2lkKQpAQCAtMTEyNiw2ICsxMTE2LDUxIEBAIGFkZF9qc29uYihEYXR1bSB2YWwsIGJvb2wg aXNfbnVsbCwgSnNvbmJJblN0YXRlICpyZXN1bHQsCiAJZGF0dW1fdG9fanNvbmIodmFsLCBp c19udWxsLCByZXN1bHQsIHRjYXRlZ29yeSwgb3V0ZnVuY29pZCwga2V5X3NjYWxhcik7CiB9 CiAKK0RhdHVtCit0b19qc29uYl93b3JrZXIoRGF0dW0gdmFsLCBKc29uYlR5cGVDYXRlZ29y eSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5jb2lkKQoreworCUpzb25iSW5TdGF0ZSByZXN1bHQ7 CisKKwltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKEpzb25iSW5TdGF0ZSkpOworCisJZGF0 dW1fdG9fanNvbmIodmFsLCBmYWxzZSwgJnJlc3VsdCwgdGNhdGVnb3J5LCBvdXRmdW5jb2lk LCBmYWxzZSk7CisKKwlyZXR1cm4gSnNvbmJQR2V0RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIo cmVzdWx0LnJlcykpOworfQorCitib29sCit0b19qc29uYl9pc19pbW11dGFibGUoT2lkIHR5 cG9pZCkKK3sKKwlKc29uYlR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnk7CisJT2lkCQkJb3V0ZnVu Y29pZDsKKworCWpzb25iX2NhdGVnb3JpemVfdHlwZSh0eXBvaWQsICZ0Y2F0ZWdvcnksICZv dXRmdW5jb2lkKTsKKworCXN3aXRjaCAodGNhdGVnb3J5KQorCXsKKwkJY2FzZSBKU09OQlRZ UEVfQk9PTDoKKwkJY2FzZSBKU09OQlRZUEVfSlNPTjoKKwkJY2FzZSBKU09OQlRZUEVfSlNP TkI6CisJCQlyZXR1cm4gdHJ1ZTsKKworCQljYXNlIEpTT05CVFlQRV9EQVRFOgorCQljYXNl IEpTT05CVFlQRV9USU1FU1RBTVA6CisJCWNhc2UgSlNPTkJUWVBFX1RJTUVTVEFNUFRaOgor CQkJcmV0dXJuIGZhbHNlOworCisJCWNhc2UgSlNPTkJUWVBFX0FSUkFZOgorCQkJcmV0dXJu IGZhbHNlOwkvKiBUT0RPIHJlY3Vyc2UgaW50byBlbGVtZW50cyAqLworCisJCWNhc2UgSlNP TkJUWVBFX0NPTVBPU0lURToKKwkJCXJldHVybiBmYWxzZTsJLyogVE9ETyByZWN1cnNlIGlu dG8gZmllbGRzICovCisKKwkJY2FzZSBKU09OQlRZUEVfTlVNRVJJQzoKKwkJY2FzZSBKU09O QlRZUEVfSlNPTkNBU1Q6CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gZnVuY192b2xhdGlsZShv dXRmdW5jb2lkKSA9PSBQUk9WT0xBVElMRV9JTU1VVEFCTEU7CisJfQorfQorCiAvKgogICog U1FMIGZ1bmN0aW9uIHRvX2pzb25iKGFueXZhbHVlKQogICovCkBAIC0xMTM0LDcgKzExNjks NiBAQCB0b19qc29uYihQR19GVU5DVElPTl9BUkdTKQogewogCURhdHVtCQl2YWwgPSBQR19H RVRBUkdfREFUVU0oMCk7CiAJT2lkCQkJdmFsX3R5cGUgPSBnZXRfZm5fZXhwcl9hcmd0eXBl KGZjaW5mby0+ZmxpbmZvLCAwKTsKLQlKc29uYkluU3RhdGUgcmVzdWx0OwogCUpzb25iVHlw ZUNhdGVnb3J5IHRjYXRlZ29yeTsKIAlPaWQJCQlvdXRmdW5jb2lkOwogCkBAIC0xMTQ2LDMx ICsxMTgwLDE1IEBAIHRvX2pzb25iKFBHX0ZVTkNUSU9OX0FSR1MpCiAJanNvbmJfY2F0ZWdv cml6ZV90eXBlKHZhbF90eXBlLAogCQkJCQkJICAmdGNhdGVnb3J5LCAmb3V0ZnVuY29pZCk7 CiAKLQltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKEpzb25iSW5TdGF0ZSkpOwotCi0JZGF0 dW1fdG9fanNvbmIodmFsLCBmYWxzZSwgJnJlc3VsdCwgdGNhdGVnb3J5LCBvdXRmdW5jb2lk LCBmYWxzZSk7Ci0KLQlQR19SRVRVUk5fUE9JTlRFUihKc29uYlZhbHVlVG9Kc29uYihyZXN1 bHQucmVzKSk7CisJUEdfUkVUVVJOX0RBVFVNKHRvX2pzb25iX3dvcmtlcih2YWwsIHRjYXRl Z29yeSwgb3V0ZnVuY29pZCkpOwogfQogCi0vKgotICogU1FMIGZ1bmN0aW9uIGpzb25iX2J1 aWxkX29iamVjdCh2YXJpYWRpYyAiYW55IikKLSAqLwogRGF0dW0KLWpzb25iX2J1aWxkX29i amVjdChQR19GVU5DVElPTl9BUkdTKQoranNvbmJfYnVpbGRfb2JqZWN0X3dvcmtlcihpbnQg bmFyZ3MsIERhdHVtICphcmdzLCBib29sICpudWxscywgT2lkICp0eXBlcywKKwkJCQkJCSAg Ym9vbCBhYnNlbnRfb25fbnVsbCwgYm9vbCB1bmlxdWVfa2V5cykKIHsKLQlpbnQJCQluYXJn czsKIAlpbnQJCQlpOwogCUpzb25iSW5TdGF0ZSByZXN1bHQ7Ci0JRGF0dW0JICAgKmFyZ3M7 Ci0JYm9vbAkgICAqbnVsbHM7Ci0JT2lkCQkgICAqdHlwZXM7Ci0KLQkvKiBidWlsZCBhcmd1 bWVudCB2YWx1ZXMgdG8gYnVpbGQgdGhlIG9iamVjdCAqLwotCW5hcmdzID0gZXh0cmFjdF92 YXJpYWRpY19hcmdzKGZjaW5mbywgMCwgdHJ1ZSwgJmFyZ3MsICZ0eXBlcywgJm51bGxzKTsK LQotCWlmIChuYXJncyA8IDApCi0JCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlpZiAobmFyZ3Mg JSAyICE9IDApCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xMTgzLDE1ICsxMjAxLDI2IEBAIGpz b25iX2J1aWxkX29iamVjdChQR19GVU5DVElPTl9BUkdTKQogCW1lbXNldCgmcmVzdWx0LCAw LCBzaXplb2YoSnNvbmJJblN0YXRlKSk7CiAKIAlyZXN1bHQucmVzID0gcHVzaEpzb25iVmFs dWUoJnJlc3VsdC5wYXJzZVN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwlyZXN1 bHQucGFyc2VTdGF0ZS0+dW5pcXVlX2tleXMgPSB1bmlxdWVfa2V5czsKKwlyZXN1bHQucGFy c2VTdGF0ZS0+c2tpcF9udWxscyA9IGFic2VudF9vbl9udWxsOwogCiAJZm9yIChpID0gMDsg aSA8IG5hcmdzOyBpICs9IDIpCiAJewogCQkvKiBwcm9jZXNzIGtleSAqLworCQlib29sCQlz a2lwOworCiAJCWlmIChudWxsc1tpXSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJh cmd1bWVudCAlZDoga2V5IG11c3Qgbm90IGJlIG51bGwiLCBpICsgMSkpKTsKIAorCQkvKiBz a2lwIG51bGwgdmFsdWVzIGlmIGFic2VudF9vbl9udWxsICovCisJCXNraXAgPSBhYnNlbnRf b25fbnVsbCAmJiBudWxsc1tpICsgMV07CisKKwkJLyogd2UgbmVlZCB0byBzYXZlIHNraXBw ZWQga2V5cyBmb3IgdGhlIGtleSB1bmlxdWVuZXNzIGNoZWNrICovCisJCWlmIChza2lwICYm ICF1bmlxdWVfa2V5cykKKwkJCWNvbnRpbnVlOworCiAJCWFkZF9qc29uYihhcmdzW2ldLCBm YWxzZSwgJnJlc3VsdCwgdHlwZXNbaV0sIHRydWUpOwogCiAJCS8qIHByb2Nlc3MgdmFsdWUg Ki8KQEAgLTEyMDAsNyArMTIyOSwyNiBAQCBqc29uYl9idWlsZF9vYmplY3QoUEdfRlVOQ1RJ T05fQVJHUykKIAogCXJlc3VsdC5yZXMgPSBwdXNoSnNvbmJWYWx1ZSgmcmVzdWx0LnBhcnNl U3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKIAotCVBHX1JFVFVSTl9QT0lOVEVSKEpz b25iVmFsdWVUb0pzb25iKHJlc3VsdC5yZXMpKTsKKwlyZXR1cm4gSnNvbmJQR2V0RGF0dW0o SnNvbmJWYWx1ZVRvSnNvbmIocmVzdWx0LnJlcykpOworfQorCisvKgorICogU1FMIGZ1bmN0 aW9uIGpzb25iX2J1aWxkX29iamVjdCh2YXJpYWRpYyAiYW55IikKKyAqLworRGF0dW0KK2pz b25iX2J1aWxkX29iamVjdChQR19GVU5DVElPTl9BUkdTKQoreworCURhdHVtCSAgICphcmdz OworCWJvb2wJICAgKm51bGxzOworCU9pZAkJICAgKnR5cGVzOworCS8qIGJ1aWxkIGFyZ3Vt ZW50IHZhbHVlcyB0byBidWlsZCB0aGUgb2JqZWN0ICovCisJaW50CQkJbmFyZ3MgPSBleHRy YWN0X3ZhcmlhZGljX2FyZ3MoZmNpbmZvLCAwLCB0cnVlLAorCQkJCQkJCQkJCQkgICZhcmdz LCAmdHlwZXMsICZudWxscyk7CisKKwlpZiAobmFyZ3MgPCAwKQorCQlQR19SRVRVUk5fTlVM TCgpOworCisJUEdfUkVUVVJOX0RBVFVNKGpzb25iX2J1aWxkX29iamVjdF93b3JrZXIobmFy Z3MsIGFyZ3MsIG51bGxzLCB0eXBlcywgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIC8qCkBAIC0x MjE5LDM3ICsxMjY3LDUwIEBAIGpzb25iX2J1aWxkX29iamVjdF9ub2FyZ3MoUEdfRlVOQ1RJ T05fQVJHUykKIAlQR19SRVRVUk5fUE9JTlRFUihKc29uYlZhbHVlVG9Kc29uYihyZXN1bHQu cmVzKSk7CiB9CiAKLS8qCi0gKiBTUUwgZnVuY3Rpb24ganNvbmJfYnVpbGRfYXJyYXkodmFy aWFkaWMgImFueSIpCi0gKi8KIERhdHVtCi1qc29uYl9idWlsZF9hcnJheShQR19GVU5DVElP Tl9BUkdTKQoranNvbmJfYnVpbGRfYXJyYXlfd29ya2VyKGludCBuYXJncywgRGF0dW0gKmFy Z3MsIGJvb2wgKm51bGxzLCBPaWQgKnR5cGVzLAorCQkJCQkJIGJvb2wgYWJzZW50X29uX251 bGwpCiB7Ci0JaW50CQkJbmFyZ3M7CiAJaW50CQkJaTsKIAlKc29uYkluU3RhdGUgcmVzdWx0 OwotCURhdHVtCSAgICphcmdzOwotCWJvb2wJICAgKm51bGxzOwotCU9pZAkJICAgKnR5cGVz OwotCi0JLyogYnVpbGQgYXJndW1lbnQgdmFsdWVzIHRvIGJ1aWxkIHRoZSBhcnJheSAqLwot CW5hcmdzID0gZXh0cmFjdF92YXJpYWRpY19hcmdzKGZjaW5mbywgMCwgdHJ1ZSwgJmFyZ3Ms ICZ0eXBlcywgJm51bGxzKTsKLQotCWlmIChuYXJncyA8IDApCi0JCVBHX1JFVFVSTl9OVUxM KCk7CiAKIAltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKEpzb25iSW5TdGF0ZSkpOwogCiAJ cmVzdWx0LnJlcyA9IHB1c2hKc29uYlZhbHVlKCZyZXN1bHQucGFyc2VTdGF0ZSwgV0pCX0JF R0lOX0FSUkFZLCBOVUxMKTsKIAogCWZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQorCXsK KwkJaWYgKGFic2VudF9vbl9udWxsICYmIG51bGxzW2ldKQorCQkJY29udGludWU7CisKIAkJ YWRkX2pzb25iKGFyZ3NbaV0sIG51bGxzW2ldLCAmcmVzdWx0LCB0eXBlc1tpXSwgZmFsc2Up OworCX0KIAogCXJlc3VsdC5yZXMgPSBwdXNoSnNvbmJWYWx1ZSgmcmVzdWx0LnBhcnNlU3Rh dGUsIFdKQl9FTkRfQVJSQVksIE5VTEwpOwogCi0JUEdfUkVUVVJOX1BPSU5URVIoSnNvbmJW YWx1ZVRvSnNvbmIocmVzdWx0LnJlcykpOworCXJldHVybiBKc29uYlBHZXREYXR1bShKc29u YlZhbHVlVG9Kc29uYihyZXN1bHQucmVzKSk7Cit9CisKKy8qCisgKiBTUUwgZnVuY3Rpb24g anNvbmJfYnVpbGRfYXJyYXkodmFyaWFkaWMgImFueSIpCisgKi8KK0RhdHVtCitqc29uYl9i dWlsZF9hcnJheShQR19GVU5DVElPTl9BUkdTKQoreworCURhdHVtCSAgICphcmdzOworCWJv b2wJICAgKm51bGxzOworCU9pZAkJICAgKnR5cGVzOworCS8qIGJ1aWxkIGFyZ3VtZW50IHZh bHVlcyB0byBidWlsZCB0aGUgb2JqZWN0ICovCisJaW50CQkJbmFyZ3MgPSBleHRyYWN0X3Zh cmlhZGljX2FyZ3MoZmNpbmZvLCAwLCB0cnVlLAorCQkJCQkJCQkJCQkgICZhcmdzLCAmdHlw ZXMsICZudWxscyk7CisKKwlpZiAobmFyZ3MgPCAwKQorCQlQR19SRVRVUk5fTlVMTCgpOwor CisJUEdfUkVUVVJOX0RBVFVNKGpzb25iX2J1aWxkX2FycmF5X3dvcmtlcihuYXJncywgYXJn cywgbnVsbHMsIHR5cGVzLCBmYWxzZSkpOwogfQogCisKIC8qCiAgKiBkZWdlbmVyYXRlIGNh c2Ugb2YganNvbmJfYnVpbGRfYXJyYXkgd2hlcmUgaXQgZ2V0cyAwIGFyZ3VtZW50cy4KICAq LwpAQCAtMTQ5MCw2ICsxNTUxLDggQEAgY2xvbmVfcGFyc2Vfc3RhdGUoSnNvbmJQYXJzZVN0 YXRlICpzdGF0ZSkKIAl7CiAJCW9jdXJzb3ItPmNvbnRWYWwgPSBpY3Vyc29yLT5jb250VmFs OwogCQlvY3Vyc29yLT5zaXplID0gaWN1cnNvci0+c2l6ZTsKKwkJb2N1cnNvci0+dW5pcXVl X2tleXMgPSBpY3Vyc29yLT51bmlxdWVfa2V5czsKKwkJb2N1cnNvci0+c2tpcF9udWxscyA9 IGljdXJzb3ItPnNraXBfbnVsbHM7CiAJCWljdXJzb3IgPSBpY3Vyc29yLT5uZXh0OwogCQlp ZiAoaWN1cnNvciA9PSBOVUxMKQogCQkJYnJlYWs7CkBAIC0xNTAxLDEyICsxNTY0LDggQEAg Y2xvbmVfcGFyc2Vfc3RhdGUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSkKIAlyZXR1cm4gcmVz dWx0OwogfQogCi0KLS8qCi0gKiBqc29uYl9hZ2cgYWdncmVnYXRlIGZ1bmN0aW9uCi0gKi8K LURhdHVtCi1qc29uYl9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQorc3RhdGljIERh dHVtCitqc29uYl9hZ2dfdHJhbnNmbl93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGJvb2wgYWJzZW50X29uX251bGwpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0LAog CQkJCWFnZ2NvbnRleHQ7CkBAIC0xNTU0LDYgKzE2MTMsOSBAQCBqc29uYl9hZ2dfdHJhbnNm bihQR19GVU5DVElPTl9BUkdTKQogCQlyZXN1bHQgPSBzdGF0ZS0+cmVzOwogCX0KIAorCWlm IChhYnNlbnRfb25fbnVsbCAmJiBQR19BUkdJU05VTEwoMSkpCisJCVBHX1JFVFVSTl9QT0lO VEVSKHN0YXRlKTsKKwogCS8qIHR1cm4gdGhlIGFyZ3VtZW50IGludG8ganNvbmIgaW4gdGhl IG5vcm1hbCBmdW5jdGlvbiBjb250ZXh0ICovCiAKIAl2YWwgPSBQR19BUkdJU05VTEwoMSkg PyAoRGF0dW0pIDAgOiBQR19HRVRBUkdfREFUVU0oMSk7CkBAIC0xNjIzLDYgKzE2ODUsMjQg QEAganNvbmJfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fUE9J TlRFUihzdGF0ZSk7CiB9CiAKKy8qCisgKiBqc29uYl9hZ2cgYWdncmVnYXRlIGZ1bmN0aW9u CisgKi8KK0RhdHVtCitqc29uYl9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQorewor CXJldHVybiBqc29uYl9hZ2dfdHJhbnNmbl93b3JrZXIoZmNpbmZvLCBmYWxzZSk7Cit9CisK Ky8qCisgKiBqc29uYl9hZ2dfc3RyaWN0IGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICovCitEYXR1 bQoranNvbmJfYWdnX3N0cmljdF90cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0 dXJuIGpzb25iX2FnZ190cmFuc2ZuX3dvcmtlcihmY2luZm8sIHRydWUpOworfQorCiBEYXR1 bQoganNvbmJfYWdnX2ZpbmFsZm4oUEdfRlVOQ1RJT05fQVJHUykKIHsKQEAgLTE2NTUsMTEg KzE3MzUsOSBAQCBqc29uYl9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQogCVBHX1JF VFVSTl9QT0lOVEVSKG91dCk7CiB9CiAKLS8qCi0gKiBqc29uYl9vYmplY3RfYWdnIGFnZ3Jl Z2F0ZSBmdW5jdGlvbgotICovCi1EYXR1bQotanNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuKFBH X0ZVTkNUSU9OX0FSR1MpCitzdGF0aWMgRGF0dW0KK2pzb25iX29iamVjdF9hZ2dfdHJhbnNm bl93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCisJCQkJCQkJCWJvb2wgYWJzZW50 X29uX251bGwsIGJvb2wgdW5pcXVlX2tleXMpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0LAogCQkJCWFnZ2NvbnRleHQ7CkBAIC0xNjczLDYgKzE3NTEsNyBAQCBqc29uYl9vYmpl Y3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAgICpqYnZhbDsKIAlKc29u YlZhbHVlCXY7CiAJSnNvbmJJdGVyYXRvclRva2VuIHR5cGU7CisJYm9vbAkJc2tpcDsKIAog CWlmICghQWdnQ2hlY2tDYWxsQ29udGV4dChmY2luZm8sICZhZ2djb250ZXh0KSkKIAl7CkBA IC0xNjkyLDYgKzE3NzEsOSBAQCBqc29uYl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJ T05fQVJHUykKIAkJc3RhdGUtPnJlcyA9IHJlc3VsdDsKIAkJcmVzdWx0LT5yZXMgPSBwdXNo SnNvbmJWYWx1ZSgmcmVzdWx0LT5wYXJzZVN0YXRlLAogCQkJCQkJCQkJIFdKQl9CRUdJTl9P QkpFQ1QsIE5VTEwpOworCQlyZXN1bHQtPnBhcnNlU3RhdGUtPnVuaXF1ZV9rZXlzID0gdW5p cXVlX2tleXM7CisJCXJlc3VsdC0+cGFyc2VTdGF0ZS0+c2tpcF9udWxscyA9IGFic2VudF9v bl9udWxsOworCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlh cmdfdHlwZSA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDEpOwpAQCAt MTcyNyw2ICsxODA5LDE1IEBAIGpzb25iX29iamVjdF9hZ2dfdHJhbnNmbihQR19GVU5DVElP Tl9BUkdTKQogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAogCQkJCSBlcnJtc2coImZpZWxkIG5hbWUgbXVzdCBub3QgYmUgbnVsbCIpKSk7CiAKKwkv KgorCSAqIFNraXAgbnVsbCB2YWx1ZXMgaWYgYWJzZW50X29uX251bGwgdW5sZXNzIGtleSB1 bmlxdWVuZXNzIGNoZWNrIGlzCisJICogbmVlZGVkIChiZWNhdXNlIHdlIG11c3Qgc2F2ZSBr ZXlzIGluIHRoaXMgY2FzZSkuCisJICovCisJc2tpcCA9IGFic2VudF9vbl9udWxsICYmIFBH X0FSR0lTTlVMTCgyKTsKKworCWlmIChza2lwICYmICF1bmlxdWVfa2V5cykKKwkJUEdfUkVU VVJOX1BPSU5URVIoc3RhdGUpOworCiAJdmFsID0gUEdfR0VUQVJHX0RBVFVNKDEpOwogCiAJ bWVtc2V0KCZlbGVtLCAwLCBzaXplb2YoSnNvbmJJblN0YXRlKSk7CkBAIC0xNzgyLDYgKzE4 NzMsMTYgQEAganNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJfQogCQkJCXJlc3VsdC0+cmVzID0gcHVzaEpzb25iVmFsdWUoJnJlc3VsdC0+cGFyc2VT dGF0ZSwKIAkJCQkJCQkJCQkJIFdKQl9LRVksICZ2KTsKKworCQkJCWlmIChza2lwKQorCQkJ CXsKKwkJCQkJdi50eXBlID0gamJ2TnVsbDsKKwkJCQkJcmVzdWx0LT5yZXMgPSBwdXNoSnNv bmJWYWx1ZSgmcmVzdWx0LT5wYXJzZVN0YXRlLAorCQkJCQkJCQkJCQkJIFdKQl9WQUxVRSwg JnYpOworCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCQkJCVBH X1JFVFVSTl9QT0lOVEVSKHN0YXRlKTsKKwkJCQl9CisKIAkJCQlicmVhazsKIAkJCWNhc2Ug V0pCX0VORF9BUlJBWToKIAkJCQlicmVhazsKQEAgLTE4NTQsNiArMTk1NSw0MyBAQCBqc29u Yl9vYmplY3RfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fUE9J TlRFUihzdGF0ZSk7CiB9CiAKKy8qCisgKiBqc29uYl9vYmplY3RfYWdnIGFnZ3JlZ2F0ZSBm dW5jdGlvbgorICovCitEYXR1bQoranNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJcmV0dXJuIGpzb25iX29iamVjdF9hZ2dfdHJhbnNmbl93b3JrZXIo ZmNpbmZvLCBmYWxzZSwgZmFsc2UpOworfQorCisKKy8qCisgKiBqc29uYl9vYmplY3RfYWdn X3N0cmljdCBhZ2dyZWdhdGUgZnVuY3Rpb24KKyAqLworRGF0dW0KK2pzb25iX29iamVjdF9h Z2dfc3RyaWN0X3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlyZXR1cm4ganNvbmJf b2JqZWN0X2FnZ190cmFuc2ZuX3dvcmtlcihmY2luZm8sIHRydWUsIGZhbHNlKTsKK30KKwor LyoKKyAqIGpzb25iX29iamVjdF9hZ2dfdW5pcXVlIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICov CitEYXR1bQoranNvbmJfb2JqZWN0X2FnZ191bmlxdWVfdHJhbnNmbihQR19GVU5DVElPTl9B UkdTKQoreworCXJldHVybiBqc29uYl9vYmplY3RfYWdnX3RyYW5zZm5fd29ya2VyKGZjaW5m bywgZmFsc2UsIHRydWUpOworfQorCisvKgorICoganNvbmJfb2JqZWN0X2FnZ191bmlxdWVf c3RyaWN0IGFnZ3JlZ2F0ZSBmdW5jdGlvbgorICovCitEYXR1bQoranNvbmJfb2JqZWN0X2Fn Z191bmlxdWVfc3RyaWN0X3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlyZXR1cm4g anNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuX3dvcmtlcihmY2luZm8sIHRydWUsIHRydWUpOwor fQorCiBEYXR1bQoganNvbmJfb2JqZWN0X2FnZ19maW5hbGZuKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CkBAIC0yMDg1LDMgKzIyMjMsNjUgQEAganNvbmJfZmxvYXQ4KFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAlQR19SRVRVUk5fREFUVU0ocmV0VmFsdWUpOwogfQorCisvKgorICogQ29uc3Ry dWN0IGFuIGVtcHR5IGFycmF5IGpzb25iLgorICovCitKc29uYiAqCitKc29uYk1ha2VFbXB0 eUFycmF5KHZvaWQpCit7CisJSnNvbmJWYWx1ZSBqYnY7CisKKwlqYnYudHlwZSA9IGpidkFy cmF5OworCWpidi52YWwuYXJyYXkuZWxlbXMgPSBOVUxMOworCWpidi52YWwuYXJyYXkubkVs ZW1zID0gMDsKKwlqYnYudmFsLmFycmF5LnJhd1NjYWxhciA9IGZhbHNlOworCisJcmV0dXJu IEpzb25iVmFsdWVUb0pzb25iKCZqYnYpOworfQorCisvKgorICogQ29uc3RydWN0IGFuIGVt cHR5IG9iamVjdCBqc29uYi4KKyAqLworSnNvbmIgKgorSnNvbmJNYWtlRW1wdHlPYmplY3Qo dm9pZCkKK3sKKwlKc29uYlZhbHVlIGpidjsKKworCWpidi50eXBlID0gamJ2T2JqZWN0Owor CWpidi52YWwub2JqZWN0LnBhaXJzID0gTlVMTDsKKwlqYnYudmFsLm9iamVjdC5uUGFpcnMg PSAwOworCisJcmV0dXJuIEpzb25iVmFsdWVUb0pzb25iKCZqYnYpOworfQorCisvKgorICog Q29udmVydCBqc29uYiB0byBhIEMtc3RyaW5nIHN0cmlwcGluZyBxdW90ZXMgZnJvbSBzY2Fs YXIgc3RyaW5ncy4KKyAqLworY2hhciAqCitKc29uYlVucXVvdGUoSnNvbmIgKmpiKQorewor CWlmIChKQl9ST09UX0lTX1NDQUxBUihqYikpCisJeworCQlKc29uYlZhbHVlCXY7CisKKwkJ SnNvbmJFeHRyYWN0U2NhbGFyKCZqYi0+cm9vdCwgJnYpOworCisJCWlmICh2LnR5cGUgPT0g amJ2U3RyaW5nKQorCQkJcmV0dXJuIHBuc3RyZHVwKHYudmFsLnN0cmluZy52YWwsIHYudmFs LnN0cmluZy5sZW4pOworCQllbHNlIGlmICh2LnR5cGUgPT0gamJ2Qm9vbCkKKwkJCXJldHVy biBwc3RyZHVwKHYudmFsLmJvb2xlYW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJZWxzZSBp ZiAodi50eXBlID09IGpidk51bWVyaWMpCisJCQlyZXR1cm4gRGF0dW1HZXRDU3RyaW5nKERp cmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCisJCQkJCQkJCQkgICBQb2ludGVyR2V0 RGF0dW0odi52YWwubnVtZXJpYykpKTsKKwkJZWxzZSBpZiAodi50eXBlID09IGpidk51bGwp CisJCQlyZXR1cm4gcHN0cmR1cCgibnVsbCIpOworCQllbHNlCisJCXsKKwkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQganNvbmIgdmFsdWUgdHlwZSAlZCIsIHYudHlwZSk7CisJCQly ZXR1cm4gTlVMTDsKKwkJfQorCX0KKwllbHNlCisJCXJldHVybiBKc29uYlRvQ1N0cmluZyhO VUxMLCAmamItPnJvb3QsIFZBUlNJWkUoamIpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29uYl91dGlsLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmJfdXRpbC5jCmluZGV4IDYwNDQyNzU4YjMuLmFhMTUxYTUzZDYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl91dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25iX3V0aWwuYwpAQCAtNjQsNyArNjQsOCBAQCBzdGF0aWMgaW50CWxlbmd0 aENvbXBhcmVKc29uYlN0cmluZ1ZhbHVlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIp Owogc3RhdGljIGludAlsZW5ndGhDb21wYXJlSnNvbmJTdHJpbmcoY29uc3QgY2hhciAqdmFs MSwgaW50IGxlbjEsCiAJCQkJCQkJCQkgY29uc3QgY2hhciAqdmFsMiwgaW50IGxlbjIpOwog c3RhdGljIGludAlsZW5ndGhDb21wYXJlSnNvbmJQYWlyKGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIsIHZvaWQgKmFyZyk7Ci1zdGF0aWMgdm9pZCB1bmlxdWVpZnlKc29uYk9iamVj dChKc29uYlZhbHVlICpvYmplY3QpOworc3RhdGljIHZvaWQgdW5pcXVlaWZ5SnNvbmJPYmpl Y3QoSnNvbmJWYWx1ZSAqb2JqZWN0LCBib29sIHVuaXF1ZV9rZXlzLAorCQkJCQkJCQkgYm9v bCBza2lwX251bGxzKTsKIHN0YXRpYyBKc29uYlZhbHVlICpwdXNoSnNvbmJWYWx1ZVNjYWxh cihKc29uYlBhcnNlU3RhdGUgKipwc3RhdGUsCiAJCQkJCQkJCQkJSnNvbmJJdGVyYXRvclRv a2VuIHNlcSwKIAkJCQkJCQkJCQlKc29uYlZhbHVlICpzY2FsYXJWYWwpOwpAQCAtNjg5LDcg KzY5MCw5IEBAIHB1c2hKc29uYlZhbHVlU2NhbGFyKEpzb25iUGFyc2VTdGF0ZSAqKnBzdGF0 ZSwgSnNvbmJJdGVyYXRvclRva2VuIHNlcSwKIAkJCWFwcGVuZEVsZW1lbnQoKnBzdGF0ZSwg c2NhbGFyVmFsKTsKIAkJCWJyZWFrOwogCQljYXNlIFdKQl9FTkRfT0JKRUNUOgotCQkJdW5p cXVlaWZ5SnNvbmJPYmplY3QoJigqcHN0YXRlKS0+Y29udFZhbCk7CisJCQl1bmlxdWVpZnlK c29uYk9iamVjdCgmKCpwc3RhdGUpLT5jb250VmFsLAorCQkJCQkJCQkgKCpwc3RhdGUpLT51 bmlxdWVfa2V5cywKKwkJCQkJCQkJICgqcHN0YXRlKS0+c2tpcF9udWxscyk7CiAJCQkvKiBm YWxsIHRocm91Z2ghICovCiAJCWNhc2UgV0pCX0VORF9BUlJBWToKIAkJCS8qIFN0ZXBzIGhl cmUgY29tbW9uIHRvIFdKQl9FTkRfT0JKRUNUIGNhc2UgKi8KQEAgLTczMiw2ICs3MzUsOSBA QCBwdXNoU3RhdGUoSnNvbmJQYXJzZVN0YXRlICoqcHN0YXRlKQogCUpzb25iUGFyc2VTdGF0 ZSAqbnMgPSBwYWxsb2Moc2l6ZW9mKEpzb25iUGFyc2VTdGF0ZSkpOwogCiAJbnMtPm5leHQg PSAqcHN0YXRlOworCW5zLT51bmlxdWVfa2V5cyA9IGZhbHNlOworCW5zLT5za2lwX251bGxz ID0gZmFsc2U7CisKIAlyZXR1cm4gbnM7CiB9CiAKQEAgLTE5MzYsNyArMTk0Miw3IEBAIGxl bmd0aENvbXBhcmVKc29uYlBhaXIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9p ZCAqYmluZXF1YWwpCiAgKiBTb3J0IGFuZCB1bmlxdWUtaWZ5IHBhaXJzIGluIEpzb25iVmFs dWUgb2JqZWN0CiAgKi8KIHN0YXRpYyB2b2lkCi11bmlxdWVpZnlKc29uYk9iamVjdChKc29u YlZhbHVlICpvYmplY3QpCit1bmlxdWVpZnlKc29uYk9iamVjdChKc29uYlZhbHVlICpvYmpl Y3QsIGJvb2wgdW5pcXVlX2tleXMsIGJvb2wgc2tpcF9udWxscykKIHsKIAlib29sCQloYXNO b25VbmlxID0gZmFsc2U7CiAKQEAgLTE5NDYsMTUgKzE5NTIsMjEgQEAgdW5pcXVlaWZ5SnNv bmJPYmplY3QoSnNvbmJWYWx1ZSAqb2JqZWN0KQogCQlxc29ydF9hcmcob2JqZWN0LT52YWwu b2JqZWN0LnBhaXJzLCBvYmplY3QtPnZhbC5vYmplY3QublBhaXJzLCBzaXplb2YoSnNvbmJQ YWlyKSwKIAkJCQkgIGxlbmd0aENvbXBhcmVKc29uYlBhaXIsICZoYXNOb25VbmlxKTsKIAot CWlmIChoYXNOb25VbmlxKQorCWlmIChoYXNOb25VbmlxICYmIHVuaXF1ZV9rZXlzKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0pTT05fT0JK RUNUX0tFWV9WQUxVRSksCisJCQkJIGVycm1zZygiZHVwbGljYXRlIEpTT04gb2JqZWN0IGtl eSB2YWx1ZSIpKSk7CisKKwlpZiAoaGFzTm9uVW5pcSB8fCBza2lwX251bGxzKQogCXsKIAkJ SnNvbmJQYWlyICAqcHRyID0gb2JqZWN0LT52YWwub2JqZWN0LnBhaXJzICsgMSwKIAkJCQkg ICAqcmVzID0gb2JqZWN0LT52YWwub2JqZWN0LnBhaXJzOwogCiAJCXdoaWxlIChwdHIgLSBv YmplY3QtPnZhbC5vYmplY3QucGFpcnMgPCBvYmplY3QtPnZhbC5vYmplY3QublBhaXJzKQog CQl7Ci0JCQkvKiBBdm9pZCBjb3B5aW5nIG92ZXIgZHVwbGljYXRlICovCi0JCQlpZiAobGVu Z3RoQ29tcGFyZUpzb25iU3RyaW5nVmFsdWUocHRyLCByZXMpICE9IDApCisJCQkvKiBBdm9p ZCBjb3B5aW5nIG92ZXIgZHVwbGljYXRlIG9yIG51bGwgKi8KKwkJCWlmIChsZW5ndGhDb21w YXJlSnNvbmJTdHJpbmdWYWx1ZShwdHIsIHJlcykgIT0gMCAmJgorCQkJCSghc2tpcF9udWxs cyB8fCBwdHItPnZhbHVlLnR5cGUgIT0gamJ2TnVsbCkpCiAJCQl7CiAJCQkJcmVzKys7CiAJ CQkJaWYgKHB0ciAhPSByZXMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXgg MjQ1NzA2MWY5Ny4uMjAyM2JjZDEyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3Mu YwpAQCAtMjc3NywxMSArMjc3NywxMSBAQCBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9w dWxhdGVBcnJheUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCiAJY2hlY2tfc3RhY2tf ZGVwdGgoKTsKIAotCWlmIChqYnYtPnR5cGUgIT0gamJ2QmluYXJ5IHx8ICFKc29uQ29udGFp bmVySXNBcnJheShqYmMpKQorCWlmIChqYnYtPnR5cGUgIT0gamJ2QmluYXJ5IHx8CisJCSFK c29uQ29udGFpbmVySXNBcnJheShqYmMpIHx8CisJCUpzb25Db250YWluZXJJc1NjYWxhcihq YmMpKQogCQlwb3B1bGF0ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoY3R4LCBuZGlt IC0gMSk7CiAKLQlBc3NlcnQoIUpzb25Db250YWluZXJJc1NjYWxhcihqYmMpKTsKLQogCWl0 ID0gSnNvbmJJdGVyYXRvckluaXQoamJjKTsKIAogCXRvayA9IEpzb25iSXRlcmF0b3JOZXh0 KCZpdCwgJnZhbCwgdHJ1ZSk7CkBAIC0zMjUzLDYgKzMyNTMsNTAgQEAgcG9wdWxhdGVfcmVj b3JkX2ZpZWxkKENvbHVtbklPRGF0YSAqY29sLAogCX0KIH0KIAorLyogcmVjdXJzaXZlbHkg cG9wdWxhdGUgc3BlY2lmaWVkIHR5cGUgZnJvbSBhIGpzb24vanNvbmIgdmFsdWUgKi8KK0Rh dHVtCitqc29uX3BvcHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUs IE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCSAgIHZvaWQgKipjYWNoZSwgTWVtb3J5 Q29udGV4dCBtY3h0LCBib29sICppc251bGwpCit7CisJSnNWYWx1ZQkJanN2ID0geyAwIH07 CisJSnNvbmJWYWx1ZQlqYnY7CisKKwlqc3YuaXNfanNvbiA9IGpzb25fdHlwZSA9PSBKU09O T0lEOworCisJaWYgKCppc251bGwpCisJeworCQlpZiAoanN2LmlzX2pzb24pCisJCQlqc3Yu dmFsLmpzb24uc3RyID0gTlVMTDsKKwkJZWxzZQorCQkJanN2LnZhbC5qc29uYiA9IE5VTEw7 CisJfQorCWVsc2UgaWYgKGpzdi5pc19qc29uKQorCXsKKwkJdGV4dAkgICAqanNvbiA9IERh dHVtR2V0VGV4dFBQKGpzb25fdmFsKTsKKworCQlqc3YudmFsLmpzb24uc3RyID0gVkFSREFU QV9BTlkoanNvbik7CisJCWpzdi52YWwuanNvbi5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihq c29uKTsKKwkJanN2LnZhbC5qc29uLnR5cGUgPSBKU09OX1RPS0VOX0lOVkFMSUQ7IC8qIG5v dCB1c2VkIGluIHBvcHVsYXRlX2NvbXBvc2l0ZSgpICovCisJfQorCWVsc2UKKwl7CisJCUpz b25iCSAgICpqc29uYiA9IERhdHVtR2V0SnNvbmJQKGpzb25fdmFsKTsKKworCQlqc3YudmFs Lmpzb25iID0gJmpidjsKKworCQkvKiBmaWxsIGJpbmFyeSBqc29uYiB2YWx1ZSBwb2ludGlu ZyB0byBqYiAqLworCQlqYnYudHlwZSA9IGpidkJpbmFyeTsKKwkJamJ2LnZhbC5iaW5hcnku ZGF0YSA9ICZqc29uYi0+cm9vdDsKKwkJamJ2LnZhbC5iaW5hcnkubGVuID0gVkFSU0laRShq c29uYikgLSBWQVJIRFJTWjsKKwl9CisKKwlpZiAoISpjYWNoZSkKKwkJKmNhY2hlID0gTWVt b3J5Q29udGV4dEFsbG9jWmVybyhtY3h0LCBzaXplb2YoQ29sdW1uSU9EYXRhKSk7CisKKwly ZXR1cm4gcG9wdWxhdGVfcmVjb3JkX2ZpZWxkKCpjYWNoZSAsIHR5cGlkLCB0eXBtb2QsIE5V TEwsIG1jeHQsCisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oTlVMTCksICZqc3YsIGlzbnVs bCk7Cit9CisKIHN0YXRpYyBSZWNvcmRJT0RhdGEgKgogYWxsb2NhdGVfcmVjb3JkX2luZm8o TWVtb3J5Q29udGV4dCBtY3h0LCBpbnQgbmNvbHVtbnMpCiB7CkBAIC01NjQ3LDMgKzU2OTEs MjMgQEAgdHJhbnNmb3JtX3N0cmluZ192YWx1ZXNfc2NhbGFyKHZvaWQgKnN0YXRlLCBjaGFy ICp0b2tlbiwgSnNvblRva2VuVHlwZSB0b2tlbnR5cGUKIAllbHNlCiAJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoX3N0YXRlLT5zdHJ2YWwsIHRva2VuKTsKIH0KKworSnNvblRva2VuVHlw ZQoranNvbl9nZXRfZmlyc3RfdG9rZW4odGV4dCAqanNvbiwgYm9vbCB0aHJvd19lcnJvcikK K3sKKwlKc29uTGV4Q29udGV4dCAqbGV4OworCUpzb25QYXJzZUVycm9yVHlwZSByZXN1bHQ7 CisKKwlsZXggPSBtYWtlSnNvbkxleENvbnRleHQoanNvbiwgZmFsc2UpOworCisJLyogTGV4 IGV4YWN0bHkgb25lIHRva2VuIGZyb20gdGhlIGlucHV0IGFuZCBjaGVjayBpdHMgdHlwZS4g Ki8KKwlyZXN1bHQgPSBqc29uX2xleChsZXgpOworCisJaWYgKHJlc3VsdCA9PSBKU09OX1NV Q0NFU1MpCisJCXJldHVybiBsZXgtPnRva2VuX3R5cGU7CisKKwlpZiAodGhyb3dfZXJyb3Ip CisJCWpzb25fZXJlcG9ydF9lcnJvcihyZXN1bHQsIGxleCk7CisKKwlyZXR1cm4gSlNPTl9U T0tFTl9JTlZBTElEOwkvKiBpbnZhbGlkIGpzb24gKi8KK30KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25wYXRoLmMKaW5kZXggOWJlNGUzMDVmZi4uY2ExY2ZlM2QzNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25wYXRoLmMKQEAgLTY3LDcgKzY3LDkgQEAKICNpbmNsdWRlICJsaWIvc3RyaW5n aW5mby5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mb3JtYXR0aW5nLmgiCiAjaW5jbHVkZSAi dXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAKQEAgLTEwNzMs MyArMTA3NSwyNTggQEAganNwR2V0QXJyYXlTdWJzY3JpcHQoSnNvblBhdGhJdGVtICp2LCBK c29uUGF0aEl0ZW0gKmZyb20sIEpzb25QYXRoSXRlbSAqdG8sCiAKIAlyZXR1cm4gdHJ1ZTsK IH0KKworLyogU1FML0pTT04gZGF0YXR5cGUgc3RhdHVzOiAqLwordHlwZWRlZiBlbnVtIEpz b25QYXRoRGF0YXR5cGVTdGF0dXMKK3sKKwlqcGRzTm9uRGF0ZVRpbWUsCQkJLyogbnVsbCwg Ym9vbCwgbnVtZXJpYywgc3RyaW5nLCBhcnJheSwgb2JqZWN0ICovCisJanBkc1Vua25vd25E YXRlVGltZSwJCS8qIHVua25vd24gZGF0ZXRpbWUgdHlwZSAqLworCWpwZHNEYXRlVGltZVpv bmVkLAkJCS8qIHRpbWV0eiwgdGltZXN0YW1wdHogKi8KKwlqcGRzRGF0ZVRpbWVOb25ab25l ZAkJLyogdGltZSwgdGltZXN0YW1wLCBkYXRlICovCit9IEpzb25QYXRoRGF0YXR5cGVTdGF0 dXM7CisKKy8qIENvbnRleHQgZm9yIGpzcElzTXV0YWJsZVdhbGtlcigpICovCit0eXBlZGVm IHN0cnVjdCBKc29uUGF0aE11dGFibGVDb250ZXh0Cit7CisJTGlzdAkgICAqdmFybmFtZXM7 CQkvKiBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzICovCisJTGlzdAkgICAqdmFyZXhwcnM7CQkv KiBsaXN0IG9mIHZhcmlhYmxlIGV4cHJlc3Npb25zICovCisJSnNvblBhdGhEYXRhdHlwZVN0 YXR1cyBjdXJyZW50OwkvKiBzdGF0dXMgb2YgQCBpdGVtICovCisJYm9vbAkJbGF4OwkJCS8q IGpzb25wYXRoIGlzIGxheCBvciBzdHJpY3QgKi8KKwlib29sCQltdXRhYmxlOwkJLyogcmVz dWx0aW5nIG11dGFiaWxpdHkgc3RhdHVzICovCit9IEpzb25QYXRoTXV0YWJsZUNvbnRleHQ7 CisKKy8qCisgKiBSZWN1cnNpdmUgd2Fsa2VyIGZvciBqc3BJc011dGFibGUoKQorICovCitz dGF0aWMgSnNvblBhdGhEYXRhdHlwZVN0YXR1cworanNwSXNNdXRhYmxlV2Fsa2VyKEpzb25Q YXRoSXRlbSAqanBpLCBKc29uUGF0aE11dGFibGVDb250ZXh0ICpjeHQpCit7CisJSnNvblBh dGhJdGVtIG5leHQ7CisJSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBzdGF0dXMgPSBqcGRzTm9u RGF0ZVRpbWU7CisKKwl3aGlsZSAoIWN4dC0+bXV0YWJsZSkKKwl7CisJCUpzb25QYXRoSXRl bSBhcmc7CisJCUpzb25QYXRoRGF0YXR5cGVTdGF0dXMgbGVmdFN0YXR1czsKKwkJSnNvblBh dGhEYXRhdHlwZVN0YXR1cyByaWdodFN0YXR1czsKKworCQlzd2l0Y2ggKGpwaS0+dHlwZSkK KwkJeworCQkJY2FzZSBqcGlSb290OgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBkc05vbkRh dGVUaW1lKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlDdXJyZW50OgorCQkJCUFzc2Vy dChzdGF0dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlzdGF0dXMgPSBjeHQtPmN1cnJl bnQ7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpRmlsdGVyOgorCQkJCXsKKwkJCQkJSnNv blBhdGhEYXRhdHlwZVN0YXR1cyBwcmV2U3RhdHVzID0gY3h0LT5jdXJyZW50OworCisJCQkJ CWN4dC0+Y3VycmVudCA9IHN0YXR1czsKKwkJCQkJanNwR2V0QXJnKGpwaSwgJmFyZyk7CisJ CQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCisJCQkJCWN4dC0+Y3VycmVu dCA9IHByZXZTdGF0dXM7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBqcGlWYXJp YWJsZToKKwkJCQl7CisJCQkJCWludDMyCQlsZW47CisJCQkJCWNvbnN0IGNoYXIgKm5hbWUg PSBqc3BHZXRTdHJpbmcoanBpLCAmbGVuKTsKKwkJCQkJTGlzdENlbGwgICAqbGMxOworCQkJ CQlMaXN0Q2VsbCAgICpsYzI7CisKKwkJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0 ZVRpbWUpOworCisJCQkJCWZvcmJvdGgobGMxLCBjeHQtPnZhcm5hbWVzLCBsYzIsIGN4dC0+ dmFyZXhwcnMpCisJCQkJCXsKKwkJCQkJCVN0cmluZwkgICAqdmFybmFtZSA9IGxmaXJzdF9u b2RlKFN0cmluZywgbGMxKTsKKwkJCQkJCU5vZGUJICAgKnZhcmV4cHIgPSBsZmlyc3QobGMy KTsKKworCQkJCQkJaWYgKHN0cm5jbXAodmFybmFtZS0+c3ZhbCwgbmFtZSwgbGVuKSkKKwkJ CQkJCQljb250aW51ZTsKKworCQkJCQkJc3dpdGNoIChleHByVHlwZSh2YXJleHByKSkKKwkJ CQkJCXsKKwkJCQkJCQljYXNlIERBVEVPSUQ6CisJCQkJCQkJY2FzZSBUSU1FT0lEOgorCQkJ CQkJCWNhc2UgVElNRVNUQU1QT0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVO b25ab25lZDsKKwkJCQkJCQkJYnJlYWs7CisKKwkJCQkJCQljYXNlIFRJTUVUWk9JRDoKKwkJ CQkJCQljYXNlIFRJTUVTVEFNUFRaT0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRp bWVab25lZDsKKwkJCQkJCQkJYnJlYWs7CisKKwkJCQkJCQlkZWZhdWx0OgorCQkJCQkJCQlz dGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCisJ CQkJCQlicmVhazsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UganBp RXF1YWw6CisJCQljYXNlIGpwaU5vdEVxdWFsOgorCQkJY2FzZSBqcGlMZXNzOgorCQkJY2Fz ZSBqcGlHcmVhdGVyOgorCQkJY2FzZSBqcGlMZXNzT3JFcXVhbDoKKwkJCWNhc2UganBpR3Jl YXRlck9yRXF1YWw6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOwor CQkJCWpzcEdldExlZnRBcmcoanBpLCAmYXJnKTsKKwkJCQlsZWZ0U3RhdHVzID0ganNwSXNN dXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisKKwkJCQlqc3BHZXRSaWdodEFyZyhqcGksICZh cmcpOworCQkJCXJpZ2h0U3RhdHVzID0ganNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7 CisKKwkJCQkvKgorCQkJCSAqIENvbXBhcmlzb24gb2YgZGF0ZXRpbWUgdHlwZSB3aXRoIGRp ZmZlcmVudCB0aW1lem9uZSBzdGF0dXMKKwkJCQkgKiBpcyBtdXRhYmxlLgorCQkJCSAqLwor CQkJCWlmIChsZWZ0U3RhdHVzICE9IGpwZHNOb25EYXRlVGltZSAmJgorCQkJCQlyaWdodFN0 YXR1cyAhPSBqcGRzTm9uRGF0ZVRpbWUgJiYKKwkJCQkJKGxlZnRTdGF0dXMgPT0ganBkc1Vu a25vd25EYXRlVGltZSB8fAorCQkJCQkgcmlnaHRTdGF0dXMgPT0ganBkc1Vua25vd25EYXRl VGltZSB8fAorCQkJCQkgbGVmdFN0YXR1cyAhPSByaWdodFN0YXR1cykpCisJCQkJCWN4dC0+ bXV0YWJsZSA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpTm90OgorCQkJY2Fz ZSBqcGlJc1Vua25vd246CisJCQljYXNlIGpwaUV4aXN0czoKKwkJCWNhc2UganBpUGx1czoK KwkJCWNhc2UganBpTWludXM6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRp bWUpOworCQkJCWpzcEdldEFyZyhqcGksICZhcmcpOworCQkJCWpzcElzTXV0YWJsZVdhbGtl cigmYXJnLCBjeHQpOworCQkJCWJyZWFrOworCisJCQljYXNlIGpwaUFuZDoKKwkJCWNhc2Ug anBpT3I6CisJCQljYXNlIGpwaUFkZDoKKwkJCWNhc2UganBpU3ViOgorCQkJY2FzZSBqcGlN dWw6CisJCQljYXNlIGpwaURpdjoKKwkJCWNhc2UganBpTW9kOgorCQkJY2FzZSBqcGlTdGFy dHNXaXRoOgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlq c3BHZXRMZWZ0QXJnKGpwaSwgJmFyZyk7CisJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcs IGN4dCk7CisJCQkJanNwR2V0UmlnaHRBcmcoanBpLCAmYXJnKTsKKwkJCQlqc3BJc011dGFi bGVXYWxrZXIoJmFyZywgY3h0KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlJbmRleEFy cmF5OgorCQkJCWZvciAoaW50IGkgPSAwOyBpIDwganBpLT5jb250ZW50LmFycmF5Lm5lbGVt czsgaSsrKQorCQkJCXsKKwkJCQkJSnNvblBhdGhJdGVtIGZyb207CisJCQkJCUpzb25QYXRo SXRlbSB0bzsKKworCQkJCQlpZiAoanNwR2V0QXJyYXlTdWJzY3JpcHQoanBpLCAmZnJvbSwg JnRvLCBpKSkKKwkJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmdG8sIGN4dCk7CisKKwkJCQkJ anNwSXNNdXRhYmxlV2Fsa2VyKCZmcm9tLCBjeHQpOworCQkJCX0KKwkJCQkvKiBGQUxMVEhS T1VHSCAqLworCisJCQljYXNlIGpwaUFueUFycmF5OgorCQkJCWlmICghY3h0LT5sYXgpCisJ CQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBq cGlBbnk6CisJCQkJaWYgKGpwaS0+Y29udGVudC5hbnlib3VuZHMuZmlyc3QgPiAwKQorCQkJ CQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBp RGF0ZXRpbWU6CisJCQkJaWYgKGpwaS0+Y29udGVudC5hcmcpCisJCQkJeworCQkJCQljaGFy CSAgICp0ZW1wbGF0ZTsKKwkJCQkJaW50CQkJZmxhZ3M7CisKKwkJCQkJanNwR2V0QXJnKGpw aSwgJmFyZyk7CisJCQkJCWlmIChhcmcudHlwZSAhPSBqcGlTdHJpbmcpCisJCQkJCXsKKwkJ CQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQkJCWJyZWFrOwkvKiB0aGVyZSB3 aWxsIGJlIHJ1bnRpbWUgZXJyb3IgKi8KKwkJCQkJfQorCisJCQkJCXRlbXBsYXRlID0ganNw R2V0U3RyaW5nKCZhcmcsIE5VTEwpOworCQkJCQlmbGFncyA9IGRhdGV0aW1lX2Zvcm1hdF9m bGFncyh0ZW1wbGF0ZSwgTlVMTCk7CisJCQkJCWlmIChmbGFncyAmIERDSF9aT05FRCkKKwkJ CQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZVpvbmVkOworCQkJCQllbHNlCisJCQkJCQlzdGF0 dXMgPSBqcGRzRGF0ZVRpbWVOb25ab25lZDsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJ CQkJc3RhdHVzID0ganBkc1Vua25vd25EYXRlVGltZTsKKwkJCQl9CisJCQkJYnJlYWs7CisK KwkJCWNhc2UganBpTGlrZVJlZ2V4OgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBkc05vbkRh dGVUaW1lKTsKKwkJCQlqc3BJbml0QnlCdWZmZXIoJmFyZywganBpLT5iYXNlLCBqcGktPmNv bnRlbnQubGlrZV9yZWdleC5leHByKTsKKwkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFyZywg Y3h0KTsKKwkJCQlicmVhazsKKworCQkJLyogbGl0ZXJhbHMgKi8KKwkJCWNhc2UganBpTnVs bDoKKwkJCWNhc2UganBpU3RyaW5nOgorCQkJY2FzZSBqcGlOdW1lcmljOgorCQkJY2FzZSBq cGlCb29sOgorCQkJLyogYWNjZXNzb3JzICovCisJCQljYXNlIGpwaUtleToKKwkJCWNhc2Ug anBpQW55S2V5OgorCQkJLyogc3BlY2lhbCBpdGVtcyAqLworCQkJY2FzZSBqcGlTdWJzY3Jp cHQ6CisJCQljYXNlIGpwaUxhc3Q6CisJCQkvKiBpdGVtIG1ldGhvZHMgKi8KKwkJCWNhc2Ug anBpVHlwZToKKwkJCWNhc2UganBpU2l6ZToKKwkJCWNhc2UganBpQWJzOgorCQkJY2FzZSBq cGlGbG9vcjoKKwkJCWNhc2UganBpQ2VpbGluZzoKKwkJCWNhc2UganBpRG91YmxlOgorCQkJ Y2FzZSBqcGlLZXlWYWx1ZToKKwkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJ YnJlYWs7CisJCX0KKworCQlpZiAoIWpzcEdldE5leHQoanBpLCAmbmV4dCkpCisJCQlicmVh azsKKworCQlqcGkgPSAmbmV4dDsKKwl9CisKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKgor ICogQ2hlY2sgd2hldGhlciBqc29ucGF0aCBleHByZXNzaW9uIGlzIGltbXV0YWJsZSBvciBu b3QuCisgKi8KK2Jvb2wKK2pzcElzTXV0YWJsZShKc29uUGF0aCAqcGF0aCwgTGlzdCAqdmFy bmFtZXMsIExpc3QgKnZhcmV4cHJzKQoreworCUpzb25QYXRoTXV0YWJsZUNvbnRleHQgY3h0 OworCUpzb25QYXRoSXRlbSBqcGk7CisKKwljeHQudmFybmFtZXMgPSB2YXJuYW1lczsKKwlj eHQudmFyZXhwcnMgPSB2YXJleHByczsKKwljeHQuY3VycmVudCA9IGpwZHNOb25EYXRlVGlt ZTsKKwljeHQubGF4ID0gKHBhdGgtPmhlYWRlciAmIEpTT05QQVRIX0xBWCkgIT0gMDsKKwlj eHQubXV0YWJsZSA9IGZhbHNlOworCisJanNwSW5pdCgmanBpLCBwYXRoKTsKKwlqc3BJc011 dGFibGVXYWxrZXIoJmpwaSwgJmN4dCk7CisKKwlyZXR1cm4gY3h0Lm11dGFibGU7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCBlZmYzNzM0YjZhLi43 ODExZmEzMWUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKQEAg LTg2LDEyICs4NiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBKc29uQmFzZU9iamVjdEluZm8KIAlp bnQJCQlpZDsKIH0gSnNvbkJhc2VPYmplY3RJbmZvOwogCit0eXBlZGVmIGludCAoKkpzb25Q YXRoVmFyQ2FsbGJhY2spICh2b2lkICp2YXJzLCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFt ZUxlbiwKKwkJCQkJCQkJCUpzb25iVmFsdWUgKnZhbCwgSnNvbmJWYWx1ZSAqYmFzZU9iamVj dCk7CisKIC8qCiAgKiBDb250ZXh0IG9mIGpzb25wYXRoIGV4ZWN1dGlvbi4KICAqLwogdHlw ZWRlZiBzdHJ1Y3QgSnNvblBhdGhFeGVjQ29udGV4dAogewotCUpzb25iCSAgICp2YXJzOwkJ CS8qIHZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIGludG8ganNvbnBhdGggKi8KKwl2b2lkCSAg ICp2YXJzOwkJCS8qIHZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIGludG8ganNvbnBhdGggKi8K KwlKc29uUGF0aFZhckNhbGxiYWNrIGdldFZhcjsKIAlKc29uYlZhbHVlICpyb290OwkJCS8q IGZvciAkIGV2YWx1YXRpb24gKi8KIAlKc29uYlZhbHVlICpjdXJyZW50OwkJLyogZm9yIEAg ZXZhbHVhdGlvbiAqLwogCUpzb25CYXNlT2JqZWN0SW5mbyBiYXNlT2JqZWN0OwkvKiAiYmFz ZSBvYmplY3QiIGZvciAua2V5dmFsdWUoKQpAQCAtMTczLDcgKzE3Nyw4IEBAIHR5cGVkZWYg SnNvblBhdGhCb29sICgqSnNvblBhdGhQcmVkaWNhdGVDYWxsYmFjaykgKEpzb25QYXRoSXRl bSAqanNwLAogCQkJCQkJCQkJCQkJICAgdm9pZCAqcGFyYW0pOwogdHlwZWRlZiBOdW1lcmlj ICgqQmluYXJ5QXJpdGhtRnVuYykgKE51bWVyaWMgbnVtMSwgTnVtZXJpYyBudW0yLCBib29s ICplcnJvcik7CiAKLXN0YXRpYyBKc29uUGF0aEV4ZWNSZXN1bHQgZXhlY3V0ZUpzb25QYXRo KEpzb25QYXRoICpwYXRoLCBKc29uYiAqdmFycywKK3N0YXRpYyBKc29uUGF0aEV4ZWNSZXN1 bHQgZXhlY3V0ZUpzb25QYXRoKEpzb25QYXRoICpwYXRoLCB2b2lkICp2YXJzLAorCQkJCQkJ CQkJCSAgSnNvblBhdGhWYXJDYWxsYmFjayBnZXRWYXIsCiAJCQkJCQkJCQkJICBKc29uYiAq anNvbiwgYm9vbCB0aHJvd0Vycm9ycywKIAkJCQkJCQkJCQkgIEpzb25WYWx1ZUxpc3QgKnJl c3VsdCwgYm9vbCB1c2VUeik7CiBzdGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGV4ZWN1dGVJ dGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKQEAgLTIyNSw3ICsyMzAsMTAgQEAgc3Rh dGljIEpzb25QYXRoRXhlY1Jlc3VsdCBhcHBlbmRCb29sUmVzdWx0KEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwKIHN0YXRpYyB2b2lkIGdldEpzb25QYXRoSXRlbShKc29uUGF0aEV4ZWND b250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqaXRlbSwKIAkJCQkJCQlKc29uYlZhbHVlICp2 YWx1ZSk7CiBzdGF0aWMgdm9pZCBnZXRKc29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwKLQkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmIgKnZh cnMsIEpzb25iVmFsdWUgKnZhbHVlKTsKKwkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJs ZSwgSnNvbmJWYWx1ZSAqdmFsdWUpOworc3RhdGljIGludCBnZXRKc29uUGF0aFZhcmlhYmxl RnJvbUpzb25iKHZvaWQgKnZhcnNKc29uYiwgY2hhciAqdmFyTmFtZSwKKwkJCQkJCQkJCQlp bnQgdmFyTmFtZUxlbiwgSnNvbmJWYWx1ZSAqdmFsLAorCQkJCQkJCQkJCUpzb25iVmFsdWUg KmJhc2VPYmplY3QpOwogc3RhdGljIGludAlKc29uYkFycmF5U2l6ZShKc29uYlZhbHVlICpq Yik7CiBzdGF0aWMgSnNvblBhdGhCb29sIGV4ZWN1dGVDb21wYXJpc29uKEpzb25QYXRoSXRl bSAqY21wLCBKc29uYlZhbHVlICpsdiwKIAkJCQkJCQkJCSAgSnNvbmJWYWx1ZSAqcnYsIHZv aWQgKnApOwpAQCAtMjgzLDcgKzI5MSw4IEBAIGpzb25iX3BhdGhfZXhpc3RzX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCQlzaWxlbnQgPSBQR19HRVRB UkdfQk9PTCgzKTsKIAl9CiAKLQlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGpi LCAhc2lsZW50LCBOVUxMLCB0eik7CisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJz LCBnZXRKc29uUGF0aFZhcmlhYmxlRnJvbUpzb25iLAorCQkJCQkJICBqYiwgIXNpbGVudCwg TlVMTCwgdHopOwogCiAJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsKIAlQR19GUkVFX0lGX0NP UFkoanAsIDEpOwpAQCAtMzM4LDcgKzM0Nyw4IEBAIGpzb25iX3BhdGhfbWF0Y2hfaW50ZXJu YWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgdHopCiAJCXNpbGVudCA9IFBHX0dF VEFSR19CT09MKDMpOwogCX0KIAotCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMs IGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKKwkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpw LCB2YXJzLCBnZXRKc29uUGF0aFZhcmlhYmxlRnJvbUpzb25iLAorCQkJCQkJICAgamIsICFz aWxlbnQsICZmb3VuZCwgdHopOwogCiAJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsKIAlQR19G UkVFX0lGX0NPUFkoanAsIDEpOwpAQCAtNDE2LDcgKzQyNiw4IEBAIGpzb25iX3BhdGhfcXVl cnlfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgdHopCiAJCXZhcnMg PSBQR19HRVRBUkdfSlNPTkJfUF9DT1BZKDIpOwogCQlzaWxlbnQgPSBQR19HRVRBUkdfQk9P TCgzKTsKIAotCQkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBqYiwgIXNpbGVu dCwgJmZvdW5kLCB0eik7CisJCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGdl dEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkJICAgamIsICFzaWxlbnQsICZm b3VuZCwgdHopOwogCiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IEpzb25WYWx1ZUxpc3RHZXRM aXN0KCZmb3VuZCk7CiAKQEAgLTQ2Myw3ICs0NzQsOCBAQCBqc29uYl9wYXRoX3F1ZXJ5X2Fy cmF5X2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCUpzb25i CSAgICp2YXJzID0gUEdfR0VUQVJHX0pTT05CX1AoMik7CiAJYm9vbAkJc2lsZW50ID0gUEdf R0VUQVJHX0JPT0woMyk7CiAKLQkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBq YiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CisJKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwg dmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29uYiwKKwkJCQkJCSAgIGpiLCAhc2ls ZW50LCAmZm91bmQsIHR6KTsKIAogCVBHX1JFVFVSTl9KU09OQl9QKEpzb25iVmFsdWVUb0pz b25iKHdyYXBJdGVtc0luQXJyYXkoJmZvdW5kKSkpOwogfQpAQCAtNDk0LDcgKzUwNiw4IEBA IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIGJvb2wgdHopCiAJSnNvbmIJICAgKnZhcnMgPSBQR19HRVRBUkdfSlNPTkJfUCgyKTsK IAlib29sCQlzaWxlbnQgPSBQR19HRVRBUkdfQk9PTCgzKTsKIAotCSh2b2lkKSBleGVjdXRl SnNvblBhdGgoanAsIHZhcnMsIGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKKwkodm9pZCkg ZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBnZXRKc29uUGF0aFZhcmlhYmxlRnJvbUpzb25i LAorCQkJCQkJICAgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOwogCiAJaWYgKEpzb25WYWx1 ZUxpc3RMZW5ndGgoJmZvdW5kKSA+PSAxKQogCQlQR19SRVRVUk5fSlNPTkJfUChKc29uYlZh bHVlVG9Kc29uYihKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpKSk7CkBAIC01MzYsOCArNTQ5 LDkgQEAganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eihQR19GVU5DVElPTl9BUkdTKQogICog SW4gb3RoZXIgY2FzZSBpdCB0cmllcyB0byBmaW5kIGFsbCB0aGUgc2F0aXNmaWVkIHJlc3Vs dCBpdGVtcy4KICAqLwogc3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdAotZXhlY3V0ZUpzb25Q YXRoKEpzb25QYXRoICpwYXRoLCBKc29uYiAqdmFycywgSnNvbmIgKmpzb24sIGJvb2wgdGhy b3dFcnJvcnMsCi0JCQkJSnNvblZhbHVlTGlzdCAqcmVzdWx0LCBib29sIHVzZVR6KQorZXhl Y3V0ZUpzb25QYXRoKEpzb25QYXRoICpwYXRoLCB2b2lkICp2YXJzLCBKc29uUGF0aFZhckNh bGxiYWNrIGdldFZhciwKKwkJCQlKc29uYiAqanNvbiwgYm9vbCB0aHJvd0Vycm9ycywgSnNv blZhbHVlTGlzdCAqcmVzdWx0LAorCQkJCWJvb2wgdXNlVHopCiB7CiAJSnNvblBhdGhFeGVj Q29udGV4dCBjeHQ7CiAJSnNvblBhdGhFeGVjUmVzdWx0IHJlczsKQEAgLTU0OSwyMiArNTYz LDE2IEBAIGV4ZWN1dGVKc29uUGF0aChKc29uUGF0aCAqcGF0aCwgSnNvbmIgKnZhcnMsIEpz b25iICpqc29uLCBib29sIHRocm93RXJyb3JzLAogCWlmICghSnNvbmJFeHRyYWN0U2NhbGFy KCZqc29uLT5yb290LCAmamJ2KSkKIAkJSnNvbmJJbml0QmluYXJ5KCZqYnYsIGpzb24pOwog Ci0JaWYgKHZhcnMgJiYgIUpzb25Db250YWluZXJJc09iamVjdCgmdmFycy0+cm9vdCkpCi0J ewotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coIlwidmFyc1wiIGFyZ3VtZW50IGlzIG5vdCBh biBvYmplY3QiKSwKLQkJCQkgZXJyZGV0YWlsKCJKc29ucGF0aCBwYXJhbWV0ZXJzIHNob3Vs ZCBiZSBlbmNvZGVkIGFzIGtleS12YWx1ZSBwYWlycyBvZiBcInZhcnNcIiBvYmplY3QuIikp KTsKLQl9Ci0KIAljeHQudmFycyA9IHZhcnM7CisJY3h0LmdldFZhciA9IGdldFZhcjsKIAlj eHQubGF4TW9kZSA9IChwYXRoLT5oZWFkZXIgJiBKU09OUEFUSF9MQVgpICE9IDA7CiAJY3h0 Lmlnbm9yZVN0cnVjdHVyYWxFcnJvcnMgPSBjeHQubGF4TW9kZTsKIAljeHQucm9vdCA9ICZq YnY7CiAJY3h0LmN1cnJlbnQgPSAmamJ2OwogCWN4dC5iYXNlT2JqZWN0LmpiYyA9IE5VTEw7 CiAJY3h0LmJhc2VPYmplY3QuaWQgPSAwOwotCWN4dC5sYXN0R2VuZXJhdGVkT2JqZWN0SWQg PSB2YXJzID8gMiA6IDE7CisJLyogMSArIG51bWJlciBvZiBiYXNlIG9iamVjdHMgaW4gdmFy cyAqLworCWN4dC5sYXN0R2VuZXJhdGVkT2JqZWN0SWQgPSAxICsgZ2V0VmFyKHZhcnMsIE5V TEwsIDAsIE5VTEwsIE5VTEwpOwogCWN4dC5pbm5lcm1vc3RBcnJheVNpemUgPSAtMTsKIAlj eHQudGhyb3dFcnJvcnMgPSB0aHJvd0Vycm9yczsKIAljeHQudXNlVHogPSB1c2VUejsKQEAg LTIwOTMsNyArMjEwMSw3IEBAIGdldEpzb25QYXRoSXRlbShKc29uUGF0aEV4ZWNDb250ZXh0 ICpjeHQsIEpzb25QYXRoSXRlbSAqaXRlbSwKIAkJCQkJCQkJCQkJCSAmdmFsdWUtPnZhbC5z dHJpbmcubGVuKTsKIAkJCWJyZWFrOwogCQljYXNlIGpwaVZhcmlhYmxlOgotCQkJZ2V0SnNv blBhdGhWYXJpYWJsZShjeHQsIGl0ZW0sIGN4dC0+dmFycywgdmFsdWUpOworCQkJZ2V0SnNv blBhdGhWYXJpYWJsZShjeHQsIGl0ZW0sIHZhbHVlKTsKIAkJCXJldHVybjsKIAkJZGVmYXVs dDoKIAkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGpzb25wYXRoIGl0ZW0gdHlwZSIpOwpA QCAtMjEwNSw0MiArMjExMyw2MyBAQCBnZXRKc29uUGF0aEl0ZW0oSnNvblBhdGhFeGVjQ29u dGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKml0ZW0sCiAgKi8KIHN0YXRpYyB2b2lkCiBnZXRK c29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVt ICp2YXJpYWJsZSwKLQkJCQkJSnNvbmIgKnZhcnMsIEpzb25iVmFsdWUgKnZhbHVlKQorCQkJ CQlKc29uYlZhbHVlICp2YWx1ZSkKIHsKIAljaGFyCSAgICp2YXJOYW1lOwogCWludAkJCXZh ck5hbWVMZW5ndGg7CisJSnNvbmJWYWx1ZQliYXNlT2JqZWN0OworCWludAkJCWJhc2VPYmpl Y3RJZDsKKworCUFzc2VydCh2YXJpYWJsZS0+dHlwZSA9PSBqcGlWYXJpYWJsZSk7CisJdmFy TmFtZSA9IGpzcEdldFN0cmluZyh2YXJpYWJsZSwgJnZhck5hbWVMZW5ndGgpOworCisJaWYg KCFjeHQtPnZhcnMgfHwKKwkJKGJhc2VPYmplY3RJZCA9IGN4dC0+Z2V0VmFyKGN4dC0+dmFy cywgdmFyTmFtZSwgdmFyTmFtZUxlbmd0aCwgdmFsdWUsCisJCQkJCQkJCQkmYmFzZU9iamVj dCkpIDwgMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmaW5kIGpzb25wYXRoIHZh cmlhYmxlIFwiJXNcIiIsCisJCQkJCQlwbnN0cmR1cCh2YXJOYW1lLCB2YXJOYW1lTGVuZ3Ro KSkpKTsKKworCWlmIChiYXNlT2JqZWN0SWQgPiAwKQorCQlzZXRCYXNlT2JqZWN0KGN4dCwg JmJhc2VPYmplY3QsIGJhc2VPYmplY3RJZCk7Cit9CisKK3N0YXRpYyBpbnQKK2dldEpzb25Q YXRoVmFyaWFibGVGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25iLCBjaGFyICp2YXJOYW1lLCBp bnQgdmFyTmFtZUxlbmd0aCwKKwkJCQkJCQkgSnNvbmJWYWx1ZSAqdmFsdWUsIEpzb25iVmFs dWUgKmJhc2VPYmplY3QpCit7CisJSnNvbmIJICAgKnZhcnMgPSB2YXJzSnNvbmI7CiAJSnNv bmJWYWx1ZQl0bXA7CiAJSnNvbmJWYWx1ZSAqdjsKIAotCWlmICghdmFycykKKwlpZiAoIXZh ck5hbWUpCiAJewotCQl2YWx1ZS0+dHlwZSA9IGpidk51bGw7Ci0JCXJldHVybjsKKwkJaWYg KHZhcnMgJiYgIUpzb25Db250YWluZXJJc09iamVjdCgmdmFycy0+cm9vdCkpCisJCXsKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJcInZhcnNcIiBhcmd1bWVudCBpcyBub3QgYW4g b2JqZWN0IiksCisJCQkJCSBlcnJkZXRhaWwoIkpzb25wYXRoIHBhcmFtZXRlcnMgc2hvdWxk IGJlIGVuY29kZWQgYXMga2V5LXZhbHVlIHBhaXJzIG9mIFwidmFyc1wiIG9iamVjdC4iKSkp OworCQl9CisKKwkJcmV0dXJuIHZhcnMgPyAxIDogMDsJLyogY291bnQgb2YgYmFzZSBvYmpl Y3RzICovCiAJfQogCi0JQXNzZXJ0KHZhcmlhYmxlLT50eXBlID09IGpwaVZhcmlhYmxlKTsK LQl2YXJOYW1lID0ganNwR2V0U3RyaW5nKHZhcmlhYmxlLCAmdmFyTmFtZUxlbmd0aCk7CiAJ dG1wLnR5cGUgPSBqYnZTdHJpbmc7CiAJdG1wLnZhbC5zdHJpbmcudmFsID0gdmFyTmFtZTsK IAl0bXAudmFsLnN0cmluZy5sZW4gPSB2YXJOYW1lTGVuZ3RoOwogCiAJdiA9IGZpbmRKc29u YlZhbHVlRnJvbUNvbnRhaW5lcigmdmFycy0+cm9vdCwgSkJfRk9CSkVDVCwgJnRtcCk7CiAK LQlpZiAodikKLQl7Ci0JCSp2YWx1ZSA9ICp2OwotCQlwZnJlZSh2KTsKLQl9Ci0JZWxzZQot CXsKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmaW5kIGpzb25wYXRoIHZhcmlhYmxl IFwiJXNcIiIsCi0JCQkJCQlwbnN0cmR1cCh2YXJOYW1lLCB2YXJOYW1lTGVuZ3RoKSkpKTsK LQl9CisJaWYgKCF2KQorCQlyZXR1cm4gLTE7CiAKLQlKc29uYkluaXRCaW5hcnkoJnRtcCwg dmFycyk7Ci0Jc2V0QmFzZU9iamVjdChjeHQsICZ0bXAsIDEpOworCSp2YWx1ZSA9ICp2Owor CXBmcmVlKHYpOworCisJSnNvbmJJbml0QmluYXJ5KGJhc2VPYmplY3QsIHZhcnMpOworCXJl dHVybiAxOwogfQogCiAvKioqKioqKioqKioqKioqKiBTdXBwb3J0IGZ1bmN0aW9ucyBmb3Ig SnNvblBhdGggZXhlY3V0aW9uICoqKioqKioqKioqKioqKioqLwpAQCAtMjc5NywzICsyODI2 LDI0NCBAQCBjb21wYXJlRGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0g dmFsMiwgT2lkIHR5cGlkMiwKIAogCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0 aW9uQ2FsbDIoY21wZnVuYywgdmFsMSwgdmFsMikpOwogfQorCisvKioqKioqKioqKioqKioq KioqKipJbnRlcmZhY2UgdG8gcGdzcWwncyBleGVjdXRvcioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKworYm9vbAorSnNvblBhdGhFeGlzdHMoRGF0dW0gamIsIEpzb25QYXRoICpq cCwgTGlzdCAqdmFycywgYm9vbCAqZXJyb3IpCit7CisJSnNvblBhdGhFeGVjUmVzdWx0IHJl cyA9IGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgRXZhbEpzb25QYXRoVmFyLAorCQkJCQkJ CQkJCQkgRGF0dW1HZXRKc29uYlAoamIpLCAhZXJyb3IsIE5VTEwsCisJCQkJCQkJCQkJCSB0 cnVlKTsKKworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IocmVzKSk7CisKKwlpZiAo ZXJyb3IgJiYganBlcklzRXJyb3IocmVzKSkKKwkJKmVycm9yID0gdHJ1ZTsKKworCXJldHVy biByZXMgPT0ganBlck9rOworfQorCitEYXR1bQorSnNvblBhdGhRdWVyeShEYXR1bSBqYiwg SnNvblBhdGggKmpwLCBKc29uV3JhcHBlciB3cmFwcGVyLCBib29sICplbXB0eSwKKwkJCSAg Ym9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNvbmJWYWx1ZSAqZmlyc3Q7CisJYm9v bAkJd3JhcDsKKwlKc29uVmFsdWVMaXN0IGZvdW5kID0gezB9OworCUpzb25QYXRoRXhlY1Jl c3VsdCByZXMgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCWludAkJCWNvdW50OworCisJ cmVzID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBFdmFsSnNvblBhdGhWYXIsIERhdHVt R2V0SnNvbmJQKGpiKSwgIWVycm9yLAorCQkJCQkJICAmZm91bmQsIHRydWUpOworCisJQXNz ZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihyZXMpKTsKKworCWlmIChlcnJvciAmJiBqcGVy SXNFcnJvcihyZXMpKQorCXsKKwkJKmVycm9yID0gdHJ1ZTsKKwkJKmVtcHR5ID0gZmFsc2U7 CisJCXJldHVybiAoRGF0dW0pIDA7CisJfQorCisJY291bnQgPSBKc29uVmFsdWVMaXN0TGVu Z3RoKCZmb3VuZCk7CisKKwlmaXJzdCA9IGNvdW50ID8gSnNvblZhbHVlTGlzdEhlYWQoJmZv dW5kKSA6IE5VTEw7CisKKwlpZiAoIWZpcnN0KQorCQl3cmFwID0gZmFsc2U7CisJZWxzZSBp ZiAod3JhcHBlciA9PSBKU1dfTk9ORSkKKwkJd3JhcCA9IGZhbHNlOworCWVsc2UgaWYgKHdy YXBwZXIgPT0gSlNXX1VOQ09ORElUSU9OQUwpCisJCXdyYXAgPSB0cnVlOworCWVsc2UgaWYg KHdyYXBwZXIgPT0gSlNXX0NPTkRJVElPTkFMKQorCQl3cmFwID0gY291bnQgPiAxIHx8CisJ CQlJc0FKc29uYlNjYWxhcihmaXJzdCkgfHwKKwkJCShmaXJzdC0+dHlwZSA9PSBqYnZCaW5h cnkgJiYKKwkJCSBKc29uQ29udGFpbmVySXNTY2FsYXIoZmlyc3QtPnZhbC5iaW5hcnkuZGF0 YSkpOworCWVsc2UKKwl7CisJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQganNvbiB3cmFw cGVyICVkIiwgd3JhcHBlcik7CisJCXdyYXAgPSBmYWxzZTsKKwl9CisKKwlpZiAod3JhcCkK KwkJcmV0dXJuIEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKHdyYXBJdGVtc0lu QXJyYXkoJmZvdW5kKSkpOworCisJaWYgKGNvdW50ID4gMSkKKwl7CisJCWlmIChlcnJvcikK KwkJeworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CisJCX0KKwor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTU9SRV9USEFOX09ORV9T UUxfSlNPTl9JVEVNKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBK U09OX1FVRVJZIHNob3VsZCByZXR1cm4gIgorCQkJCQkJInNpbmdsZXRvbiBpdGVtIHdpdGhv dXQgd3JhcHBlciIpLAorCQkJCSBlcnJoaW50KCJ1c2UgV0lUSCBXUkFQUEVSIGNsYXVzZSB0 byB3cmFwIFNRTC9KU09OIGl0ZW0gIgorCQkJCQkJICJzZXF1ZW5jZSBpbnRvIGFycmF5Iikp KTsKKwl9CisKKwlpZiAoZmlyc3QpCisJCXJldHVybiBKc29uYlBHZXREYXR1bShKc29uYlZh bHVlVG9Kc29uYihmaXJzdCkpOworCisJKmVtcHR5ID0gdHJ1ZTsKKwlyZXR1cm4gUG9pbnRl ckdldERhdHVtKE5VTEwpOworfQorCitKc29uYlZhbHVlICoKK0pzb25QYXRoVmFsdWUoRGF0 dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAqZW1wdHksIGJvb2wgKmVycm9yLCBMaXN0ICp2 YXJzKQoreworCUpzb25iVmFsdWUgICAqcmVzOworCUpzb25WYWx1ZUxpc3QgZm91bmQgPSB7 IDAgfTsKKwlKc29uUGF0aEV4ZWNSZXN1bHQganBlciBQR19VU0VEX0ZPUl9BU1NFUlRTX09O TFk7CisJaW50CQkJY291bnQ7CisKKwlqcGVyID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJz LCBFdmFsSnNvblBhdGhWYXIsIERhdHVtR2V0SnNvbmJQKGpiKSwgIWVycm9yLAorCQkJCQkJ ICAgJmZvdW5kLCB0cnVlKTsKKworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IoanBl cikpOworCisJaWYgKGVycm9yICYmIGpwZXJJc0Vycm9yKGpwZXIpKQorCXsKKwkJKmVycm9y ID0gdHJ1ZTsKKwkJKmVtcHR5ID0gZmFsc2U7CisJCXJldHVybiBOVUxMOworCX0KKworCWNv dW50ID0gSnNvblZhbHVlTGlzdExlbmd0aCgmZm91bmQpOworCisJKmVtcHR5ID0gIWNvdW50 OworCisJaWYgKCplbXB0eSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoY291bnQgPiAxKQor CXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0cnVlOworCQkJcmV0dXJuIE5V TEw7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTU9S RV9USEFOX09ORV9TUUxfSlNPTl9JVEVNKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGggZXhw cmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gIgorCQkJCQkJInNpbmdsZXRv biBzY2FsYXIgaXRlbSIpKSk7CisJfQorCisJcmVzID0gSnNvblZhbHVlTGlzdEhlYWQoJmZv dW5kKTsKKworCWlmIChyZXMtPnR5cGUgPT0gamJ2QmluYXJ5ICYmCisJCUpzb25Db250YWlu ZXJJc1NjYWxhcihyZXMtPnZhbC5iaW5hcnkuZGF0YSkpCisJCUpzb25iRXh0cmFjdFNjYWxh cihyZXMtPnZhbC5iaW5hcnkuZGF0YSwgcmVzKTsKKworCWlmICghSXNBSnNvbmJTY2FsYXIo cmVzKSkKKwl7CisJCWlmIChlcnJvcikKKwkJeworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJl dHVybiBOVUxMOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX1NRTF9KU09OX1NDQUxBUl9SRVFVSVJFRCksCisJCQkJIGVycm1zZygiSlNPTiBwYXRo IGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuICIKKwkJCQkJCSJzaW5n bGV0b24gc2NhbGFyIGl0ZW0iKSkpOworCX0KKworCWlmIChyZXMtPnR5cGUgPT0gamJ2TnVs bCkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gcmVzOworfQorCitzdGF0aWMgdm9pZAor SnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0oSnNvbmJWYWx1ZSAqamJ2LCBEYXR1bSBudW0p Cit7CisJamJ2LT50eXBlID0gamJ2TnVtZXJpYzsKKwlqYnYtPnZhbC5udW1lcmljID0gRGF0 dW1HZXROdW1lcmljKG51bSk7Cit9CisKK3ZvaWQKK0pzb25JdGVtRnJvbURhdHVtKERhdHVt IHZhbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzb25iVmFsdWUgKnJlcykKK3sKKwlz d2l0Y2ggKHR5cGlkKQorCXsKKwkJY2FzZSBCT09MT0lEOgorCQkJcmVzLT50eXBlID0gamJ2 Qm9vbDsKKwkJCXJlcy0+dmFsLmJvb2xlYW4gPSBEYXR1bUdldEJvb2wodmFsKTsKKwkJCWJy ZWFrOworCQljYXNlIE5VTUVSSUNPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1 bShyZXMsIHZhbCk7CisJCQlicmVhazsKKwkJY2FzZSBJTlQyT0lEOgorCQkJSnNvbmJWYWx1 ZUluaXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGludDJfbnVtZXJp YywgdmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBJTlQ0T0lEOgorCQkJSnNvbmJWYWx1ZUlu aXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGludDRfbnVtZXJpYywg dmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBJTlQ4T0lEOgorCQkJSnNvbmJWYWx1ZUluaXRO dW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGludDhfbnVtZXJpYywgdmFs KSk7CisJCQlicmVhazsKKwkJY2FzZSBGTE9BVDRPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51 bWVyaWNEYXR1bShyZXMsIERpcmVjdEZ1bmN0aW9uQ2FsbDEoZmxvYXQ0X251bWVyaWMsIHZh bCkpOworCQkJYnJlYWs7CisJCWNhc2UgRkxPQVQ4T0lEOgorCQkJSnNvbmJWYWx1ZUluaXRO dW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGZsb2F0OF9udW1lcmljLCB2 YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIFRFWFRPSUQ6CisJCWNhc2UgVkFSQ0hBUk9JRDoK KwkJCXJlcy0+dHlwZSA9IGpidlN0cmluZzsKKwkJCXJlcy0+dmFsLnN0cmluZy52YWwgPSBW QVJEQVRBX0FOWSh2YWwpOworCQkJcmVzLT52YWwuc3RyaW5nLmxlbiA9IFZBUlNJWkVfQU5Z X0VYSERSKHZhbCk7CisJCQlicmVhazsKKwkJY2FzZSBEQVRFT0lEOgorCQljYXNlIFRJTUVP SUQ6CisJCWNhc2UgVElNRVRaT0lEOgorCQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJY2FzZSBU SU1FU1RBTVBUWk9JRDoKKwkJCXJlcy0+dHlwZSA9IGpidkRhdGV0aW1lOworCQkJcmVzLT52 YWwuZGF0ZXRpbWUudmFsdWUgPSB2YWw7CisJCQlyZXMtPnZhbC5kYXRldGltZS50eXBpZCA9 IHR5cGlkOworCQkJcmVzLT52YWwuZGF0ZXRpbWUudHlwbW9kID0gdHlwbW9kOworCQkJcmVz LT52YWwuZGF0ZXRpbWUudHogPSAwOworCQkJYnJlYWs7CisJCWNhc2UgSlNPTkJPSUQ6CisJ CQl7CisJCQkJSnNvbmJWYWx1ZSAqamJ2ID0gcmVzOworCQkJCUpzb25iCSAgICpqYiA9IERh dHVtR2V0SnNvbmJQKHZhbCk7CisKKwkJCQlpZiAoSnNvbkNvbnRhaW5lcklzU2NhbGFyKCZq Yi0+cm9vdCkpCisJCQkJeworCQkJCQlib29sCQlyZXMgUEdfVVNFRF9GT1JfQVNTRVJUU19P TkxZOworCisJCQkJCXJlcyA9IEpzb25iRXh0cmFjdFNjYWxhcigmamItPnJvb3QsIGpidik7 CisJCQkJCUFzc2VydChyZXMpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCUpzb25iSW5pdEJp bmFyeShqYnYsIGpiKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBKU09OT0lEOgorCQkJ eworCQkJCXRleHQJICAgKnR4dCA9IERhdHVtR2V0VGV4dFAodmFsKTsKKwkJCQljaGFyCSAg ICpzdHIgPSB0ZXh0X3RvX2NzdHJpbmcodHh0KTsKKwkJCQlKc29uYgkgICAqamIgPQorCQkJ CQlEYXR1bUdldEpzb25iUChEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLAorCQkJCQkJ CQkJCQkJCSAgIENTdHJpbmdHZXREYXR1bShzdHIpKSk7CisKKwkJCQlwZnJlZShzdHIpOwor CisJCQkJSnNvbkl0ZW1Gcm9tRGF0dW0oSnNvbmJQR2V0RGF0dW0oamIpLCBKU09OQk9JRCwg LTEsIHJlcyk7CisJCQkJYnJlYWs7CisJCQl9CisJCWRlZmF1bHQ6CisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQkJIGVycm1zZygib25seSBib29sLCBudW1lcmljIGFuZCB0ZXh0IHR5cGVzIGNvdWxk IGJlICIKKwkJCQkJCQkiY2FzdGVkIHRvIHN1cHBvcnRlZCBqc29ucGF0aCB0eXBlcy4iKSkp OworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBiMTY1MjZlNjVl Li5iYzViNTQ1ZmQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC00NTcs NiArNDU3LDEyIEBAIHN0YXRpYyB2b2lkIGdldF9jb2VyY2lvbl9leHByKE5vZGUgKmFyZywg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgTm9kZSAqcGFyZW50Tm9kZSk7 CiBzdGF0aWMgdm9pZCBnZXRfY29uc3RfZXhwcihDb25zdCAqY29uc3R2YWwsIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCwKIAkJCQkJCSAgIGludCBzaG93dHlwZSk7CitzdGF0aWMgdm9p ZCBnZXRfanNvbl9jb25zdHJ1Y3RvcihKc29uQ29uc3RydWN0b3JFeHByICpjdG9yLAorCQkJ CQkJCQkgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCk7Citz dGF0aWMgdm9pZCBnZXRfanNvbl9hZ2dfY29uc3RydWN0b3IoSnNvbkNvbnN0cnVjdG9yRXhw ciAqY3RvciwKKwkJCQkJCQkJCSBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJCQkJ CQkgY29uc3QgY2hhciAqZnVuY25hbWUsCisJCQkJCQkJCQkgYm9vbCBpc19qc29uX29iamVj dGFnZyk7CiBzdGF0aWMgdm9pZCBnZXRfY29uc3RfY29sbGF0aW9uKENvbnN0ICpjb25zdHZh bCwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIHNpbXBsZV9xdW90 ZV9saXRlcmFsKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICp2YWwpOwogc3RhdGljIHZv aWQgZ2V0X3N1YmxpbmtfZXhwcihTdWJMaW5rICpzdWJsaW5rLCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQpOwpAQCAtNDkwLDYgKzQ5Niw4IEBAIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9x dWFsaWZpZWRfdHlwZV9uYW1lKE9pZCB0eXBpZCk7CiBzdGF0aWMgdGV4dCAqc3RyaW5nX3Rv X3RleHQoY2hhciAqc3RyKTsKIHN0YXRpYyBjaGFyICpmbGF0dGVuX3JlbG9wdGlvbnMoT2lk IHJlbGlkKTsKIHN0YXRpYyB2b2lkIGdldF9yZWxvcHRpb25zKFN0cmluZ0luZm8gYnVmLCBE YXR1bSByZWxvcHRpb25zKTsKK3N0YXRpYyB2b2lkIGdldF9qc29uX3BhdGhfc3BlYyhOb2Rl ICpwYXRoX3NwZWMsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkJCQkgICBib29s IHNob3dpbXBsaWNpdCk7CiAKICNkZWZpbmUgb25seV9tYXJrZXIocnRlKSAgKChydGUpLT5p bmggPyAiIiA6ICJPTkxZICIpCiAKQEAgLTYyNDUsNyArNjI1Myw4IEBAIGdldF9ydWxlX3Nv cnRncm91cGNsYXVzZShJbmRleCByZWYsIExpc3QgKnRsaXN0LCBib29sIGZvcmNlX2NvbG5v LAogCQlib29sCQluZWVkX3BhcmVuID0gKFBSRVRUWV9QQVJFTihjb250ZXh0KQogCQkJCQkJ CQkgIHx8IElzQShleHByLCBGdW5jRXhwcikKIAkJCQkJCQkJICB8fCBJc0EoZXhwciwgQWdn cmVmKQotCQkJCQkJCQkgIHx8IElzQShleHByLCBXaW5kb3dGdW5jKSk7CisJCQkJCQkJCSAg fHwgSXNBKGV4cHIsIFdpbmRvd0Z1bmMpCisJCQkJCQkJCSAgfHwgSXNBKGV4cHIsIEpzb25D b25zdHJ1Y3RvckV4cHIpKTsKIAogCQlpZiAobmVlZF9wYXJlbikKIAkJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJygnKTsKQEAgLTgwOTEsNiArODEwMCw4IEBAIGlz U2ltcGxlTm9kZShOb2RlICpub2RlLCBOb2RlICpwYXJlbnROb2RlLCBpbnQgcHJldHR5Rmxh Z3MpCiAJCWNhc2UgVF9BZ2dyZWY6CiAJCWNhc2UgVF9XaW5kb3dGdW5jOgogCQljYXNlIFRf RnVuY0V4cHI6CisJCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgorCQljYXNlIFRfSnNv bkV4cHI6CiAJCQkvKiBmdW5jdGlvbi1saWtlOiBuYW1lKC4uKSBvciBuYW1lWy4uXSAqLwog CQkJcmV0dXJuIHRydWU7CiAKQEAgLTgxODQsNiArODE5NSw3IEBAIGlzU2ltcGxlTm9kZShO b2RlICpub2RlLCBOb2RlICpwYXJlbnROb2RlLCBpbnQgcHJldHR5RmxhZ3MpCiAJCWNhc2Ug VF9OdWxsVGVzdDoKIAkJY2FzZSBUX0Jvb2xlYW5UZXN0OgogCQljYXNlIFRfRGlzdGluY3RF eHByOgorCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJc3dpdGNoIChub2RlVGFnKHBh cmVudE5vZGUpKQogCQkJewogCQkJCWNhc2UgVF9GdW5jRXhwcjoKQEAgLTgyMDcsNiArODIx OSw3IEBAIGlzU2ltcGxlTm9kZShOb2RlICpub2RlLCBOb2RlICpwYXJlbnROb2RlLCBpbnQg cHJldHR5RmxhZ3MpCiAJCQkJY2FzZSBUX0FnZ3JlZjoJLyogb3duIHBhcmVudGhlc2VzICov CiAJCQkJY2FzZSBUX1dpbmRvd0Z1bmM6CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCWNh c2UgVF9DYXNlRXhwcjoJLyogb3RoZXIgc2VwYXJhdG9ycyAqLworCQkJCWNhc2UgVF9Kc29u RXhwcjogLyogb3duIHBhcmVudGhlc2VzICovCiAJCQkJCXJldHVybiB0cnVlOwogCQkJCWRl ZmF1bHQ6CiAJCQkJCXJldHVybiBmYWxzZTsKQEAgLTgyNjIsNiArODI3NSwxMSBAQCBpc1Np bXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9kZSAqcGFyZW50Tm9kZSwgaW50IHByZXR0eUZsYWdz KQogCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CiAKKwkJY2FzZSBUX0pzb25WYWx1ZUV4cHI6 CisJCQkvKiBtYXliZSBzaW1wbGUsIGNoZWNrIGFyZ3MgKi8KKwkJCXJldHVybiBpc1NpbXBs ZU5vZGUoKE5vZGUgKikgKChKc29uVmFsdWVFeHByICopIG5vZGUpLT5yYXdfZXhwciwKKwkJ CQkJCQkJbm9kZSwgcHJldHR5RmxhZ3MpOworCiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAl9 CkBAIC04MzY4LDYgKzgzODYsMTIxIEBAIGdldF9ydWxlX2V4cHJfcGFyZW4oTm9kZSAqbm9k ZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogfQogCiAKKy8qCisgKiBnZXRfanNvbl9w YXRoX3NwZWMJCS0gUGFyc2UgYmFjayBhIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uCisgKi8K K3N0YXRpYyB2b2lkCitnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQoreworCWlmIChJc0Eo cGF0aF9zcGVjLCBDb25zdCkpCisJCWdldF9jb25zdF9leHByKChDb25zdCAqKSBwYXRoX3Nw ZWMsIGNvbnRleHQsIC0xKTsKKwllbHNlCisJCWdldF9ydWxlX2V4cHIocGF0aF9zcGVjLCBj b250ZXh0LCBzaG93aW1wbGljaXQpOworfQorCisvKgorICogZ2V0X2pzb25fZm9ybWF0CQkJ LSBQYXJzZSBiYWNrIGEgSnNvbkZvcm1hdCBub2RlCisgKi8KK3N0YXRpYyB2b2lkCitnZXRf anNvbl9mb3JtYXQoSnNvbkZvcm1hdCAqZm9ybWF0LCBTdHJpbmdJbmZvIGJ1ZikKK3sKKwlp ZiAoZm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCkKKwkJcmV0dXJu OworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsCisJCQkJCQkgICBmb3JtYXQtPmZv cm1hdF90eXBlID09IEpTX0ZPUk1BVF9KU09OQiA/CisJCQkJCQkgICAiIEZPUk1BVCBKU09O QiIgOiAiIEZPUk1BVCBKU09OIik7CisKKwlpZiAoZm9ybWF0LT5lbmNvZGluZyAhPSBKU19F TkNfREVGQVVMVCkKKwl7CisJCWNvbnN0IGNoYXIgKmVuY29kaW5nID0KKwkJCWZvcm1hdC0+ ZW5jb2RpbmcgPT0gSlNfRU5DX1VURjE2ID8gIlVURjE2IiA6CisJCQlmb3JtYXQtPmVuY29k aW5nID09IEpTX0VOQ19VVEYzMiA/ICJVVEYzMiIgOiAiVVRGOCI7CisKKwkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIgRU5DT0RJTkcgJXMiLCBlbmNvZGluZyk7CisJfQorfQorCisvKgor ICogZ2V0X2pzb25fcmV0dXJuaW5nCQktIFBhcnNlIGJhY2sgYSBKc29uUmV0dXJuaW5nIHN0 cnVjdHVyZQorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fcmV0dXJuaW5nKEpzb25SZXR1 cm5pbmcgKnJldHVybmluZywgU3RyaW5nSW5mbyBidWYsCisJCQkJICAgYm9vbCBqc29uX2Zv cm1hdF9ieV9kZWZhdWx0KQoreworCWlmICghT2lkSXNWYWxpZChyZXR1cm5pbmctPnR5cGlk KSkKKwkJcmV0dXJuOworCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgUkVUVVJOSU5HICVz IiwKKwkJCQkJIGZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZChyZXR1cm5pbmctPnR5cGlkLAor CQkJCQkJCQkJCQkgIHJldHVybmluZy0+dHlwbW9kKSk7CisKKwlpZiAoIWpzb25fZm9ybWF0 X2J5X2RlZmF1bHQgfHwKKwkJcmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlICE9CisJ CQkocmV0dXJuaW5nLT50eXBpZCA9PSBKU09OQk9JRCA/IEpTX0ZPUk1BVF9KU09OQiA6IEpT X0ZPUk1BVF9KU09OKSkKKwkJZ2V0X2pzb25fZm9ybWF0KHJldHVybmluZy0+Zm9ybWF0LCBi dWYpOworfQorCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fYmVoYXZpb3IoSnNvbkJlaGF2aW9y ICpiZWhhdmlvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAorCQkJCSAgY29uc3QgY2hh ciAqb24pCit7CisJLyoKKwkgKiBUaGUgb3JkZXIgb2YgYXJyYXkgZWxlbWVudHMgbXVzdCBj b3JyZXNwb25kIHRvIHRoZSBvcmRlciBvZgorCSAqIEpzb25CZWhhdmlvclR5cGUgbWVtYmVy cy4KKwkgKi8KKwljb25zdCBjaGFyICpiZWhhdmlvcl9uYW1lc1tdID0KKwl7CisJCSIgTlVM TCIsCisJCSIgRVJST1IiLAorCQkiIEVNUFRZIiwKKwkJIiBUUlVFIiwKKwkJIiBGQUxTRSIs CisJCSIgVU5LTk9XTiIsCisJCSIgRU1QVFkgQVJSQVkiLAorCQkiIEVNUFRZIE9CSkVDVCIs CisJCSIgREVGQVVMVCAiCisJfTsKKworCWlmICgoaW50KSBiZWhhdmlvci0+YnR5cGUgPCAw IHx8IGJlaGF2aW9yLT5idHlwZSA+PSBsZW5ndGhvZihiZWhhdmlvcl9uYW1lcykpCisJCWVs b2coRVJST1IsICJpbnZhbGlkIGpzb24gYmVoYXZpb3IgdHlwZTogJWQiLCBiZWhhdmlvci0+ YnR5cGUpOworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsIGJlaGF2 aW9yX25hbWVzW2JlaGF2aW9yLT5idHlwZV0pOworCisJaWYgKGJlaGF2aW9yLT5idHlwZSA9 PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpCisJCWdldF9ydWxlX2V4cHIoYmVoYXZpb3ItPmRl ZmF1bHRfZXhwciwgY29udGV4dCwgZmFsc2UpOworCisJYXBwZW5kU3RyaW5nSW5mbyhjb250 ZXh0LT5idWYsICIgT04gJXMiLCBvbik7Cit9CisKKy8qCisgKiBnZXRfanNvbl9leHByX29w dGlvbnMKKyAqCisgKiBQYXJzZSBiYWNrIGNvbW1vbiBvcHRpb25zIGZvciBKU09OX1FVRVJZ LCBKU09OX1ZBTFVFLCBKU09OX0VYSVNUUy4KKyAqLworc3RhdGljIHZvaWQKK2dldF9qc29u X2V4cHJfb3B0aW9ucyhKc29uRXhwciAqanNleHByLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0X2JlaGF2aW9yKQoreworCWlm IChqc2V4cHItPm9wID09IElTX0pTT05fUVVFUlkpCisJeworCQlpZiAoanNleHByLT53cmFw cGVyID09IEpTV19DT05ESVRJT05BTCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+ YnVmLCAiIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiIpOworCQllbHNlIGlmIChqc2V4cHIt PndyYXBwZXIgPT0gSlNXX1VOQ09ORElUSU9OQUwpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGNv bnRleHQtPmJ1ZiwgIiBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiIpOworCisJCWlmIChq c2V4cHItPm9taXRfcXVvdGVzKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYs ICIgT01JVCBRVU9URVMiKTsKKwl9CisKKwlpZiAoanNleHByLT5vcCAhPSBJU19KU09OX0VY SVNUUyAmJgorCQlqc2V4cHItPm9uX2VtcHR5LT5idHlwZSAhPSBkZWZhdWx0X2JlaGF2aW9y KQorCQlnZXRfanNvbl9iZWhhdmlvcihqc2V4cHItPm9uX2VtcHR5LCBjb250ZXh0LCAiRU1Q VFkiKTsKKworCWlmIChqc2V4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBkZWZhdWx0X2JlaGF2 aW9yKQorCQlnZXRfanNvbl9iZWhhdmlvcihqc2V4cHItPm9uX2Vycm9yLCBjb250ZXh0LCAi RVJST1IiKTsKK30KKwogLyogLS0tLS0tLS0tLQogICogZ2V0X3J1bGVfZXhwcgkJCS0gUGFy c2UgYmFjayBhbiBleHByZXNzaW9uCiAgKgpAQCAtOTUyNyw2ICs5NjYwLDExMCBAQCBnZXRf cnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCX0K IAkJCWJyZWFrOwogCisKKwkJY2FzZSBUX0pzb25WYWx1ZUV4cHI6CisJCQl7CisJCQkJSnNv blZhbHVlRXhwciAqanZlID0gKEpzb25WYWx1ZUV4cHIgKikgbm9kZTsKKworCQkJCWdldF9y dWxlX2V4cHIoKE5vZGUgKikganZlLT5yYXdfZXhwciwgY29udGV4dCwgZmFsc2UpOworCQkJ CWdldF9qc29uX2Zvcm1hdChqdmUtPmZvcm1hdCwgY29udGV4dC0+YnVmKTsKKwkJCX0KKwkJ CWJyZWFrOworCisJCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgorCQkJZ2V0X2pzb25f Y29uc3RydWN0b3IoKEpzb25Db25zdHJ1Y3RvckV4cHIgKikgbm9kZSwgY29udGV4dCwgZmFs c2UpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToKKwkJCXsKKwkJ CQlKc29uSXNQcmVkaWNhdGUgKnByZWQgPSAoSnNvbklzUHJlZGljYXRlICopIG5vZGU7CisK KwkJCQlpZiAoIVBSRVRUWV9QQVJFTihjb250ZXh0KSkKKwkJCQkJYXBwZW5kU3RyaW5nSW5m b0NoYXIoY29udGV4dC0+YnVmLCAnKCcpOworCisJCQkJZ2V0X3J1bGVfZXhwcl9wYXJlbihw cmVkLT5leHByLCBjb250ZXh0LCB0cnVlLCBub2RlKTsKKworCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoY29udGV4dC0+YnVmLCAiIElTIEpTT04iKTsKKworCQkJCXN3aXRjaCAocHJl ZC0+dmFsdWVfdHlwZSkKKwkJCQl7CisJCQkJCWNhc2UgSlNfVFlQRV9TQ0FMQVI6CisJCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgIiBTQ0FMQVIiKTsKKwkJ CQkJCWJyZWFrOworCQkJCQljYXNlIEpTX1RZUEVfQVJSQVk6CisJCQkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgIiBBUlJBWSIpOworCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgSlNfVFlQRV9PQkpFQ1Q6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KGNvbnRleHQtPmJ1ZiwgIiBPQkpFQ1QiKTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0 OgorCQkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYgKHByZWQtPnVuaXF1ZV9rZXlzKQor CQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgIiBXSVRIIFVOSVFV RSBLRVlTIik7CisKKwkJCQlpZiAoIVBSRVRUWV9QQVJFTihjb250ZXh0KSkKKwkJCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnKScpOworCQkJfQorCQkJYnJlYWs7 CisKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0g KEpzb25FeHByICopIG5vZGU7CisKKwkJCQlzd2l0Y2ggKGpleHByLT5vcCkKKwkJCQl7CisJ CQkJCWNhc2UgSVNfSlNPTl9RVUVSWToKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLCAiSlNPTl9RVUVSWSgiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIElTX0pTT05f VkFMVUU6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkpTT05fVkFMVUUo Iik7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBJU19KU09OX0VYSVNUUzoKKwkJCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9FWElTVFMoIik7CisJCQkJCQlicmVh azsKKwkJCQl9CisKKwkJCQlnZXRfcnVsZV9leHByKGpleHByLT5mb3JtYXR0ZWRfZXhwciwg Y29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLCAiLCAiKTsKKworCQkJCWdldF9qc29uX3BhdGhfc3BlYyhqZXhwci0+cGF0aF9zcGVj LCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJCQkJaWYgKGpleHByLT5wYXNzaW5nX3Zh bHVlcykKKwkJCQl7CisJCQkJCUxpc3RDZWxsICAgKmxjMSwgKmxjMjsKKwkJCQkJYm9vbAkJ bmVlZGNvbW1hID0gZmFsc2U7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICIgUEFTU0lORyAiKTsKKworCQkJCQlmb3Jib3RoKGxjMSwgamV4cHItPnBhc3NpbmdfbmFt ZXMsCisJCQkJCQkJbGMyLCBqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJCQkJCXsKKwkJCQkJ CWlmIChuZWVkY29tbWEpCisJCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIs ICIpOworCQkJCQkJbmVlZGNvbW1hID0gdHJ1ZTsKKworCQkJCQkJZ2V0X3J1bGVfZXhwcigo Tm9kZSAqKSBsZmlyc3QobGMyKSwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwkJCQkJCWFw cGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzIiwKKwkJCQkJCQkJCQkgKChTdHJpbmcgKikg bGZpcnN0X25vZGUoU3RyaW5nLCBsYzEpKS0+c3ZhbCk7CisJCQkJCX0KKwkJCQl9CisKKwkJ CQlpZiAoamV4cHItPm9wICE9IElTX0pTT05fRVhJU1RTIHx8CisJCQkJCWpleHByLT5yZXR1 cm5pbmctPnR5cGlkICE9IEJPT0xPSUQpCisJCQkJCWdldF9qc29uX3JldHVybmluZyhqZXhw ci0+cmV0dXJuaW5nLCBjb250ZXh0LT5idWYsCisJCQkJCQkJCQkgICBqZXhwci0+b3AgPT0g SVNfSlNPTl9RVUVSWSk7CisKKwkJCQlnZXRfanNvbl9leHByX29wdGlvbnMoamV4cHIsIGNv bnRleHQsCisJCQkJCQkJCQkgIGpleHByLT5vcCA9PSBJU19KU09OX0VYSVNUUyA/CisJCQkJ CQkJCQkgIEpTT05fQkVIQVZJT1JfRkFMU0UgOiBKU09OX0JFSEFWSU9SX05VTEwpOworCisJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIpIik7CisJCQl9CisJCQlicmVhazsK KwogCQljYXNlIFRfTGlzdDoKIAkJCXsKIAkJCQljaGFyCSAgICpzZXA7CkBAIC05NjUwLDYg Kzk4ODcsNyBAQCBsb29rc19saWtlX2Z1bmN0aW9uKE5vZGUgKm5vZGUpCiAJCWNhc2UgVF9N aW5NYXhFeHByOgogCQljYXNlIFRfU1FMVmFsdWVGdW5jdGlvbjoKIAkJY2FzZSBUX1htbEV4 cHI6CisJCWNhc2UgVF9Kc29uRXhwcjoKIAkJCS8qIHRoZXNlIGFyZSBhbGwgYWNjZXB0ZWQg YnkgZnVuY19leHByX2NvbW1vbl9zdWJleHByICovCiAJCQlyZXR1cm4gdHJ1ZTsKIAkJZGVm YXVsdDoKQEAgLTk3OTUsMTcgKzEwMDMzLDEwMSBAQCBnZXRfZnVuY19leHByKEZ1bmNFeHBy ICpleHByLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJYXBwZW5kU3RyaW5nSW5mb0No YXIoYnVmLCAnKScpOwogfQogCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fY29uc3RydWN0b3Jf b3B0aW9ucyhKc29uQ29uc3RydWN0b3JFeHByICpjdG9yLCBTdHJpbmdJbmZvIGJ1ZikKK3sK KwlpZiAoY3Rvci0+YWJzZW50X29uX251bGwpCisJeworCQlpZiAoY3Rvci0+dHlwZSA9PSBK U0NUT1JfSlNPTl9PQkpFQ1QgfHwKKwkJCWN0b3ItPnR5cGUgPT0gSlNDVE9SX0pTT05fT0JK RUNUQUdHKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgQUJTRU5UIE9OIE5V TEwiKTsKKwl9CisJZWxzZQorCXsKKwkJaWYgKGN0b3ItPnR5cGUgPT0gSlNDVE9SX0pTT05f QVJSQVkgfHwKKwkJCWN0b3ItPnR5cGUgPT0gSlNDVE9SX0pTT05fQVJSQVlBR0cpCisJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBOVUxMIE9OIE5VTEwiKTsKKwl9CisKKwlp ZiAoY3Rvci0+dW5pcXVlKQorCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBXSVRI IFVOSVFVRSBLRVlTIik7CisKKwlpZiAoISgoY3Rvci0+dHlwZSA9PSBKU0NUT1JfSlNPTl9Q QVJTRSB8fAorCQkgICBjdG9yLT50eXBlID09IEpTQ1RPUl9KU09OX1NDQUxBUikgJiYKKwkJ ICBjdG9yLT5yZXR1cm5pbmctPnR5cGlkID09IEpTT05PSUQpKQorCQlnZXRfanNvbl9yZXR1 cm5pbmcoY3Rvci0+cmV0dXJuaW5nLCBidWYsIHRydWUpOworfQorCitzdGF0aWMgdm9pZAor Z2V0X2pzb25fY29uc3RydWN0b3IoSnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0LAorCQkJCQkgYm9vbCBzaG93aW1wbGljaXQpCit7CisJU3Ry aW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CisJY29uc3QgY2hhciAqZnVuY25hbWU7CisJ aW50CQkJbmFyZ3M7CisJTGlzdENlbGwgICAqbGM7CisKKwlzd2l0Y2ggKGN0b3ItPnR5cGUp CisJeworCQljYXNlIEpTQ1RPUl9KU09OX1BBUlNFOgorCQkJZnVuY25hbWUgPSAiSlNPTiI7 CisJCQlicmVhazsKKwkJY2FzZSBKU0NUT1JfSlNPTl9TQ0FMQVI6CisJCQlmdW5jbmFtZSA9 ICJKU09OX1NDQUxBUiI7CisJCQlicmVhazsKKwkJY2FzZSBKU0NUT1JfSlNPTl9TRVJJQUxJ WkU6CisJCQlmdW5jbmFtZSA9ICJKU09OX1NFUklBTElaRSI7CisJCQlicmVhazsKKwkJY2Fz ZSBKU0NUT1JfSlNPTl9PQkpFQ1Q6CisJCQlmdW5jbmFtZSA9ICJKU09OX09CSkVDVCI7CisJ CQlicmVhazsKKwkJY2FzZSBKU0NUT1JfSlNPTl9BUlJBWToKKwkJCWZ1bmNuYW1lID0gIkpT T05fQVJSQVkiOworCQkJYnJlYWs7CisJCWNhc2UgSlNDVE9SX0pTT05fT0JKRUNUQUdHOgor CQkJcmV0dXJuIGdldF9qc29uX2FnZ19jb25zdHJ1Y3RvcihjdG9yLCBjb250ZXh0LCAiSlNP Tl9PQkpFQ1RBR0ciLCB0cnVlKTsKKwkJY2FzZSBKU0NUT1JfSlNPTl9BUlJBWUFHRzoKKwkJ CXJldHVybiBnZXRfanNvbl9hZ2dfY29uc3RydWN0b3IoY3RvciwgY29udGV4dCwgIkpTT05f QVJSQVlBR0ciLCBmYWxzZSk7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBKc29uQ29uc3RydWN0b3JFeHByVHlwZSAlZCIsIGN0b3ItPnR5cGUpOworCX0KKworCWFw cGVuZFN0cmluZ0luZm8oYnVmLCAiJXMoIiwgZnVuY25hbWUpOworCisJbmFyZ3MgPSAwOwor CWZvcmVhY2gobGMsIGN0b3ItPmFyZ3MpCisJeworCQlpZiAobmFyZ3MgPiAwKQorCQl7CisJ CQljb25zdCBjaGFyICpzZXAgPSBjdG9yLT50eXBlID09IEpTQ1RPUl9KU09OX09CSkVDVCAm JgorCQkJCShuYXJncyAlIDIpICE9IDAgPyAiIDogIiA6ICIsICI7CisKKwkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOworCQl9CisKKwkJZ2V0X3J1bGVfZXhwcigoTm9k ZSAqKSBsZmlyc3QobGMpLCBjb250ZXh0LCB0cnVlKTsKKworCQluYXJncysrOworCX0KKwor CWdldF9qc29uX2NvbnN0cnVjdG9yX29wdGlvbnMoY3RvciwgYnVmKTsKKworCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiKSIpOworfQorCisKIC8qCi0gKiBnZXRfYWdnX2V4cHIJCQktIFBh cnNlIGJhY2sgYW4gQWdncmVmIG5vZGUKKyAqIGdldF9hZ2dfZXhwcl9oZWxwZXIJCQktIFBh cnNlIGJhY2sgYW4gQWdncmVmIG5vZGUKICAqLwogc3RhdGljIHZvaWQKLWdldF9hZ2dfZXhw cihBZ2dyZWYgKmFnZ3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAotCQkJIEFnZ3Jl ZiAqb3JpZ2luYWxfYWdncmVmKQorZ2V0X2FnZ19leHByX2hlbHBlcihBZ2dyZWYgKmFnZ3Jl ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAorCQkJCQlBZ2dyZWYgKm9yaWdpbmFsX2Fn Z3JlZiwgY29uc3QgY2hhciAqZnVuY25hbWUsCisJCQkJCWNvbnN0IGNoYXIgKm9wdGlvbnMs IGJvb2wgaXNfanNvbl9vYmplY3RhZ2cpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0 LT5idWY7CiAJT2lkCQkJYXJndHlwZXNbRlVOQ19NQVhfQVJHU107CiAJaW50CQkJbmFyZ3M7 Ci0JYm9vbAkJdXNlX3ZhcmlhZGljOworCWJvb2wJCXVzZV92YXJpYWRpYyA9IGZhbHNlOwog CiAJLyoKIAkgKiBGb3IgYSBjb21iaW5pbmcgYWdncmVnYXRlLCB3ZSBsb29rIHVwIGFuZCBk ZXBhcnNlIHRoZSBjb3JyZXNwb25kaW5nCkBAIC05ODM1LDEzICsxMDE1NywxNCBAQCBnZXRf YWdnX2V4cHIoQWdncmVmICphZ2dyZWYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkv KiBFeHRyYWN0IHRoZSBhcmd1bWVudCB0eXBlcyBhcyBzZWVuIGJ5IHRoZSBwYXJzZXIgKi8K IAluYXJncyA9IGdldF9hZ2dyZWdhdGVfYXJndHlwZXMoYWdncmVmLCBhcmd0eXBlcyk7CiAK KwlpZiAoIWZ1bmNuYW1lKQorCQlmdW5jbmFtZSA9IGdlbmVyYXRlX2Z1bmN0aW9uX25hbWUo YWdncmVmLT5hZ2dmbm9pZCwgbmFyZ3MsIE5JTCwKKwkJCQkJCQkJCQkgIGFyZ3R5cGVzLCBh Z2dyZWYtPmFnZ3ZhcmlhZGljLAorCQkJCQkJCQkJCSAgJnVzZV92YXJpYWRpYywKKwkJCQkJ CQkJCQkgIGNvbnRleHQtPnNwZWNpYWxfZXhwcmtpbmQpOworCiAJLyogUHJpbnQgdGhlIGFn Z3JlZ2F0ZSBuYW1lLCBzY2hlbWEtcXVhbGlmaWVkIGlmIG5lZWRlZCAqLwotCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiJXMoJXMiLAotCQkJCQkgZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZShh Z2dyZWYtPmFnZ2Zub2lkLCBuYXJncywKLQkJCQkJCQkJCQkJTklMLCBhcmd0eXBlcywKLQkJ CQkJCQkJCQkJYWdncmVmLT5hZ2d2YXJpYWRpYywKLQkJCQkJCQkJCQkJJnVzZV92YXJpYWRp YywKLQkJCQkJCQkJCQkJY29udGV4dC0+c3BlY2lhbF9leHBya2luZCksCisJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIlcyglcyIsIGZ1bmNuYW1lLAogCQkJCQkgKGFnZ3JlZi0+YWdnZGlz dGluY3QgIT0gTklMKSA/ICJESVNUSU5DVCAiIDogIiIpOwogCiAJaWYgKEFHR0tJTkRfSVNf T1JERVJFRF9TRVQoYWdncmVmLT5hZ2draW5kKSkKQEAgLTk4NzcsNyArMTAyMDAsMTcgQEAg Z2V0X2FnZ19leHByKEFnZ3JlZiAqYWdncmVmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQs CiAJCQkJaWYgKHRsZS0+cmVzanVuaykKIAkJCQkJY29udGludWU7CiAJCQkJaWYgKGkrKyA+ IDApCi0JCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQl7CisJ CQkJCWlmIChpc19qc29uX29iamVjdGFnZykKKwkJCQkJeworCQkJCQkJaWYgKGkgPiAyKQor CQkJCQkJCWJyZWFrOyAvKiBza2lwIEFCU0VOVCBPTiBOVUxMIGFuZCBXSVRIIFVOSVFVRSBh cmdzICovCisKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIDogIik7CisJ CQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIs ICIpOworCQkJCX0KIAkJCQlpZiAodXNlX3ZhcmlhZGljICYmIGkgPT0gbmFyZ3MpCiAJCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiVkFSSUFESUMgIik7CiAJCQkJZ2V0X3J1 bGVfZXhwcihhcmcsIGNvbnRleHQsIHRydWUpOwpAQCAtOTg5MSw2ICsxMDIyNCw5IEBAIGdl dF9hZ2dfZXhwcihBZ2dyZWYgKmFnZ3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAog CQl9CiAJfQogCisJaWYgKG9wdGlvbnMpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LCBvcHRpb25zKTsKKwogCWlmIChhZ2dyZWYtPmFnZ2ZpbHRlciAhPSBOVUxMKQogCXsKIAkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIpIEZJTFRFUiAoV0hFUkUgIik7CkBAIC05 OTAwLDYgKzEwMjM2LDE2IEBAIGdldF9hZ2dfZXhwcihBZ2dyZWYgKmFnZ3JlZiwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0LAogCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsK IH0KIAorLyoKKyAqIGdldF9hZ2dfZXhwcgkJCS0gUGFyc2UgYmFjayBhbiBBZ2dyZWYgbm9k ZQorICovCitzdGF0aWMgdm9pZAorZ2V0X2FnZ19leHByKEFnZ3JlZiAqYWdncmVmLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQsIEFnZ3JlZiAqb3JpZ2luYWxfYWdncmVmKQoreworCXJl dHVybiBnZXRfYWdnX2V4cHJfaGVscGVyKGFnZ3JlZiwgY29udGV4dCwgb3JpZ2luYWxfYWdn cmVmLCBOVUxMLCBOVUxMLAorCQkJCQkJCSAgIGZhbHNlKTsKK30KKwogLyoKICAqIFRoaXMg aXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGdldF9hZ2dfZXhwcigpLiAgSXQncyB1c2VkIHdo ZW4gd2UgZGVwYXJzZQogICogYSBjb21iaW5pbmcgQWdncmVmOyByZXNvbHZlX3NwZWNpYWxf dmFybm8gbG9jYXRlcyB0aGUgY29ycmVzcG9uZGluZyBwYXJ0aWFsCkBAIC05OTE5LDEwICsx MDI2NSwxMiBAQCBnZXRfYWdnX2NvbWJpbmVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQsIHZvaWQgKmNhbGxiYWNrX2FyZykKIH0KIAogLyoKLSAqIGdldF93 aW5kb3dmdW5jX2V4cHIJLSBQYXJzZSBiYWNrIGEgV2luZG93RnVuYyBub2RlCisgKiBnZXRf d2luZG93ZnVuY19leHByX2hlbHBlcgktIFBhcnNlIGJhY2sgYSBXaW5kb3dGdW5jIG5vZGUK ICAqLwogc3RhdGljIHZvaWQKLWdldF93aW5kb3dmdW5jX2V4cHIoV2luZG93RnVuYyAqd2Z1 bmMsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKK2dldF93aW5kb3dmdW5jX2V4cHJfaGVs cGVyKFdpbmRvd0Z1bmMgKndmdW5jLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJ CQkgICBjb25zdCBjaGFyICpmdW5jbmFtZSwgY29uc3QgY2hhciAqb3B0aW9ucywKKwkJCQkJ CSAgIGJvb2wgaXNfanNvbl9vYmplY3RhZ2cpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250 ZXh0LT5idWY7CiAJT2lkCQkJYXJndHlwZXNbRlVOQ19NQVhfQVJHU107CkBAIC05OTQ2LDE2 ICsxMDI5NCwzMCBAQCBnZXRfd2luZG93ZnVuY19leHByKFdpbmRvd0Z1bmMgKndmdW5jLCBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCW5hcmdzKys7CiAJfQogCi0JYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIlcygiLAotCQkJCQkgZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZSh3ZnVu Yy0+d2luZm5vaWQsIG5hcmdzLAotCQkJCQkJCQkJCQlhcmduYW1lcywgYXJndHlwZXMsCi0J CQkJCQkJCQkJCWZhbHNlLCBOVUxMLAotCQkJCQkJCQkJCQljb250ZXh0LT5zcGVjaWFsX2V4 cHJraW5kKSk7CisJaWYgKCFmdW5jbmFtZSkKKwkJZnVuY25hbWUgPSBnZW5lcmF0ZV9mdW5j dGlvbl9uYW1lKHdmdW5jLT53aW5mbm9pZCwgbmFyZ3MsIGFyZ25hbWVzLAorCQkJCQkJCQkJ CSAgYXJndHlwZXMsIGZhbHNlLCBOVUxMLAorCQkJCQkJCQkJCSAgY29udGV4dC0+c3BlY2lh bF9leHBya2luZCk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzKCIsIGZ1bmNuYW1l KTsKKwogCS8qIHdpbnN0YXIgY2FuIGJlIHNldCBvbmx5IGluIHplcm8tYXJndW1lbnQgYWdn cmVnYXRlcyAqLwogCWlmICh3ZnVuYy0+d2luc3RhcikKIAkJYXBwZW5kU3RyaW5nSW5mb0No YXIoYnVmLCAnKicpOwogCWVsc2UKLQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSB3ZnVuYy0+ YXJncywgY29udGV4dCwgdHJ1ZSk7CisJeworCQlpZiAoaXNfanNvbl9vYmplY3RhZ2cpCisJ CXsKKwkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGluaXRpYWwod2Z1bmMtPmFyZ3MpLCBj b250ZXh0LCBmYWxzZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiA6ICIp OworCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsc2Vjb25kKHdmdW5jLT5hcmdzKSwgY29u dGV4dCwgZmFsc2UpOworCQl9CisJCWVsc2UKKwkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikg d2Z1bmMtPmFyZ3MsIGNvbnRleHQsIHRydWUpOworCX0KKworCWlmIChvcHRpb25zKQorCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgb3B0aW9ucyk7CiAKIAlpZiAod2Z1bmMtPmFn Z2ZpbHRlciAhPSBOVUxMKQogCXsKQEAgLTk5OTIsNiArMTAzNTQsMTUgQEAgZ2V0X3dpbmRv d2Z1bmNfZXhwcihXaW5kb3dGdW5jICp3ZnVuYywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 KQogCX0KIH0KIAorLyoKKyAqIGdldF93aW5kb3dmdW5jX2V4cHIJLSBQYXJzZSBiYWNrIGEg V2luZG93RnVuYyBub2RlCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfd2luZG93ZnVuY19leHBy KFdpbmRvd0Z1bmMgKndmdW5jLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCit7CisJcmV0 dXJuIGdldF93aW5kb3dmdW5jX2V4cHJfaGVscGVyKHdmdW5jLCBjb250ZXh0LCBOVUxMLCBO VUxMLCBmYWxzZSk7Cit9CisKIC8qCiAgKiBnZXRfZnVuY19zcWxfc3ludGF4CQktIFBhcnNl IGJhY2sgYSBTUUwtc3ludGF4IGZ1bmN0aW9uIGNhbGwKICAqCkBAIC0xMDIzMiw2ICsxMDYw MywzMSBAQCBnZXRfZnVuY19zcWxfc3ludGF4KEZ1bmNFeHByICpleHByLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogZ2V0X2pzb25f YWdnX2NvbnN0cnVjdG9yIC0gUGFyc2UgYmFjayBhbiBhZ2dyZWdhdGUgSnNvbkNvbnN0cnVj dG9yRXhwciBub2RlCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNvbl9hZ2dfY29uc3RydWN0 b3IoSnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 LAorCQkJCQkJIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBib29sIGlzX2pzb25fb2JqZWN0YWdn KQoreworCVN0cmluZ0luZm9EYXRhIG9wdGlvbnM7CisKKwlpbml0U3RyaW5nSW5mbygmb3B0 aW9ucyk7CisJZ2V0X2pzb25fY29uc3RydWN0b3Jfb3B0aW9ucyhjdG9yLCAmb3B0aW9ucyk7 CisKKwlpZiAoSXNBKGN0b3ItPmZ1bmMsIEFnZ3JlZikpCisJCXJldHVybiBnZXRfYWdnX2V4 cHJfaGVscGVyKChBZ2dyZWYgKikgY3Rvci0+ZnVuYywgY29udGV4dCwKKwkJCQkJCQkJICAg KEFnZ3JlZiAqKSBjdG9yLT5mdW5jLAorCQkJCQkJCQkgICBmdW5jbmFtZSwgb3B0aW9ucy5k YXRhLCBpc19qc29uX29iamVjdGFnZyk7CisJZWxzZSBpZiAoSXNBKGN0b3ItPmZ1bmMsIFdp bmRvd0Z1bmMpKQorCQlyZXR1cm4gZ2V0X3dpbmRvd2Z1bmNfZXhwcl9oZWxwZXIoKFdpbmRv d0Z1bmMgKikgY3Rvci0+ZnVuYywgY29udGV4dCwKKwkJCQkJCQkJCQkgIGZ1bmNuYW1lLCBv cHRpb25zLmRhdGEsCisJCQkJCQkJCQkJICBpc19qc29uX29iamVjdGFnZyk7CisJZWxzZQor CQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uQ29uc3RydWN0b3JFeHByIHVuZGVybHlpbmcg bm9kZSB0eXBlOiAlZCIsCisJCQkgbm9kZVRhZyhjdG9yLT5mdW5jKSk7Cit9CisKIC8qIC0t LS0tLS0tLS0KICAqIGdldF9jb2VyY2lvbl9leHByCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9xdWVyeWp1bWJsZS5jCmluZGV4IGE2NzQ4N2U1ZmUuLjcxMjA4MzZjNzAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMKQEAgLTczNyw2ICs3MzcsNzUgQEAgSnVt YmxlRXhwcihKdW1ibGVTdGF0ZSAqanN0YXRlLCBOb2RlICpub2RlKQogCQkJCUp1bWJsZUV4 cHIoanN0YXRlLCAoTm9kZSAqKSBjb25mLT5leGNsUmVsVGxpc3QpOwogCQkJfQogCQkJYnJl YWs7CisJCWNhc2UgVF9Kc29uRm9ybWF0OgorCQkJeworCQkJCUpzb25Gb3JtYXQgKmZvcm1h dCA9IChKc29uRm9ybWF0ICopIG5vZGU7CisKKwkJCQlBUFBfSlVNQihmb3JtYXQtPnR5cGUp OworCQkJCUFQUF9KVU1CKGZvcm1hdC0+ZW5jb2RpbmcpOworCQkJfQorCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uUmV0dXJuaW5nOgorCQkJeworCQkJCUpzb25SZXR1cm5pbmcgKnJldHVy bmluZyA9IChKc29uUmV0dXJuaW5nICopIG5vZGU7CisKKwkJCQlKdW1ibGVFeHByKGpzdGF0 ZSwgKE5vZGUgKikgcmV0dXJuaW5nLT5mb3JtYXQpOworCQkJCUFQUF9KVU1CKHJldHVybmlu Zy0+dHlwaWQpOworCQkJCUFQUF9KVU1CKHJldHVybmluZy0+dHlwbW9kKTsKKwkJCX0KKwkJ CWJyZWFrOworCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKKwkJCXsKKwkJCQlKc29uVmFsdWVF eHByICpleHByID0gKEpzb25WYWx1ZUV4cHIgKikgbm9kZTsKKworCQkJCUp1bWJsZUV4cHIo anN0YXRlLCAoTm9kZSAqKSBleHByLT5yYXdfZXhwcik7CisJCQkJSnVtYmxlRXhwcihqc3Rh dGUsIChOb2RlICopIGV4cHItPmZvcm1hdHRlZF9leHByKTsKKwkJCQlKdW1ibGVFeHByKGpz dGF0ZSwgKE5vZGUgKikgZXhwci0+Zm9ybWF0KTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNl IFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJCXsKKwkJCQlKc29uQ29uc3RydWN0b3JFeHBy ICpjdG9yID0gKEpzb25Db25zdHJ1Y3RvckV4cHIgKikgbm9kZTsKKworCQkJCUp1bWJsZUV4 cHIoanN0YXRlLCAoTm9kZSAqKSBjdG9yLT5mdW5jKTsKKwkJCQlKdW1ibGVFeHByKGpzdGF0 ZSwgKE5vZGUgKikgY3Rvci0+Y29lcmNpb24pOworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCAo Tm9kZSAqKSBjdG9yLT5yZXR1cm5pbmcpOworCQkJCUFQUF9KVU1CKGN0b3ItPnR5cGUpOwor CQkJCUFQUF9KVU1CKGN0b3ItPnVuaXF1ZSk7CisJCQkJQVBQX0pVTUIoY3Rvci0+YWJzZW50 X29uX251bGwpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6 CisJCQl7CisJCQkJSnNvbklzUHJlZGljYXRlICpwcmVkID0gKEpzb25Jc1ByZWRpY2F0ZSAq KSBub2RlOworCisJCQkJSnVtYmxlRXhwcihqc3RhdGUsIChOb2RlICopIHByZWQtPmV4cHIp OworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAqKSBwcmVkLT5mb3JtYXQpOworCQkJ CUFQUF9KVU1CKHByZWQtPnVuaXF1ZV9rZXlzKTsKKwkJCQlBUFBfSlVNQihwcmVkLT52YWx1 ZV90eXBlKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJ CQkJSnNvbkV4cHIgICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CisKKwkJCQlBUFBf SlVNQihqZXhwci0+b3ApOworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCBqZXhwci0+Zm9ybWF0 dGVkX2V4cHIpOworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCBqZXhwci0+cGF0aF9zcGVjKTsK KwkJCQlmb3JlYWNoKHRlbXAsIGpleHByLT5wYXNzaW5nX25hbWVzKQorCQkJCXsKKwkJCQkJ QVBQX0pVTUJfU1RSSU5HKGxmaXJzdF9ub2RlKFN0cmluZywgdGVtcCktPnN2YWwpOworCQkJ CX0KKwkJCQlKdW1ibGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgamV4cHItPnBhc3NpbmdfdmFs dWVzKTsKKwkJCQlpZiAoamV4cHItPm9uX2VtcHR5KQorCQkJCXsKKwkJCQkJQVBQX0pVTUIo amV4cHItPm9uX2VtcHR5LT5idHlwZSk7CisJCQkJCUp1bWJsZUV4cHIoanN0YXRlLCBqZXhw ci0+b25fZW1wdHktPmRlZmF1bHRfZXhwcik7CisJCQkJfQorCQkJCUFQUF9KVU1CKGpleHBy LT5vbl9lcnJvci0+YnR5cGUpOworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCBqZXhwci0+b25f ZXJyb3ItPmRlZmF1bHRfZXhwcik7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0xpc3Q6 CiAJCQlmb3JlYWNoKHRlbXAsIChMaXN0ICopIG5vZGUpCiAJCQl7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5kYXQKaW5kZXggMjg0M2Y0YjQxNS4uMTkzNGYxOTMzNSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdApAQCAtNTY3LDE0ICs1NjcsMzYg QEAKICMganNvbgogeyBhZ2dmbm9pZCA9PiAnanNvbl9hZ2cnLCBhZ2d0cmFuc2ZuID0+ICdq c29uX2FnZ190cmFuc2ZuJywKICAgYWdnZmluYWxmbiA9PiAnanNvbl9hZ2dfZmluYWxmbics IGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCit7IGFnZ2Zub2lkID0+ICdqc29uX2Fn Z19zdHJpY3QnLCBhZ2d0cmFuc2ZuID0+ICdqc29uX2FnZ19zdHJpY3RfdHJhbnNmbicsCisg IGFnZ2ZpbmFsZm4gPT4gJ2pzb25fYWdnX2ZpbmFsZm4nLCBhZ2d0cmFuc3R5cGUgPT4gJ2lu dGVybmFsJyB9LAogeyBhZ2dmbm9pZCA9PiAnanNvbl9vYmplY3RfYWdnJywgYWdndHJhbnNm biA9PiAnanNvbl9vYmplY3RfYWdnX3RyYW5zZm4nLAogICBhZ2dmaW5hbGZuID0+ICdqc29u X29iamVjdF9hZ2dfZmluYWxmbicsIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCit7 IGFnZ2Zub2lkID0+ICdqc29uX29iamVjdF9hZ2dfdW5pcXVlJywKKyAgYWdndHJhbnNmbiA9 PiAnanNvbl9vYmplY3RfYWdnX3VuaXF1ZV90cmFuc2ZuJywKKyAgYWdnZmluYWxmbiA9PiAn anNvbl9vYmplY3RfYWdnX2ZpbmFsZm4nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9 LAoreyBhZ2dmbm9pZCA9PiAnanNvbl9vYmplY3RfYWdnX3N0cmljdCcsCisgIGFnZ3RyYW5z Zm4gPT4gJ2pzb25fb2JqZWN0X2FnZ19zdHJpY3RfdHJhbnNmbicsCisgIGFnZ2ZpbmFsZm4g PT4gJ2pzb25fb2JqZWN0X2FnZ19maW5hbGZuJywgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5h bCcgfSwKK3sgYWdnZm5vaWQgPT4gJ2pzb25fb2JqZWN0X2FnZ191bmlxdWVfc3RyaWN0JywK KyAgYWdndHJhbnNmbiA9PiAnanNvbl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3RfdHJhbnNm bicsCisgIGFnZ2ZpbmFsZm4gPT4gJ2pzb25fb2JqZWN0X2FnZ19maW5hbGZuJywgYWdndHJh bnN0eXBlID0+ICdpbnRlcm5hbCcgfSwKIAogIyBqc29uYgogeyBhZ2dmbm9pZCA9PiAnanNv bmJfYWdnJywgYWdndHJhbnNmbiA9PiAnanNvbmJfYWdnX3RyYW5zZm4nLAogICBhZ2dmaW5h bGZuID0+ICdqc29uYl9hZ2dfZmluYWxmbicsIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwn IH0sCit7IGFnZ2Zub2lkID0+ICdqc29uYl9hZ2dfc3RyaWN0JywgYWdndHJhbnNmbiA9PiAn anNvbmJfYWdnX3N0cmljdF90cmFuc2ZuJywKKyAgYWdnZmluYWxmbiA9PiAnanNvbmJfYWdn X2ZpbmFsZm4nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAogeyBhZ2dmbm9pZCA9 PiAnanNvbmJfb2JqZWN0X2FnZycsIGFnZ3RyYW5zZm4gPT4gJ2pzb25iX29iamVjdF9hZ2df dHJhbnNmbicsCiAgIGFnZ2ZpbmFsZm4gPT4gJ2pzb25iX29iamVjdF9hZ2dfZmluYWxmbics IGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnIH0sCit7IGFnZ2Zub2lkID0+ICdqc29uYl9v YmplY3RfYWdnX3VuaXF1ZScsCisgIGFnZ3RyYW5zZm4gPT4gJ2pzb25iX29iamVjdF9hZ2df dW5pcXVlX3RyYW5zZm4nLAorICBhZ2dmaW5hbGZuID0+ICdqc29uYl9vYmplY3RfYWdnX2Zp bmFsZm4nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAoreyBhZ2dmbm9pZCA9PiAn anNvbmJfb2JqZWN0X2FnZ19zdHJpY3QnLAorICBhZ2d0cmFuc2ZuID0+ICdqc29uYl9vYmpl Y3RfYWdnX3N0cmljdF90cmFuc2ZuJywKKyAgYWdnZmluYWxmbiA9PiAnanNvbmJfb2JqZWN0 X2FnZ19maW5hbGZuJywgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5hbCcgfSwKK3sgYWdnZm5v aWQgPT4gJ2pzb25iX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdCcsCisgIGFnZ3RyYW5zZm4g PT4gJ2pzb25iX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdF90cmFuc2ZuJywKKyAgYWdnZmlu YWxmbiA9PiAnanNvbmJfb2JqZWN0X2FnZ19maW5hbGZuJywgYWdndHJhbnN0eXBlID0+ICdp bnRlcm5hbCcgfSwKIAogIyBvcmRlcmVkLXNldCBhbmQgaHlwb3RoZXRpY2FsLXNldCBhZ2dy ZWdhdGVzCiB7IGFnZ2Zub2lkID0+ICdwZXJjZW50aWxlX2Rpc2MoZmxvYXQ4LGFueWVsZW1l bnQpJywgYWdna2luZCA9PiAnbycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBi Zjg4ODU4MTcxLi4xZDhiMzhmZGNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTg3MzcsNiArODczNywxMCBAQAogICBwcm9uYW1lID0+ICdqc29uX2FnZ190cmFuc2ZuJywg cHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUg PT4gJ2ludGVybmFsJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueWVsZW1lbnQnLAog ICBwcm9zcmMgPT4gJ2pzb25fYWdnX3RyYW5zZm4nIH0sCit7IG9pZCA9PiAnODE3MycsIGRl c2NyID0+ICdqc29uIGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIGZ1bmN0aW9uJywKKyAgcHJvbmFt ZSA9PiAnanNvbl9hZ2dfc3RyaWN0X3RyYW5zZm4nLCBwcm9pc3N0cmljdCA9PiAnZicsIHBy b3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLCBwcm9hcmd0 eXBlcyA9PiAnaW50ZXJuYWwgYW55ZWxlbWVudCcsCisgIHByb3NyYyA9PiAnanNvbl9hZ2df c3RyaWN0X3RyYW5zZm4nIH0sCiB7IG9pZCA9PiAnMzE3NCcsIGRlc2NyID0+ICdqc29uIGFn Z3JlZ2F0ZSBmaW5hbCBmdW5jdGlvbicsCiAgIHByb25hbWUgPT4gJ2pzb25fYWdnX2ZpbmFs Zm4nLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ2pzb24nLAogICBwcm9h cmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2pzb25fYWdnX2ZpbmFsZm4nIH0s CkBAIC04NzQ0LDEwICs4NzQ4LDI2IEBACiAgIHByb25hbWUgPT4gJ2pzb25fYWdnJywgcHJv a2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAog ICBwcm9yZXR0eXBlID0+ICdqc29uJywgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQnLAog ICBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKK3sgb2lkID0+ICc4MTc0JywgZGVz Y3IgPT4gJ2FnZ3JlZ2F0ZSBpbnB1dCBpbnRvIGpzb24nLAorICBwcm9uYW1lID0+ICdqc29u X2FnZ19zdHJpY3QnLCBwcm9raW5kID0+ICdhJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBw cm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2pzb24nLCBwcm9hcmd0eXBlcyA9 PiAnYW55ZWxlbWVudCcsCisgIHByb3NyYyA9PiAnYWdncmVnYXRlX2R1bW15JyB9LAogeyBv aWQgPT4gJzMxODAnLCBkZXNjciA9PiAnanNvbiBvYmplY3QgYWdncmVnYXRlIHRyYW5zaXRp b24gZnVuY3Rpb24nLAogICBwcm9uYW1lID0+ICdqc29uX29iamVjdF9hZ2dfdHJhbnNmbics IHByb2lzc3RyaWN0ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBl ID0+ICdpbnRlcm5hbCcsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBhbnkgYW55JywKICAg cHJvc3JjID0+ICdqc29uX29iamVjdF9hZ2dfdHJhbnNmbicgfSwKK3sgb2lkID0+ICc4MTc1 JywgZGVzY3IgPT4gJ2pzb24gb2JqZWN0IGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIGZ1bmN0aW9u JywKKyAgcHJvbmFtZSA9PiAnanNvbl9vYmplY3RfYWdnX3N0cmljdF90cmFuc2ZuJywgcHJv aXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4g J2ludGVybmFsJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueSBhbnknLAorICBwcm9z cmMgPT4gJ2pzb25fb2JqZWN0X2FnZ19zdHJpY3RfdHJhbnNmbicgfSwKK3sgb2lkID0+ICc4 MTc2JywgZGVzY3IgPT4gJ2pzb24gb2JqZWN0IGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIGZ1bmN0 aW9uJywKKyAgcHJvbmFtZSA9PiAnanNvbl9vYmplY3RfYWdnX3VuaXF1ZV90cmFuc2ZuJywg cHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUg PT4gJ2ludGVybmFsJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueSBhbnknLAorICBw cm9zcmMgPT4gJ2pzb25fb2JqZWN0X2FnZ191bmlxdWVfdHJhbnNmbicgfSwKK3sgb2lkID0+ ICc4MTc3JywgZGVzY3IgPT4gJ2pzb24gb2JqZWN0IGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIGZ1 bmN0aW9uJywKKyAgcHJvbmFtZSA9PiAnanNvbl9vYmplY3RfYWdnX3VuaXF1ZV9zdHJpY3Rf dHJhbnNmbicsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBw cm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBhbnkg YW55JywKKyAgcHJvc3JjID0+ICdqc29uX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdF90cmFu c2ZuJyB9LAogeyBvaWQgPT4gJzMxOTYnLCBkZXNjciA9PiAnanNvbiBvYmplY3QgYWdncmVn YXRlIGZpbmFsIGZ1bmN0aW9uJywKICAgcHJvbmFtZSA9PiAnanNvbl9vYmplY3RfYWdnX2Zp bmFsZm4nLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHR5cGUgPT4gJ2pzb24nLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLApAQCAtODc1Niw2ICs4Nzc2LDE5IEBACiAgIHBy b25hbWUgPT4gJ2pzb25fb2JqZWN0X2FnZycsIHByb2tpbmQgPT4gJ2EnLCBwcm9pc3N0cmlj dCA9PiAnZicsCiAgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnanNvbics IHByb2FyZ3R5cGVzID0+ICdhbnkgYW55JywKICAgcHJvc3JjID0+ICdhZ2dyZWdhdGVfZHVt bXknIH0sCit7IG9pZCA9PiAnODE3OCcsIGRlc2NyID0+ICdhZ2dyZWdhdGUgbm9uLU5VTEwg aW5wdXQgaW50byBhIGpzb24gb2JqZWN0JywKKyAgcHJvbmFtZSA9PiAnanNvbl9vYmplY3Rf YWdnX3N0cmljdCcsIHByb2tpbmQgPT4gJ2EnLCBwcm9pc3N0cmljdCA9PiAnZicsCisgIHBy b3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnanNvbicsIHByb2FyZ3R5cGVzID0+ ICdhbnkgYW55JywKKyAgcHJvc3JjID0+ICdhZ2dyZWdhdGVfZHVtbXknIH0sCit7IG9pZCA9 PiAnODE3OScsIGRlc2NyID0+ICdhZ2dyZWdhdGUgaW5wdXQgaW50byBhIGpzb24gb2JqZWN0 IHdpdGggdW5pcXVlIGtleXMnLAorICBwcm9uYW1lID0+ICdqc29uX29iamVjdF9hZ2dfdW5p cXVlJywgcHJva2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRp bGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdqc29uJywgcHJvYXJndHlwZXMgPT4gJ2FueSBh bnknLAorICBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKK3sgb2lkID0+ICc4MTgw JywKKyAgZGVzY3IgPT4gJ2FnZ3JlZ2F0ZSBub24tTlVMTCBpbnB1dCBpbnRvIGEganNvbiBv YmplY3Qgd2l0aCB1bmlxdWUga2V5cycsCisgIHByb25hbWUgPT4gJ2pzb25fb2JqZWN0X2Fn Z191bmlxdWVfc3RyaWN0JywgcHJva2luZCA9PiAnYScsCisgIHByb2lzc3RyaWN0ID0+ICdm JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdqc29uJywKKyAgcHJvYXJn dHlwZXMgPT4gJ2FueSBhbnknLCBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKIHsg b2lkID0+ICczMTk4JywgZGVzY3IgPT4gJ2J1aWxkIGEganNvbiBhcnJheSBmcm9tIGFueSBp bnB1dHMnLAogICBwcm9uYW1lID0+ICdqc29uX2J1aWxkX2FycmF5JywgcHJvdmFyaWFkaWMg PT4gJ2FueScsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBw cm9yZXR0eXBlID0+ICdqc29uJywgcHJvYXJndHlwZXMgPT4gJ2FueScsCkBAIC05NjI4LDYg Kzk2NjEsMTAgQEAKICAgcHJvbmFtZSA9PiAnanNvbmJfYWdnX3RyYW5zZm4nLCBwcm9pc3N0 cmljdCA9PiAnZicsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnaW50 ZXJuYWwnLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgYW55ZWxlbWVudCcsCiAgIHByb3Ny YyA9PiAnanNvbmJfYWdnX3RyYW5zZm4nIH0sCit7IG9pZCA9PiAnODE4MScsIGRlc2NyID0+ ICdqc29uYiBhZ2dyZWdhdGUgdHJhbnNpdGlvbiBmdW5jdGlvbicsCisgIHByb25hbWUgPT4g J2pzb25iX2FnZ19zdHJpY3RfdHJhbnNmbicsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvdm9s YXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsIHByb2FyZ3R5cGVz ID0+ICdpbnRlcm5hbCBhbnllbGVtZW50JywKKyAgcHJvc3JjID0+ICdqc29uYl9hZ2dfc3Ry aWN0X3RyYW5zZm4nIH0sCiB7IG9pZCA9PiAnMzI2NicsIGRlc2NyID0+ICdqc29uYiBhZ2dy ZWdhdGUgZmluYWwgZnVuY3Rpb24nLAogICBwcm9uYW1lID0+ICdqc29uYl9hZ2dfZmluYWxm bicsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0 eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsCkBAIC05NjM2LDEw ICs5NjczLDI5IEBACiAgIHByb25hbWUgPT4gJ2pzb25iX2FnZycsIHByb2tpbmQgPT4gJ2En LCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlw ZSA9PiAnanNvbmInLCBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCcsCiAgIHByb3NyYyA9 PiAnYWdncmVnYXRlX2R1bW15JyB9LAoreyBvaWQgPT4gJzgxODInLCBkZXNjciA9PiAnYWdn cmVnYXRlIGlucHV0IGludG8ganNvbmIgc2tpcHBpbmcgbnVsbHMnLAorICBwcm9uYW1lID0+ ICdqc29uYl9hZ2dfc3RyaWN0JywgcHJva2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdm JywKKyAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdqc29uYicsIHByb2Fy Z3R5cGVzID0+ICdhbnllbGVtZW50JywKKyAgcHJvc3JjID0+ICdhZ2dyZWdhdGVfZHVtbXkn IH0sCiB7IG9pZCA9PiAnMzI2OCcsIGRlc2NyID0+ICdqc29uYiBvYmplY3QgYWdncmVnYXRl IHRyYW5zaXRpb24gZnVuY3Rpb24nLAogICBwcm9uYW1lID0+ICdqc29uYl9vYmplY3RfYWdn X3RyYW5zZm4nLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3ZvbGF0aWxlID0+ICdzJywKICAg cHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgYW55 IGFueScsCiAgIHByb3NyYyA9PiAnanNvbmJfb2JqZWN0X2FnZ190cmFuc2ZuJyB9LAoreyBv aWQgPT4gJzgxODMnLCBkZXNjciA9PiAnanNvbmIgb2JqZWN0IGFnZ3JlZ2F0ZSB0cmFuc2l0 aW9uIGZ1bmN0aW9uJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2FnZ19zdHJpY3Rf dHJhbnNmbicsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBw cm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBh bnkgYW55JywKKyAgcHJvc3JjID0+ICdqc29uYl9vYmplY3RfYWdnX3N0cmljdF90cmFuc2Zu JyB9LAoreyBvaWQgPT4gJzgxODQnLCBkZXNjciA9PiAnanNvbmIgb2JqZWN0IGFnZ3JlZ2F0 ZSB0cmFuc2l0aW9uIGZ1bmN0aW9uJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2Fn Z191bmlxdWVfdHJhbnNmbicsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUg PT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsCisgIHByb2FyZ3R5cGVzID0+ICdp bnRlcm5hbCBhbnkgYW55JywKKyAgcHJvc3JjID0+ICdqc29uYl9vYmplY3RfYWdnX3VuaXF1 ZV90cmFuc2ZuJyB9LAoreyBvaWQgPT4gJzgxODUnLCBkZXNjciA9PiAnanNvbmIgb2JqZWN0 IGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIGZ1bmN0aW9uJywKKyAgcHJvbmFtZSA9PiAnanNvbmJf b2JqZWN0X2FnZ191bmlxdWVfc3RyaWN0X3RyYW5zZm4nLCBwcm9pc3N0cmljdCA9PiAnZics CisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAorICBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgYW55IGFueScsCisgIHByb3NyYyA9PiAnanNvbmJf b2JqZWN0X2FnZ191bmlxdWVfc3RyaWN0X3RyYW5zZm4nIH0sCiB7IG9pZCA9PiAnMzI2OScs IGRlc2NyID0+ICdqc29uYiBvYmplY3QgYWdncmVnYXRlIGZpbmFsIGZ1bmN0aW9uJywKICAg cHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2FnZ19maW5hbGZuJywgcHJvaXNzdHJpY3QgPT4g J2YnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ2pzb25iJywgcHJv YXJndHlwZXMgPT4gJ2ludGVybmFsJywKQEAgLTk2NDgsNiArOTcwNCwyMCBAQAogICBwcm9u YW1lID0+ICdqc29uYl9vYmplY3RfYWdnJywgcHJva2luZCA9PiAnYScsIHByb2lzc3RyaWN0 ID0+ICdmJywKICAgcHJvcmV0dHlwZSA9PiAnanNvbmInLCBwcm9hcmd0eXBlcyA9PiAnYW55 IGFueScsCiAgIHByb3NyYyA9PiAnYWdncmVnYXRlX2R1bW15JyB9LAoreyBvaWQgPT4gJzgx ODYnLCBkZXNjciA9PiAnYWdncmVnYXRlIG5vbi1OVUxMIGlucHV0cyBpbnRvIGpzb25iIG9i amVjdCcsCisgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9hZ2dfc3RyaWN0JywgcHJva2lu ZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvcmV0dHlwZSA9PiAnanNvbmIn LCBwcm9hcmd0eXBlcyA9PiAnYW55IGFueScsCisgIHByb3NyYyA9PiAnYWdncmVnYXRlX2R1 bW15JyB9LAoreyBvaWQgPT4gJzgxODcnLAorICBkZXNjciA9PiAnYWdncmVnYXRlIGlucHV0 cyBpbnRvIGpzb25iIG9iamVjdCBjaGVja2luZyBrZXkgdW5pcXVlbmVzcycsCisgIHByb25h bWUgPT4gJ2pzb25iX29iamVjdF9hZ2dfdW5pcXVlJywgcHJva2luZCA9PiAnYScsIHByb2lz c3RyaWN0ID0+ICdmJywKKyAgcHJvcmV0dHlwZSA9PiAnanNvbmInLCBwcm9hcmd0eXBlcyA9 PiAnYW55IGFueScsCisgIHByb3NyYyA9PiAnYWdncmVnYXRlX2R1bW15JyB9LAoreyBvaWQg PT4gJzgxODgnLAorICBkZXNjciA9PiAnYWdncmVnYXRlIG5vbi1OVUxMIGlucHV0cyBpbnRv IGpzb25iIG9iamVjdCBjaGVja2luZyBrZXkgdW5pcXVlbmVzcycsCisgIHByb25hbWUgPT4g J2pzb25iX29iamVjdF9hZ2dfdW5pcXVlX3N0cmljdCcsIHByb2tpbmQgPT4gJ2EnLAorICBw cm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ2pzb25iJywgcHJvYXJndHlwZXMg PT4gJ2FueSBhbnknLAorICBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKIHsgb2lk ID0+ICczMjcxJywgZGVzY3IgPT4gJ2J1aWxkIGEganNvbmIgYXJyYXkgZnJvbSBhbnkgaW5w dXRzJywKICAgcHJvbmFtZSA9PiAnanNvbmJfYnVpbGRfYXJyYXknLCBwcm92YXJpYWRpYyA9 PiAnYW55JywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm92b2xhdGlsZSA9PiAncycsIHBy b3JldHR5cGUgPT4gJ2pzb25iJywgcHJvYXJndHlwZXMgPT4gJ2FueScsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY0V4cHIuaAppbmRleCA1NmE4OWViYWZiLi45Y2U4ZGYxN2U1IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTIxLDYgKzIxLDcgQEAKIHN0cnVjdCBFeHByRXZhbFN0 ZXA7CiBzdHJ1Y3QgU3Vic2NyaXB0aW5nUmVmU3RhdGU7CiBzdHJ1Y3QgU2NhbGFyQXJyYXlP cEV4cHJIYXNoVGFibGU7CitzdHJ1Y3QgSnNvbmJWYWx1ZTsKIAogLyogQml0cyBpbiBFeHBy U3RhdGUtPmZsYWdzIChzZWUgYWxzbyBleGVjbm9kZXMuaCBmb3IgcHVibGljIGZsYWcgYml0 cyk6ICovCiAvKiBleHByZXNzaW9uJ3MgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6 ZWQgKi8KQEAgLTIzOSw2ICsyNDAsOSBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVF T1BfR1JPVVBJTkdfRlVOQywKIAlFRU9QX1dJTkRPV19GVU5DLAogCUVFT1BfU1VCUExBTiwK KwlFRU9QX0pTT05fQ09OU1RSVUNUT1IsCisJRUVPUF9JU19KU09OLAorCUVFT1BfSlNPTkVY UFIsCiAKIAkvKiBhZ2dyZWdhdGlvbiByZWxhdGVkIG5vZGVzICovCiAJRUVPUF9BR0dfU1RS SUNUX0RFU0VSSUFMSVpFLApAQCAtNjY4LDYgKzY3Miw3MiBAQCB0eXBlZGVmIHN0cnVjdCBF eHByRXZhbFN0ZXAKIAkJCWludAkJCXRyYW5zbm87CiAJCQlpbnQJCQlzZXRvZmY7CiAJCX0J CQlhZ2dfdHJhbnM7CisKKwkJLyogZm9yIEVFT1BfSlNPTl9DT05TVFJVQ1RPUiAqLworCQlz dHJ1Y3QKKwkJeworCQkJSnNvbkNvbnN0cnVjdG9yRXhwciAqY29uc3RydWN0b3I7CisJCQlE YXR1bQkgICAqYXJnX3ZhbHVlczsKKwkJCWJvb2wJICAgKmFyZ19udWxsczsKKwkJCU9pZAkJ ICAgKmFyZ190eXBlczsKKwkJCXN0cnVjdAorCQkJeworCQkJCWludAkJCWNhdGVnb3J5Owor CQkJCU9pZAkJCW91dGZ1bmNpZDsKKwkJCX0JCSAgICphcmdfdHlwZV9jYWNoZTsJCS8qIGNh Y2hlIGZvciBkYXR1bV90b19qc29uW2JdKCkgKi8KKwkJCWludAkJCW5hcmdzOworCQl9CQkJ anNvbl9jb25zdHJ1Y3RvcjsKKworCQkvKiBmb3IgRUVPUF9JU19KU09OICovCisJCXN0cnVj dAorCQl7CisJCQkJCUpzb25Jc1ByZWRpY2F0ZSAqcHJlZDsJLyogb3JpZ2luYWwgZXhwcmVz c2lvbiBub2RlICovCisJCX0JCQlpc19qc29uOworCisJCS8qIGZvciBFRU9QX0pTT05FWFBS ICovCisJCXN0cnVjdAorCQl7CisJCQlKc29uRXhwciAgICpqc2V4cHI7CQkJLyogb3JpZ2lu YWwgZXhwcmVzc2lvbiBub2RlICovCisKKwkJCXN0cnVjdAorCQkJeworCQkJCUZtZ3JJbmZv CWZ1bmM7CQkvKiB0eXBpbnB1dCBmdW5jdGlvbiBmb3Igb3V0cHV0IHR5cGUgKi8KKwkJCQlP aWQJCQl0eXBpb3BhcmFtOworCQkJfSBpbnB1dDsJCQkJCS8qIEkvTyBpbmZvIGZvciBvdXRw dXQgdHlwZSAqLworCisJCQlOdWxsYWJsZURhdHVtCisJCQkJCSAgICpmb3JtYXR0ZWRfZXhw ciwJCS8qIGZvcm1hdHRlZCBjb250ZXh0IGl0ZW0gdmFsdWUgKi8KKwkJCQkJICAgKnJlc19l eHByLAkJCS8qIHJlc3VsdCBpdGVtICovCisJCQkJCSAgICpjb2VyY2lvbl9leHByLAkJLyog aW5wdXQgZm9yIEpTT04gaXRlbSBjb2VyY2lvbiAqLworCQkJCQkgICAqcGF0aHNwZWM7CQkJ LyogcGF0aCBzcGVjaWZpY2F0aW9uIHZhbHVlICovCisKKwkJCUV4cHJTdGF0ZSAgKnJlc3Vs dF9leHByOwkJLyogY29lcmNlZCB0byBvdXRwdXQgdHlwZSAqLworCQkJRXhwclN0YXRlICAq ZGVmYXVsdF9vbl9lbXB0eTsJLyogT04gRU1QVFkgREVGQVVMVCBleHByZXNzaW9uICovCisJ CQlFeHByU3RhdGUgICpkZWZhdWx0X29uX2Vycm9yOwkvKiBPTiBFUlJPUiBERUZBVUxUIGV4 cHJlc3Npb24gKi8KKwkJCUxpc3QJICAgKmFyZ3M7CQkJCS8qIHBhc3NpbmcgYXJndW1lbnRz ICovCisKKwkJCXZvaWQJICAgKmNhY2hlOwkJCQkvKiBjYWNoZSBmb3IganNvbl9wb3B1bGF0 ZV90eXBlKCkgKi8KKworCQkJc3RydWN0IEpzb25Db2VyY2lvbnNTdGF0ZQorCQkJeworCQkJ CXN0cnVjdCBKc29uQ29lcmNpb25TdGF0ZQorCQkJCXsKKwkJCQkJSnNvbkNvZXJjaW9uICpj b2VyY2lvbjsJCS8qIGNvZXJjaW9uIGV4cHJlc3Npb24gKi8KKwkJCQkJRXhwclN0YXRlICAq ZXN0YXRlOwkvKiBjb2VyY2lvbiBleHByZXNzaW9uIHN0YXRlICovCisJCQkJfSAJCQludWxs LAorCQkJCQkJCXN0cmluZywKKwkJCQkJCQludW1lcmljLAorCQkJCQkJCWJvb2xlYW4sCisJ CQkJCQkJZGF0ZSwKKwkJCQkJCQl0aW1lLAorCQkJCQkJCXRpbWV0eiwKKwkJCQkJCQl0aW1l c3RhbXAsCisJCQkJCQkJdGltZXN0YW1wdHosCisJCQkJCQkJY29tcG9zaXRlOworCQkJfQkJ CWNvZXJjaW9uczsJLyogc3RhdGVzIGZvciBjb2VyY2lvbiBmcm9tIFNRTC9KU09OIGl0ZW0K KwkJCQkJCQkJCSAqIHR5cGVzIGRpcmVjdGx5IHRvIHRoZSBvdXRwdXQgdHlwZSAqLworCQl9 CQkJanNvbmV4cHI7CisKIAl9CQkJZDsKIH0gRXhwckV2YWxTdGVwOwogCkBAIC03NjIsNiAr ODMyLDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxIYXNoZWRTY2FsYXJBcnJheU9wKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiBleHRlcm4gdm9pZCBFeGVjRXZhbENv bnN0cmFpbnROb3ROdWxsKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOwog ZXh0ZXJuIHZvaWQgRXhlY0V2YWxDb25zdHJhaW50Q2hlY2soRXhwclN0YXRlICpzdGF0ZSwg RXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFhtbEV4cHIoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CitleHRlcm4gdm9pZCBFeGVjRXZhbEpz b25Jc1ByZWRpY2F0ZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4 dGVybiB2b2lkIEV4ZWNFdmFsR3JvdXBpbmdGdW5jKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3ApOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxTdWJQbGFuKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0 KTsKQEAgLTc2OSw2ICs4NDAsMTYgQEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxXaG9sZVJvd1Zh cihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQlFeHByQ29u dGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxTeXNWYXIoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCSAgIEV4cHJDb250ZXh0ICplY29u dGV4dCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29u Q29uc3RydWN0b3IoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJ CQkJCUV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRlcm4gdm9pZCBFeGVjRXZhbEpzb24o RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJCSBFeHByQ29udGV4 dCAqZWNvbnRleHQpOworZXh0ZXJuIERhdHVtIEV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lv bihzdHJ1Y3QgSnNvbmJWYWx1ZSAqaXRlbSwKKwkJCQkJCQkJCQkgSnNvblJldHVybmluZyAq cmV0dXJuaW5nLAorCQkJCQkJCQkJCSBzdHJ1Y3QgSnNvbkNvZXJjaW9uc1N0YXRlICpjb2Vy Y2lvbnMsCisJCQkJCQkJCQkJIHN0cnVjdCBKc29uQ29lcmNpb25TdGF0ZSAqKnBqY3N0YXRl KTsKK2V4dGVybiBib29sIEV4ZWNFdmFsSnNvbk5lZWRzU3ViVHJhbnNhY3Rpb24oSnNvbkV4 cHIgKmpzZXhwciwKKwkJCQkJCQkJCQkJc3RydWN0IEpzb25Db2VyY2lvbnNTdGF0ZSAqKTsK IAogZXh0ZXJuIHZvaWQgRXhlY0FnZ0luaXRHcm91cChBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFn Z1N0YXRlUGVyVHJhbnMgcGVydHJhbnMsIEFnZ1N0YXRlUGVyR3JvdXAgcGVyZ3JvdXAsCiAJ CQkJCQkJIEV4cHJDb250ZXh0ICphZ2djb250ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oCmluZGV4IDM0NDM5OWY2YTguLjUzOGQ3ZWNhMDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaApAQCAtMjYzLDYgKzI2Myw4IEBAIEV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5v ZGUpCiAgKi8KIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0RXhwcihFeHByICpub2RlLCBQ bGFuU3RhdGUgKnBhcmVudCk7CiBleHRlcm4gRXhwclN0YXRlICpFeGVjSW5pdEV4cHJXaXRo UGFyYW1zKEV4cHIgKm5vZGUsIFBhcmFtTGlzdEluZm8gZXh0X3BhcmFtcyk7CitleHRlcm4g RXhwclN0YXRlICpFeGVjSW5pdEV4cHJXaXRoQ2FzZVZhbHVlKEV4cHIgKm5vZGUsIFBsYW5T dGF0ZSAqcGFyZW50LAorCQkJCQkJICBEYXR1bSAqY2FzZXZhbCwgYm9vbCAqY2FzZW51bGwp OwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRRdWFsKExpc3QgKnF1YWwsIFBsYW5TdGF0 ZSAqcGFyZW50KTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0Q2hlY2soTGlzdCAqcXVh bCwgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIExpc3QgKkV4ZWNJbml0RXhwckxpc3Qo TGlzdCAqbm9kZXMsIFBsYW5TdGF0ZSAqcGFyZW50KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgK aW5kZXggNTBkZTRjNjJhZi4uODcyZjJmMDgyOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgK QEAgLTEwNiw0ICsxMDYsMTQgQEAgZXh0ZXJuIEdyb3VwaW5nU2V0ICptYWtlR3JvdXBpbmdT ZXQoR3JvdXBpbmdTZXRLaW5kIGtpbmQsIExpc3QgKmNvbnRlbnQsIGludCBsb2MKIAogZXh0 ZXJuIFZhY3V1bVJlbGF0aW9uICptYWtlVmFjdXVtUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0 aW9uLCBPaWQgb2lkLCBMaXN0ICp2YV9jb2xzKTsKIAorZXh0ZXJuIEpzb25Gb3JtYXQgKm1h a2VKc29uRm9ybWF0KEpzb25Gb3JtYXRUeXBlIHR5cGUsIEpzb25FbmNvZGluZyBlbmNvZGlu ZywKKwkJCQkJCQkJICBpbnQgbG9jYXRpb24pOworZXh0ZXJuIEpzb25WYWx1ZUV4cHIgKm1h a2VKc29uVmFsdWVFeHByKEV4cHIgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCk7CitleHRl cm4gSnNvbkJlaGF2aW9yICptYWtlSnNvbkJlaGF2aW9yKEpzb25CZWhhdmlvclR5cGUgdHlw ZSwgTm9kZSAqZXhwcik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1ZShOb2RlICpr ZXksIE5vZGUgKnZhbHVlKTsKK2V4dGVybiBOb2RlICptYWtlSnNvbklzUHJlZGljYXRlKE5v ZGUgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCwKKwkJCQkJCQkJIEpzb25WYWx1ZVR5cGUg dnR5cGUsIGJvb2wgdW5pcXVlX2tleXMsCisJCQkJCQkJCSBpbnQgbG9jYXRpb24pOworZXh0 ZXJuIEpzb25FbmNvZGluZyBtYWtlSnNvbkVuY29kaW5nKGNoYXIgKm5hbWUpOworCiAjZW5k aWYJCQkJCQkJLyogTUFLRUZVTkNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggNWQwNzVmMGMz NC4uOTBjMTQ1MWUxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0yMDEsNiArMjAxLDE2IEBAIHR5 cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9Gcm9tRXhwciwKIAlUX09uQ29uZmxpY3RFeHByLAog CVRfSW50b0NsYXVzZSwKKwlUX0pzb25Gb3JtYXQsCisJVF9Kc29uUmV0dXJuaW5nLAorCVRf SnNvblZhbHVlRXhwciwKKwlUX0pzb25QYXJzZUV4cHIsCisJVF9Kc29uU2NhbGFyRXhwciwK KwlUX0pzb25TZXJpYWxpemVFeHByLAorCVRfSnNvbkNvbnN0cnVjdG9yRXhwciwKKwlUX0pz b25FeHByLAorCVRfSnNvbkNvZXJjaW9uLAorCVRfSnNvbkl0ZW1Db2VyY2lvbnMsCiAKIAkv KgogCSAqIFRBR1MgRk9SIEVYUFJFU1NJT04gU1RBVEUgTk9ERVMgKGV4ZWNub2Rlcy5oKQpA QCAtNDkxLDYgKzUwMSwyMCBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfVmFjdXVtUmVs YXRpb24sCiAJVF9QdWJsaWNhdGlvbk9ialNwZWMsCiAJVF9QdWJsaWNhdGlvblRhYmxlLAor CVRfSnNvbk9iamVjdENvbnN0cnVjdG9yLAorCVRfSnNvbkFycmF5Q29uc3RydWN0b3IsCisJ VF9Kc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yLAorCVRfSnNvbkFnZ0NvbnN0cnVjdG9yLAor CVRfSnNvbk9iamVjdEFnZywKKwlUX0pzb25BcnJheUFnZywKKwlUX0pzb25GdW5jRXhwciwK KwlUX0pzb25Jc1ByZWRpY2F0ZSwKKwlUX0pzb25FeGlzdHNQcmVkaWNhdGUsCisJVF9Kc29u Q29tbW9uLAorCVRfSnNvbkFyZ3VtZW50LAorCVRfSnNvbktleVZhbHVlLAorCVRfSnNvbkJl aGF2aW9yLAorCVRfSnNvbk91dHB1dCwKIAogCS8qCiAJICogVEFHUyBGT1IgUkVQTElDQVRJ T04gR1JBTU1BUiBQQVJTRSBOT0RFUyAocmVwbG5vZGVzLmgpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKaW5kZXggMTYxNzcwMmQ5ZC4uY2YxOWEyMjVkYiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaApAQCAtMTU1MSw2ICsxNTUxLDIwOSBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2Vy VHJhbnNpdGlvbgogCWJvb2wJCWlzVGFibGU7CiB9IFRyaWdnZXJUcmFuc2l0aW9uOwogCisv KiBOb2RlcyBmb3IgU1FML0pTT04gc3VwcG9ydCAqLworCisvKgorICogSnNvblF1b3RlcyAt CisgKgkJcmVwcmVzZW50YXRpb24gb2YgW0tFRVB8T01JVF0gUVVPVEVTIGNsYXVzZSBmb3Ig SlNPTl9RVUVSWSgpCisgKi8KK3R5cGVkZWYgZW51bSBKc29uUXVvdGVzCit7CisJSlNfUVVP VEVTX1VOU1BFQywJCQkvKiB1bnNwZWNpZmllZCAqLworCUpTX1FVT1RFU19LRUVQLAkJCQkv KiBLRUVQIFFVT1RFUyAqLworCUpTX1FVT1RFU19PTUlUCQkJCS8qIE9NSVQgUVVPVEVTICov Cit9IEpzb25RdW90ZXM7CisKKy8qCisgKiBKc29uUGF0aFNwZWMgLQorICoJCXJlcHJlc2Vu dGF0aW9uIG9mIEpTT04gcGF0aCBjb25zdGFudAorICovCit0eXBlZGVmIGNoYXIgKkpzb25Q YXRoU3BlYzsKKworLyoKKyAqIEpzb25PdXRwdXQgLQorICoJCXJlcHJlc2VudGF0aW9uIG9m IEpTT04gb3V0cHV0IGNsYXVzZSAoUkVUVVJOSU5HIHR5cGUgW0ZPUk1BVCBmb3JtYXRdKQor ICovCit0eXBlZGVmIHN0cnVjdCBKc29uT3V0cHV0Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlU eXBlTmFtZSAgICp0eXBlTmFtZTsJCS8qIFJFVFVSTklORyB0eXBlIG5hbWUsIGlmIHNwZWNp ZmllZCAqLworCUpzb25SZXR1cm5pbmcgKnJldHVybmluZzsJLyogUkVUVVJOSU5HIEZPUk1B VCBjbGF1c2UgYW5kIHR5cGUgT2lkcyAqLworfSBKc29uT3V0cHV0OworCisvKgorICogSnNv bkFyZ3VtZW50IC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBhcmd1bWVudCBmcm9tIEpTT04g UEFTU0lORyBjbGF1c2UKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkFyZ3VtZW50Cit7CisJ Tm9kZVRhZwkJdHlwZTsKKwlKc29uVmFsdWVFeHByICp2YWw7CQkJLyogYXJndW1lbnQgdmFs dWUgZXhwcmVzc2lvbiAqLworCWNoYXIJICAgKm5hbWU7CQkJLyogYXJndW1lbnQgbmFtZSAq LworfSBKc29uQXJndW1lbnQ7CisKKy8qCisgKiBKc29uQ29tbW9uIC0KKyAqCQlyZXByZXNl bnRhdGlvbiBvZiBjb21tb24gc3ludGF4IG9mIGZ1bmN0aW9ucyB1c2luZyBKU09OIHBhdGgK KyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkNvbW1vbgoreworCU5vZGVUYWcJCXR5cGU7CisJ SnNvblZhbHVlRXhwciAqZXhwcjsJCS8qIGNvbnRleHQgaXRlbSBleHByZXNzaW9uICovCisJ Tm9kZQkgICAqcGF0aHNwZWM7CQkvKiBKU09OIHBhdGggc3BlY2lmaWNhdGlvbiBleHByZXNz aW9uICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5hbWUsIGlmIGFueSAqLwor CUxpc3QJICAgKnBhc3Npbmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xhdXNlIGFyZ3VtZW50 cywgaWYgYW55ICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3Ig LTEgaWYgdW5rbm93biAqLworfSBKc29uQ29tbW9uOworCisvKgorICogSnNvbkZ1bmNFeHBy IC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT04gZnVuY3Rpb24g ZXhwcmVzc2lvbnMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkZ1bmNFeHByCit7CisJTm9k ZVRhZwkJdHlwZTsKKwlKc29uRXhwck9wCW9wOwkJCQkvKiBleHByZXNzaW9uIHR5cGUgKi8K KwlKc29uQ29tbW9uICpjb21tb247CQkJLyogY29tbW9uIHN5bnRheCAqLworCUpzb25PdXRw dXQgKm91dHB1dDsJCQkvKiBvdXRwdXQgY2xhdXNlLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29u QmVoYXZpb3IgKm9uX2VtcHR5OwkJLyogT04gRU1QVFkgYmVoYXZpb3IsIGlmIHNwZWNpZmll ZCAqLworCUpzb25CZWhhdmlvciAqb25fZXJyb3I7CQkvKiBPTiBFUlJPUiBiZWhhdmlvciwg aWYgc3BlY2lmaWVkICovCisJSnNvbldyYXBwZXIJd3JhcHBlcjsJCS8qIGFycmF5IHdyYXBw ZXIgYmVoYXZpb3IgKEpTT05fUVVFUlkgb25seSkgKi8KKwlib29sCQlvbWl0X3F1b3RlczsJ Lyogb21pdCBvciBrZWVwIHF1b3Rlcz8gKEpTT05fUVVFUlkgb25seSkgKi8KKwlpbnQJCQls b2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IEpz b25GdW5jRXhwcjsKKworLyoKKyAqIEpzb25LZXlWYWx1ZSAtCisgKgkJdW50cmFuc2Zvcm1l ZCByZXByZXNlbnRhdGlvbiBvZiBKU09OIG9iamVjdCBrZXktdmFsdWUgcGFpciBmb3IKKyAq CQlKU09OX09CSkVDVCgpIGFuZCBKU09OX09CSkVDVEFHRygpCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25LZXlWYWx1ZQoreworCU5vZGVUYWcJCXR5cGU7CisJRXhwcgkgICAqa2V5OwkJ CS8qIGtleSBleHByZXNzaW9uICovCisJSnNvblZhbHVlRXhwciAqdmFsdWU7CQkvKiBKU09O IHZhbHVlIGV4cHJlc3Npb24gKi8KK30gSnNvbktleVZhbHVlOworCisvKgorICogSnNvblBh cnNlRXhwciAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OKCkK KyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblBhcnNlRXhwcgoreworCU5vZGVUYWcJCXR5cGU7 CisJSnNvblZhbHVlRXhwciAqZXhwcjsJCS8qIHN0cmluZyBleHByZXNzaW9uICovCisJSnNv bk91dHB1dCAqb3V0cHV0OwkJCS8qIFJFVFVSTklORyBjbGF1c2UsIGlmIHNwZWNpZmllZCAq LworCWJvb2wJCXVuaXF1ZV9rZXlzOwkvKiBXSVRIIFVOSVFVRSBLRVlTPyAqLworCWludAkJ CWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30g SnNvblBhcnNlRXhwcjsKKworLyoKKyAqIEpzb25TY2FsYXJFeHByIC0KKyAqCQl1bnRyYW5z Zm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fU0NBTEFSKCkKKyAqLwordHlwZWRlZiBz dHJ1Y3QgSnNvblNjYWxhckV4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOworCUV4cHIJICAgKmV4 cHI7CQkJLyogc2NhbGFyIGV4cHJlc3Npb24gKi8KKwlKc29uT3V0cHV0ICpvdXRwdXQ7CQkJ LyogUkVUVVJOSU5HIGNsYXVzZSwgaWYgc3BlY2lmaWVkICovCisJaW50CQkJbG9jYXRpb247 CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uU2NhbGFy RXhwcjsKKworLyoKKyAqIEpzb25TZXJpYWxpemVFeHByIC0KKyAqCQl1bnRyYW5zZm9ybWVk IHJlcHJlc2VudGF0aW9uIG9mIEpTT05fU0VSSUFMSVpFKCkgZnVuY3Rpb24KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgSnNvblNlcmlhbGl6ZUV4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpz b25WYWx1ZUV4cHIgKmV4cHI7CQkvKiBqc29uIHZhbHVlIGV4cHJlc3Npb24gKi8KKwlKc29u T3V0cHV0ICpvdXRwdXQ7CQkJLyogUkVUVVJOSU5HIGNsYXVzZSwgaWYgc3BlY2lmaWVkICAq LworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25v d24gKi8KK30gSnNvblNlcmlhbGl6ZUV4cHI7CisKKy8qCisgKiBKc29uT2JqZWN0Q29uc3Ry dWN0b3IgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9PQkpF Q1QoKSBjb25zdHJ1Y3RvcgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uT2JqZWN0Q29uc3Ry dWN0b3IKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKmV4cHJzOwkJCS8qIGxpc3Qg b2YgSnNvbktleVZhbHVlIHBhaXJzICovCisJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIFJF VFVSTklORyBjbGF1c2UsIGlmIHNwZWNpZmllZCAgKi8KKwlib29sCQlhYnNlbnRfb25fbnVs bDsJLyogc2tpcCBOVUxMIHZhbHVlcz8gKi8KKwlib29sCQl1bmlxdWU7CQkJLyogY2hlY2sg a2V5IHVuaXF1ZW5lc3M/ICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uT2JqZWN0Q29uc3RydWN0b3I7CisKKy8q CisgKiBKc29uQXJyYXlDb25zdHJ1Y3RvciAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNl bnRhdGlvbiBvZiBKU09OX0FSUkFZKGVsZW1lbnQsLi4uKSBjb25zdHJ1Y3RvcgorICovCit0 eXBlZGVmIHN0cnVjdCBKc29uQXJyYXlDb25zdHJ1Y3RvcgoreworCU5vZGVUYWcJCXR5cGU7 CisJTGlzdAkgICAqZXhwcnM7CQkJLyogbGlzdCBvZiBKc29uVmFsdWVFeHByIGVsZW1lbnRz ICovCisJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIFJFVFVSTklORyBjbGF1c2UsIGlmIHNw ZWNpZmllZCAgKi8KKwlib29sCQlhYnNlbnRfb25fbnVsbDsJLyogc2tpcCBOVUxMIGVsZW1l bnRzPyAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlm IHVua25vd24gKi8KK30gSnNvbkFycmF5Q29uc3RydWN0b3I7CisKKy8qCisgKiBKc29uQXJy YXlRdWVyeUNvbnN0cnVjdG9yIC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9u IG9mIEpTT05fQVJSQVkoc3VicXVlcnkpIGNvbnN0cnVjdG9yCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25BcnJheVF1ZXJ5Q29uc3RydWN0b3IKK3sKKwlOb2RlVGFnCQl0eXBlOworCU5v ZGUJICAgKnF1ZXJ5OwkJCS8qIHN1YnF1ZXJ5ICovCisJSnNvbk91dHB1dCAqb3V0cHV0OwkJ CS8qIFJFVFVSTklORyBjbGF1c2UsIGlmIHNwZWNpZmllZCAgKi8KKwlKc29uRm9ybWF0ICpm b3JtYXQ7CQkJLyogRk9STUFUIGNsYXVzZSBmb3Igc3VicXVlcnksIGlmIHNwZWNpZmllZCAq LworCWJvb2wJCWFic2VudF9vbl9udWxsOwkvKiBza2lwIE5VTEwgZWxlbWVudHM/ICovCisJ aW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAq LworfSBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yOworCisvKgorICogSnNvbkFnZ0NvbnN0 cnVjdG9yIC0KKyAqCQljb21tb24gZmllbGRzIG9mIHVudHJhbnNmb3JtZWQgcmVwcmVzZW50 YXRpb24gb2YKKyAqCQlKU09OX0FSUkFZQUdHKCkgYW5kIEpTT05fT0JKRUNUQUdHKCkKKyAq LwordHlwZWRlZiBzdHJ1Y3QgSnNvbkFnZ0NvbnN0cnVjdG9yCit7CisJTm9kZVRhZwkJdHlw ZTsKKwlKc29uT3V0cHV0ICpvdXRwdXQ7CQkJLyogUkVUVVJOSU5HIGNsYXVzZSwgaWYgYW55 ICovCisJTm9kZQkgICAqYWdnX2ZpbHRlcjsJCS8qIEZJTFRFUiBjbGF1c2UsIGlmIGFueSAq LworCUxpc3QJICAgKmFnZ19vcmRlcjsJCS8qIE9SREVSIEJZIGNsYXVzZSwgaWYgYW55ICov CisJc3RydWN0IFdpbmRvd0RlZiAqb3ZlcjsJCS8qIE9WRVIgY2xhdXNlLCBpZiBhbnkgKi8K KwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3du ICovCit9IEpzb25BZ2dDb25zdHJ1Y3RvcjsKKworLyoKKyAqIEpzb25PYmplY3RBZ2cgLQor ICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9PQkpFQ1RBR0coKQor ICovCit0eXBlZGVmIHN0cnVjdCBKc29uT2JqZWN0QWdnCit7CisJTm9kZVRhZwkJdHlwZTsK KwlKc29uQWdnQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yOyAvKiBjb21tb24gZmllbGRzICov CisJSnNvbktleVZhbHVlICphcmc7CQkJLyogb2JqZWN0IGtleS12YWx1ZSBwYWlyICovCisJ Ym9vbAkJYWJzZW50X29uX251bGw7CS8qIHNraXAgTlVMTCB2YWx1ZXM/ICovCisJYm9vbAkJ dW5pcXVlOwkJCS8qIGNoZWNrIGtleSB1bmlxdWVuZXNzPyAqLworfSBKc29uT2JqZWN0QWdn OworCisvKgorICogSnNvbkFycmF5QWdnIC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2Vu dGF0aW9uIG9mIEpTT05fQVJSUkFZQUdHKCkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkFy cmF5QWdnCit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uQWdnQ29uc3RydWN0b3IgKmNvbnN0 cnVjdG9yOyAvKiBjb21tb24gZmllbGRzICovCisJSnNvblZhbHVlRXhwciAqYXJnOwkJCS8q IGFycmF5IGVsZW1lbnQgZXhwcmVzc2lvbiAqLworCWJvb2wJCWFic2VudF9vbl9udWxsOwkv KiBza2lwIE5VTEwgZWxlbWVudHM/ICovCit9IEpzb25BcnJheUFnZzsKKworCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKICAqCQlSYXcgR3JhbW1hciBPdXRwdXQgU3RhdGVtZW50cwog ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBk YWI1YzRmZjVkLi45MDEwOGJlZmViIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMTIz NSw2ICsxMjM1LDIyOCBAQCB0eXBlZGVmIHN0cnVjdCBYbWxFeHByCiAJaW50CQkJbG9jYXRp b247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBYbWxFeHBy OwogCisvKgorICogSnNvbkV4cHJPcCAtCisgKgkJZW51bWVyYXRpb24gb2YgSlNPTiBmdW5j dGlvbnMgdXNpbmcgSlNPTiBwYXRoCisgKi8KK3R5cGVkZWYgZW51bSBKc29uRXhwck9wCit7 CisJSVNfSlNPTl9WQUxVRSwJCQkJLyogSlNPTl9WQUxVRSgpICovCisJSVNfSlNPTl9RVUVS WSwJCQkJLyogSlNPTl9RVUVSWSgpICovCisJSVNfSlNPTl9FWElTVFMJCQkJLyogSlNPTl9F WElTVFMoKSAqLworfSBKc29uRXhwck9wOworCisvKgorICogSnNvbkVuY29kaW5nIC0KKyAq CQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIEVOQ09ESU5HIGNsYXVzZQorICovCit0eXBlZGVm IGVudW0gSnNvbkVuY29kaW5nCit7CisJSlNfRU5DX0RFRkFVTFQsCQkJCS8qIHVuc3BlY2lm aWVkICovCisJSlNfRU5DX1VURjgsCisJSlNfRU5DX1VURjE2LAorCUpTX0VOQ19VVEYzMiwK K30gSnNvbkVuY29kaW5nOworCisvKgorICogSnNvbkZvcm1hdFR5cGUgLQorICoJCWVudW1l cmF0aW9uIG9mIEpTT04gZm9ybWF0cyB1c2VkIGluIEpTT04gRk9STUFUIGNsYXVzZQorICov Cit0eXBlZGVmIGVudW0gSnNvbkZvcm1hdFR5cGUKK3sKKwlKU19GT1JNQVRfREVGQVVMVCwJ CQkvKiB1bnNwZWNpZmllZCAqLworCUpTX0ZPUk1BVF9KU09OLAkJCQkvKiBGT1JNQVQgSlNP TiBbRU5DT0RJTkcgLi4uXSAqLworCUpTX0ZPUk1BVF9KU09OQgkJCQkvKiBpbXBsaWNpdCBp bnRlcm5hbCBmb3JtYXQgZm9yIFJFVFVSTklORyBqc29uYiAqLworfSBKc29uRm9ybWF0VHlw ZTsKKworLyoKKyAqIEpzb25CZWhhdmlvclR5cGUgLQorICoJCWVudW1lcmF0aW9uIG9mIGJl aGF2aW9yIHR5cGVzIHVzZWQgaW4gSlNPTiBPTiAuLi4gQkVIQVZJT1IgY2xhdXNlCisgKgor ICogCQlJZiBlbnVtIG1lbWJlcnMgYXJlIHJlb3JkZXJlZCwgZ2V0X2pzb25fYmVoYXZpb3Io KSBmcm9tIHJ1bGV1dGlscy5jCisgKiAJCW11c3QgYmUgdXBkYXRlZCBhY2NvcmRpbmdseS4K KyAqLwordHlwZWRlZiBlbnVtIEpzb25CZWhhdmlvclR5cGUKK3sKKwlKU09OX0JFSEFWSU9S X05VTEwgPSAwLAorCUpTT05fQkVIQVZJT1JfRVJST1IsCisJSlNPTl9CRUhBVklPUl9FTVBU WSwKKwlKU09OX0JFSEFWSU9SX1RSVUUsCisJSlNPTl9CRUhBVklPUl9GQUxTRSwKKwlKU09O X0JFSEFWSU9SX1VOS05PV04sCisJSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWSwKKwlKU09O X0JFSEFWSU9SX0VNUFRZX09CSkVDVCwKKwlKU09OX0JFSEFWSU9SX0RFRkFVTFQKK30gSnNv bkJlaGF2aW9yVHlwZTsKKworLyoKKyAqIEpzb25XcmFwcGVyIC0KKyAqCQlyZXByZXNlbnRh dGlvbiBvZiBXUkFQUEVSIGNsYXVzZSBmb3IgSlNPTl9RVUVSWSgpCisgKi8KK3R5cGVkZWYg ZW51bSBKc29uV3JhcHBlcgoreworCUpTV19OT05FLAorCUpTV19DT05ESVRJT05BTCwKKwlK U1dfVU5DT05ESVRJT05BTCwKK30gSnNvbldyYXBwZXI7CisKKy8qCisgKiBKc29uRm9ybWF0 IC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIEZPUk1BVCBjbGF1c2UKKyAqLwordHlw ZWRlZiBzdHJ1Y3QgSnNvbkZvcm1hdAoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvbkZvcm1h dFR5cGUgZm9ybWF0X3R5cGU7CS8qIGZvcm1hdCB0eXBlICovCisJSnNvbkVuY29kaW5nIGVu Y29kaW5nOwkJLyogSlNPTiBlbmNvZGluZyAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9r ZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvbkZvcm1hdDsKKworLyoK KyAqIEpzb25SZXR1cm5pbmcgLQorICoJCXRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9m IEpTT04gUkVUVVJOSU5HIGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uUmV0dXJu aW5nCit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uRm9ybWF0ICpmb3JtYXQ7CQkJLyogb3V0 cHV0IEpTT04gZm9ybWF0ICovCisJT2lkCQkJdHlwaWQ7CQkJLyogdGFyZ2V0IHR5cGUgT2lk ICovCisJaW50MzIJCXR5cG1vZDsJCQkvKiB0YXJnZXQgdHlwZSBtb2RpZmllciAqLworfSBK c29uUmV0dXJuaW5nOworCisvKgorICogSnNvblZhbHVlRXhwciAtCisgKgkJcmVwcmVzZW50 YXRpb24gb2YgSlNPTiB2YWx1ZSBleHByZXNzaW9uIChleHByIFtGT1JNQVQganNvbl9mb3Jt YXRdKQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVmFsdWVFeHByCit7CisJTm9kZVRhZwkJ dHlwZTsKKwlFeHByCSAgICpyYXdfZXhwcjsJCS8qIHJhdyBleHByZXNzaW9uICovCisJRXhw cgkgICAqZm9ybWF0dGVkX2V4cHI7CS8qIGZvcm1hdHRlZCBleHByZXNzaW9uIG9yIE5VTEwg Ki8KKwlKc29uRm9ybWF0ICpmb3JtYXQ7CQkJLyogRk9STUFUIGNsYXVzZSwgaWYgc3BlY2lm aWVkICovCit9IEpzb25WYWx1ZUV4cHI7CisKK3R5cGVkZWYgZW51bSBKc29uQ29uc3RydWN0 b3JUeXBlCit7CisJSlNDVE9SX0pTT05fT0JKRUNUID0gMSwKKwlKU0NUT1JfSlNPTl9BUlJB WSA9IDIsCisJSlNDVE9SX0pTT05fT0JKRUNUQUdHID0gMywKKwlKU0NUT1JfSlNPTl9BUlJB WUFHRyA9IDQsCisJSlNDVE9SX0pTT05fU0NBTEFSID0gNSwKKwlKU0NUT1JfSlNPTl9TRVJJ QUxJWkUgPSA2LAorCUpTQ1RPUl9KU09OX1BBUlNFID0gNworfSBKc29uQ29uc3RydWN0b3JU eXBlOworCisvKgorICogSnNvbkNvbnN0cnVjdG9yRXhwciAtCisgKgkJd3JhcHBlciBvdmVy IEZ1bmNFeHByL0FnZ3JlZi9XaW5kb3dGdW5jIGZvciBTUUwvSlNPTiBjb25zdHJ1Y3RvcnMK KyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkNvbnN0cnVjdG9yRXhwcgoreworCUV4cHIJCXhw cjsKKwlKc29uQ29uc3RydWN0b3JUeXBlIHR5cGU7CS8qIGNvbnN0cnVjdG9yIHR5cGUgKi8K KwlMaXN0CSAgICphcmdzOworCUV4cHIJICAgKmZ1bmM7CQkJLyogdW5kZXJseWluZyBqc29u W2JdX3h4eCgpIGZ1bmN0aW9uIGNhbGwgKi8KKwlFeHByCSAgICpjb2VyY2lvbjsJCS8qIGNv ZXJjaW9uIHRvIFJFVFVSTklORyB0eXBlICovCisJSnNvblJldHVybmluZyAqcmV0dXJuaW5n OwkvKiBSRVRVUk5JTkcgY2xhdXNlICovCisJYm9vbAkJYWJzZW50X29uX251bGw7CS8qIEFC U0VOVCBPTiBOVUxMPyAqLworCWJvb2wJCXVuaXF1ZTsJCQkvKiBXSVRIIFVOSVFVRSBLRVlT PyAoSlNPTl9PQkpFQ1RbQUdHXSBvbmx5KSAqLworCWludAkJCWxvY2F0aW9uOworfSBKc29u Q29uc3RydWN0b3JFeHByOworCisvKgorICogSnNvblZhbHVlVHlwZSAtCisgKgkJcmVwcmVz ZW50YXRpb24gb2YgSlNPTiBpdGVtIHR5cGUgaW4gSVMgSlNPTiBwcmVkaWNhdGUKKyAqLwor dHlwZWRlZiBlbnVtIEpzb25WYWx1ZVR5cGUKK3sKKwlKU19UWVBFX0FOWSwJCQkJLyogSVMg SlNPTiBbVkFMVUVdICovCisJSlNfVFlQRV9PQkpFQ1QsCQkJCS8qIElTIEpTT04gT0JKRUNU ICovCisJSlNfVFlQRV9BUlJBWSwJCQkJLyogSVMgSlNPTiBBUlJBWSovCisJSlNfVFlQRV9T Q0FMQVIJCQkJLyogSVMgSlNPTiBTQ0FMQVIgKi8KK30gSnNvblZhbHVlVHlwZTsKKworLyoK KyAqIEpzb25Jc1ByZWRpY2F0ZSAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlv biBvZiBJUyBKU09OIHByZWRpY2F0ZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uSXNQcmVk aWNhdGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCU5vZGUJICAgKmV4cHI7CQkJLyogdW50cmFu c2Zvcm1lZCBleHByZXNzaW9uICovCisJSnNvbkZvcm1hdCAqZm9ybWF0OwkJCS8qIEZPUk1B VCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLworCUpzb25WYWx1ZVR5cGUgdmFsdWVfdHlwZTsJ LyogSlNPTiBpdGVtIHR5cGUgKi8KKwlib29sCQl1bmlxdWVfa2V5czsJLyogY2hlY2sga2V5 IHVuaXF1ZW5lc3M/ICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwg b3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uSXNQcmVkaWNhdGU7CisKKy8qCisgKiBKc29u QmVoYXZpb3IgLQorICoJCXJlcHJlc2VudGF0aW9uIG9mIEpTT04gT04gLi4uIEJFSEFWSU9S IGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uQmVoYXZpb3IKK3sKKwlOb2RlVGFn CQl0eXBlOworCUpzb25CZWhhdmlvclR5cGUgYnR5cGU7CQkvKiBiZWhhdmlvciB0eXBlICov CisJTm9kZQkgICAqZGVmYXVsdF9leHByOwkvKiBkZWZhdWx0IGV4cHJlc3Npb24sIGlmIGFu eSAqLworfSBKc29uQmVoYXZpb3I7CisKKy8qCisgKiBKc29uQ29lcmNpb24gLQorICoJCWNv ZXJjaW9uIGZyb20gU1FML0pTT04gaXRlbSB0eXBlcyB0byBTUUwgdHlwZXMKKyAqLwordHlw ZWRlZiBzdHJ1Y3QgSnNvbkNvZXJjaW9uCit7CisJTm9kZVRhZwkJdHlwZTsKKwlOb2RlCSAg ICpleHByOwkJCS8qIHJlc3VsdGluZyBleHByZXNzaW9uIGNvZXJjZWQgdG8gdGFyZ2V0IHR5 cGUgKi8KKwlib29sCQl2aWFfcG9wdWxhdGU7CS8qIGNvZXJjZSByZXN1bHQgdXNpbmcganNv bl9wb3B1bGF0ZV90eXBlKCk/ICovCisJYm9vbAkJdmlhX2lvOwkJCS8qIGNvZXJjZSByZXN1 bHQgdXNpbmcgdHlwZSBpbnB1dCBmdW5jdGlvbj8gKi8KKwlPaWQJCQljb2xsYXRpb247CQkv KiBjb2xsYXRpb24gZm9yIGNvZXJjaW9uIHZpYSBJL08gb3IgcG9wdWxhdGUgKi8KK30gSnNv bkNvZXJjaW9uOworCisvKgorICogSnNvbkl0ZW1Db2VyY2lvbnMgLQorICoJCWV4cHJlc3Np b25zIGZvciBjb2VyY2lvbiBmcm9tIFNRTC9KU09OIGl0ZW0gdHlwZXMgZGlyZWN0bHkgdG8g dGhlCisgKgkJb3V0cHV0IFNRTCB0eXBlCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25JdGVt Q29lcmNpb25zCit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uQ29lcmNpb24gKm51bGw7CisJ SnNvbkNvZXJjaW9uICpzdHJpbmc7CisJSnNvbkNvZXJjaW9uICpudW1lcmljOworCUpzb25D b2VyY2lvbiAqYm9vbGVhbjsKKwlKc29uQ29lcmNpb24gKmRhdGU7CisJSnNvbkNvZXJjaW9u ICp0aW1lOworCUpzb25Db2VyY2lvbiAqdGltZXR6OworCUpzb25Db2VyY2lvbiAqdGltZXN0 YW1wOworCUpzb25Db2VyY2lvbiAqdGltZXN0YW1wdHo7CisJSnNvbkNvZXJjaW9uICpjb21w b3NpdGU7CS8qIGFycmF5cyBhbmQgb2JqZWN0cyAqLworfSBKc29uSXRlbUNvZXJjaW9uczsK KworLyoKKyAqIEpzb25FeHByIC0KKyAqCQl0cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBv ZiBKU09OX1ZBTFVFKCksIEpTT05fUVVFUlkoKSwgSlNPTl9FWElTVFMoKQorICovCit0eXBl ZGVmIHN0cnVjdCBKc29uRXhwcgoreworCUV4cHIJCXhwcjsKKwlKc29uRXhwck9wCW9wOwkJ CQkvKiBqc29uIGZ1bmN0aW9uIElEICovCisJTm9kZQkgICAqZm9ybWF0dGVkX2V4cHI7CS8q IGZvcm1hdHRlZCBjb250ZXh0IGl0ZW0gZXhwcmVzc2lvbiAqLworCUpzb25Db2VyY2lvbiAq cmVzdWx0X2NvZXJjaW9uOwkvKiByZXN1bHRpbmcgY29lcmNpb24gdG8gUkVUVVJOSU5HIHR5 cGUgKi8KKwlKc29uRm9ybWF0ICpmb3JtYXQ7CQkJLyogY29udGV4dCBpdGVtIGZvcm1hdCAo SlNPTi9KU09OQikgKi8KKwlOb2RlCSAgICpwYXRoX3NwZWM7CQkvKiBKU09OIHBhdGggc3Bl Y2lmaWNhdGlvbiBleHByZXNzaW9uICovCisJTGlzdAkgICAqcGFzc2luZ19uYW1lczsJLyog UEFTU0lORyBhcmd1bWVudCBuYW1lcyAqLworCUxpc3QJICAgKnBhc3NpbmdfdmFsdWVzOwkv KiBQQVNTSU5HIGFyZ3VtZW50IHZhbHVlcyAqLworCUpzb25SZXR1cm5pbmcgKnJldHVybmlu ZzsJLyogUkVUVVJOSU5HIGNsYXVzZSB0eXBlL2Zvcm1hdCBpbmZvICovCisJSnNvbkJlaGF2 aW9yICpvbl9lbXB0eTsJCS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCisJSnNvbkJlaGF2aW9y ICpvbl9lcnJvcjsJCS8qIE9OIEVSUk9SIGJlaGF2aW9yICovCisJSnNvbkl0ZW1Db2VyY2lv bnMgKmNvZXJjaW9uczsgLyogY29lcmNpb25zIGZvciBKU09OX1ZBTFVFICovCisJSnNvbldy YXBwZXIJd3JhcHBlcjsJCS8qIFdSQVBQRVIgZm9yIEpTT05fUVVFUlkgKi8KKwlib29sCQlv bWl0X3F1b3RlczsJLyogS0VFUC9PTUlUIFFVT1RFUyBmb3IgSlNPTl9RVUVSWSAqLworCWlu dAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8K K30gSnNvbkV4cHI7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqIE51bGxUZXN0CiAgKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCmluZGV4IGJjZWY3ZWVkMmYuLmFiM2Q4ZTBiNTIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogLyogbmFtZSwgdmFsdWUsIGNhdGVn b3J5LCBpcy1iYXJlLWxhYmVsICovCiBQR19LRVlXT1JEKCJhYm9ydCIsIEFCT1JUX1AsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImFic2VudCIsIEFC U0VOVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiYWJz b2x1dGUiLCBBQlNPTFVURV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJhY2Nlc3MiLCBBQ0NFU1MsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImFjdGlvbiIsIEFDVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQpAQCAtOTIsNiArOTMsNyBAQCBQR19LRVlXT1JEKCJjb21taXQiLCBD T01NSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImNv bW1pdHRlZCIsIENPTU1JVFRFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgiY29tcHJlc3Npb24iLCBDT01QUkVTU0lPTiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiY29uY3VycmVudGx5IiwgQ09OQ1VSUkVO VExZLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi Y29uZGl0aW9uYWwiLCBDT05ESVRJT05BTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgiY29uZmlndXJhdGlvbiIsIENPTkZJR1VSQVRJT04sIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImNvbmZsaWN0IiwgQ09O RkxJQ1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImNv bm5lY3Rpb24iLCBDT05ORUNUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CkBAIC0xNDYsMTEgKzE0OCwxMyBAQCBQR19LRVlXT1JEKCJkb3VibGUiLCBET1VCTEVfUCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZHJvcCIsIERS T1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVhY2gi LCBFQUNILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJl bHNlIiwgRUxTRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo ImVtcHR5IiwgRU1QVFlfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgiZW5hYmxlIiwgRU5BQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImVuY29kaW5nIiwgRU5DT0RJTkcsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVuY3J5cHRlZCIsIEVOQ1JZUFRFRCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW5kIiwgRU5E X1AsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbnVtIiwg RU5VTV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJl cnJvciIsIEVSUk9SX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImVzY2FwZSIsIEVTQ0FQRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgiZXZlbnQiLCBFVkVOVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgiZXhjZXB0IiwgRVhDRVBULCBSRVNFUlZFRF9LRVlXT1JE LCBBU19MQUJFTCkKQEAgLTE3NSw2ICsxNzksNyBAQCBQR19LRVlXT1JEKCJmb2xsb3dpbmci LCBGT0xMT1dJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImZvciIsIEZPUiwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JE KCJmb3JjZSIsIEZPUkNFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJmb3JlaWduIiwgRk9SRUlHTiwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKK1BHX0tFWVdPUkQoImZvcm1hdCIsIEZPUk1BVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZm9yd2FyZCIsIEZPUldBUkQsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImZyZWV6ZSIsIEZSRUVaRSwgVFlQ RV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImZyb20iLCBG Uk9NLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKQEAgLTIyNyw3ICsyMzIsMTkgQEAg UEdfS0VZV09SRCgiaXMiLCBJUywgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImlzbnVsbCIsIElTTlVMTCwgVFlQRV9GVU5DX05BTUVfS0VZV09S RCwgQVNfTEFCRUwpCiBQR19LRVlXT1JEKCJpc29sYXRpb24iLCBJU09MQVRJT04sIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpvaW4iLCBKT0lOLCBU WVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbiIs IEpTT04sIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29u X2FycmF5IiwgSlNPTl9BUlJBWSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BH X0tFWVdPUkQoImpzb25fYXJyYXlhZ2ciLCBKU09OX0FSUkFZQUdHLCBDT0xfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbl9leGlzdHMiLCBKU09OX0VYSVNU UywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fb2Jq ZWN0IiwgSlNPTl9PQkpFQ1QsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19L RVlXT1JEKCJqc29uX29iamVjdGFnZyIsIEpTT05fT0JKRUNUQUdHLCBDT0xfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbl9xdWVyeSIsIEpTT05fUVVFUlks IENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3NjYWxh ciIsIEpTT05fU0NBTEFSLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgianNvbl9zZXJpYWxpemUiLCBKU09OX1NFUklBTElaRSwgQ09MX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fdmFsdWUiLCBKU09OX1ZBTFVFLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgia2VlcCIsIEtFRVAs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImtleSIsIEtF WSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgia2V5cyIs IEtFWVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImxh YmVsIiwgTEFCRUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImxhbmd1YWdlIiwgTEFOR1VBR0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImxhcmdlIiwgTEFSR0VfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQpAQCAtMjg5LDYgKzMwNiw3IEBAIFBHX0tFWVdPUkQoIm9mZiIsIE9GRiwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgib2Zmc2V0Iiwg T0ZGU0VULCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoIm9pZHMi LCBPSURTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJv bGQiLCBPTEQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo Im9taXQiLCBPTUlULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJvbiIsIE9OLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQo Im9ubHkiLCBPTkxZLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgib3BlcmF0b3IiLCBPUEVSQVRPUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQpAQCAtMzMwLDYgKzM0OCw3IEBAIFBHX0tFWVdPUkQoInByb2NlZHVyZXMiLCBQUk9DRURV UkVTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwcm9n cmFtIiwgUFJPR1JBTSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicHVibGljYXRpb24iLCBQVUJMSUNBVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicXVvdGUiLCBRVU9URSwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicXVvdGVzIiwgUVVPVEVTLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyYW5nZSIsIFJBTkdFLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZWFkIiwgUkVB RCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmVhbCIs IFJFQUwsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zNjQsNiArMzgzLDcg QEAgUEdfS0VZV09SRCgicm93IiwgUk9XLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgicm93cyIsIFJPV1MsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInJ1bGUiLCBSVUxFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzYXZlcG9pbnQiLCBTQVZFUE9JTlQsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInNjYWxhciIsIFNDQUxBUiwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic2NoZW1hIiwg U0NIRU1BLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJz Y2hlbWFzIiwgU0NIRU1BUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgic2Nyb2xsIiwgU0NST0xMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCkBAIC0zOTksNiArNDE5LDcgQEAgUEdfS0VZV09SRCgic3Rkb3V0IiwgU1RET1VULCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdG9yYWdlIiwg U1RPUkFHRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi c3RvcmVkIiwgU1RPUkVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJzdHJpY3QiLCBTVFJJQ1RfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQorUEdfS0VZV09SRCgic3RyaW5nIiwgU1RSSU5HLCBUWVBFX0ZVTkNfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RyaXAiLCBTVFJJUF9QLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdWJzY3JpcHRpb24iLCBT VUJTQ1JJUFRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInN1YnN0cmluZyIsIFNVQlNUUklORywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKQEAgLTQzMyw2ICs0NTQsNyBAQCBQR19LRVlXT1JEKCJ0eXBlcyIsIFRZUEVTX1AsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInVlc2NhcGUiLCBV RVNDQVBFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ1 bmJvdW5kZWQiLCBVTkJPVU5ERUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInVuY29tbWl0dGVkIiwgVU5DT01NSVRURUQsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInVuY29uZGl0aW9uYWwiLCBVTkNPTkRJ VElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ1 bmVuY3J5cHRlZCIsIFVORU5DUllQVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJ1bmlvbiIsIFVOSU9OLCBSRVNFUlZFRF9LRVlXT1JELCBBU19M QUJFTCkKIFBHX0tFWVdPUkQoInVuaXF1ZSIsIFVOSVFVRSwgUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaAppbmRleCA4NTFlNzg3YmZkLi4w YTIyYWY4MGEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0aW5nLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0dGluZy5oCkBAIC0xNyw2ICsxNyw5IEBA CiAjaWZuZGVmIF9GT1JNQVRUSU5HX0hfCiAjZGVmaW5lIF9GT1JNQVRUSU5HX0hfCiAKKyNk ZWZpbmUgRENIX0RBVEVECTB4MDEKKyNkZWZpbmUgRENIX1RJTUVECTB4MDIKKyNkZWZpbmUg RENIX1pPTkVECTB4MDQKIAogZXh0ZXJuIGNoYXIgKnN0cl90b2xvd2VyKGNvbnN0IGNoYXIg KmJ1ZmYsIHNpemVfdCBuYnl0ZXMsIE9pZCBjb2xsaWQpOwogZXh0ZXJuIGNoYXIgKnN0cl90 b3VwcGVyKGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBuYnl0ZXMsIE9pZCBjb2xsaWQpOwpA QCAtMjksNSArMzIsNiBAQCBleHRlcm4gY2hhciAqYXNjX2luaXRjYXAoY29uc3QgY2hhciAq YnVmZiwgc2l6ZV90IG5ieXRlcyk7CiBleHRlcm4gRGF0dW0gcGFyc2VfZGF0ZXRpbWUodGV4 dCAqZGF0ZV90eHQsIHRleHQgKmZtdCwgT2lkIGNvbGxpZCwgYm9vbCBzdHJpY3QsCiAJCQkJ CQkJT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCwgaW50ICp0eiwKIAkJCQkJCQlib29sICpo YXZlX2Vycm9yKTsKK2V4dGVybiBpbnQgZGF0ZXRpbWVfZm9ybWF0X2ZsYWdzKGNvbnN0IGNo YXIgKmZtdF9zdHIsIGJvb2wgKmhhdmVfZXJyb3IpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaApp bmRleCA4YTg0YTBjZGI0Li5kYTRhOTI1N2IzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9qc29uLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNiw5ICsx NiwzNSBAQAogCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKIAordHlwZWRlZiBlbnVt CQkJCQkvKiB0eXBlIGNhdGVnb3JpZXMgZm9yIGRhdHVtX3RvX2pzb24gKi8KK3sKKwlKU09O VFlQRV9OVUxMLAkJCQkvKiBudWxsLCBzbyB3ZSBkaWRuJ3QgYm90aGVyIHRvIGlkZW50aWZ5 ICovCisJSlNPTlRZUEVfQk9PTCwJCQkJLyogYm9vbGVhbiAoYnVpbHQtaW4gdHlwZXMgb25s eSkgKi8KKwlKU09OVFlQRV9OVU1FUklDLAkJCS8qIG51bWVyaWMgKGRpdHRvKSAqLworCUpT T05UWVBFX0RBVEUsCQkJCS8qIHdlIHVzZSBzcGVjaWFsIGZvcm1hdHRpbmcgZm9yIGRhdGV0 aW1lcyAqLworCUpTT05UWVBFX1RJTUVTVEFNUCwKKwlKU09OVFlQRV9USU1FU1RBTVBUWiwK KwlKU09OVFlQRV9KU09OLAkJCQkvKiBKU09OIGl0c2VsZiAoYW5kIEpTT05CKSAqLworCUpT T05UWVBFX0FSUkFZLAkJCQkvKiBhcnJheSAqLworCUpTT05UWVBFX0NPTVBPU0lURSwJCQkv KiBjb21wb3NpdGUgKi8KKwlKU09OVFlQRV9DQVNULAkJCQkvKiBzb21ldGhpbmcgd2l0aCBh biBleHBsaWNpdCBjYXN0IHRvIEpTT04gKi8KKwlKU09OVFlQRV9PVEhFUgkJCQkvKiBhbGwg ZWxzZSAqLworfSBKc29uVHlwZUNhdGVnb3J5OworCiAvKiBmdW5jdGlvbnMgaW4ganNvbi5j ICovCiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hh ciAqc3RyKTsKIGV4dGVybiBjaGFyICpKc29uRW5jb2RlRGF0ZVRpbWUoY2hhciAqYnVmLCBE YXR1bSB2YWx1ZSwgT2lkIHR5cGlkLAogCQkJCQkJCQljb25zdCBpbnQgKnR6cCk7CitleHRl cm4gYm9vbCB0b19qc29uX2lzX2ltbXV0YWJsZShPaWQgdHlwb2lkKTsKK2V4dGVybiB2b2lk IGpzb25fY2F0ZWdvcml6ZV90eXBlKE9pZCB0eXBvaWQsIEpzb25UeXBlQ2F0ZWdvcnkgKnRj YXRlZ29yeSwKKwkJCQkJCQkJIE9pZCAqb3V0ZnVuY29pZCk7CitleHRlcm4gRGF0dW0gdG9f anNvbl93b3JrZXIoRGF0dW0gdmFsLCBKc29uVHlwZUNhdGVnb3J5IHRjYXRlZ29yeSwKKwkJ CQkJCQlPaWQgb3V0ZnVuY29pZCk7CitleHRlcm4gRGF0dW0ganNvbl9idWlsZF9vYmplY3Rf d29ya2VyKGludCBuYXJncywgRGF0dW0gKmFyZ3MsIGJvb2wgKm51bGxzLAorCQkJCQkJCQkJ ICBPaWQgKnR5cGVzLCBib29sIGFic2VudF9vbl9udWxsLAorCQkJCQkJCQkJICBib29sIHVu aXF1ZV9rZXlzKTsKK2V4dGVybiBEYXR1bSBqc29uX2J1aWxkX2FycmF5X3dvcmtlcihpbnQg bmFyZ3MsIERhdHVtICphcmdzLCBib29sICpudWxscywKKwkJCQkJCQkJCSBPaWQgKnR5cGVz LCBib29sIGFic2VudF9vbl9udWxsKTsKK2V4dGVybiBib29sIGpzb25fdmFsaWRhdGUodGV4 dCAqanNvbiwgYm9vbCBjaGVja191bmlxdWVfa2V5cywgYm9vbCB0aHJvd19lcnJvcik7CiAK ICNlbmRpZgkJCQkJCQkvKiBKU09OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL2pzb25iLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oCmluZGV4IDRjYmU2ZWRm MjEuLmJhZTQ2NmI1MjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaApAQCAtMzI5LDYgKzMyOSw4IEBAIHR5 cGVkZWYgc3RydWN0IEpzb25iUGFyc2VTdGF0ZQogCUpzb25iVmFsdWUJY29udFZhbDsKIAlT aXplCQlzaXplOwogCXN0cnVjdCBKc29uYlBhcnNlU3RhdGUgKm5leHQ7CisJYm9vbAkJdW5p cXVlX2tleXM7CS8qIENoZWNrIG9iamVjdCBrZXkgdW5pcXVlbmVzcyAqLworCWJvb2wJCXNr aXBfbnVsbHM7CQkvKiBTa2lwIG51bGwgb2JqZWN0IGZpZWxkcyAqLwogfSBKc29uYlBhcnNl U3RhdGU7CiAKIC8qCkBAIC0zNzQsNiArMzc2LDIyIEBAIHR5cGVkZWYgc3RydWN0IEpzb25i SXRlcmF0b3IKIAlzdHJ1Y3QgSnNvbmJJdGVyYXRvciAqcGFyZW50OwogfSBKc29uYkl0ZXJh dG9yOwogCisvKiB1bmxpa2Ugd2l0aCBqc29uIGNhdGVnb3JpZXMsIHdlIG5lZWQgdG8gdHJl YXQganNvbiBhbmQganNvbmIgZGlmZmVyZW50bHkgKi8KK3R5cGVkZWYgZW51bQkJCQkJLyog dHlwZSBjYXRlZ29yaWVzIGZvciBkYXR1bV90b19qc29uYiAqLworeworCUpTT05CVFlQRV9O VUxMLAkJCQkvKiBudWxsLCBzbyB3ZSBkaWRuJ3QgYm90aGVyIHRvIGlkZW50aWZ5ICovCisJ SlNPTkJUWVBFX0JPT0wsCQkJCS8qIGJvb2xlYW4gKGJ1aWx0LWluIHR5cGVzIG9ubHkpICov CisJSlNPTkJUWVBFX05VTUVSSUMsCQkJLyogbnVtZXJpYyAoZGl0dG8pICovCisJSlNPTkJU WVBFX0RBVEUsCQkJCS8qIHdlIHVzZSBzcGVjaWFsIGZvcm1hdHRpbmcgZm9yIGRhdGV0aW1l cyAqLworCUpTT05CVFlQRV9USU1FU1RBTVAsCQkvKiB3ZSB1c2Ugc3BlY2lhbCBmb3JtYXR0 aW5nIGZvciB0aW1lc3RhbXAgKi8KKwlKU09OQlRZUEVfVElNRVNUQU1QVFosCQkvKiAuLi4g YW5kIHRpbWVzdGFtcHR6ICovCisJSlNPTkJUWVBFX0pTT04sCQkJCS8qIEpTT04gKi8KKwlK U09OQlRZUEVfSlNPTkIsCQkJLyogSlNPTkIgKi8KKwlKU09OQlRZUEVfQVJSQVksCQkJLyog YXJyYXkgKi8KKwlKU09OQlRZUEVfQ09NUE9TSVRFLAkJLyogY29tcG9zaXRlICovCisJSlNP TkJUWVBFX0pTT05DQVNULAkJCS8qIHNvbWV0aGluZyB3aXRoIGFuIGV4cGxpY2l0IGNhc3Qg dG8gSlNPTiAqLworCUpTT05CVFlQRV9PVEhFUgkJCQkvKiBhbGwgZWxzZSAqLworfSBKc29u YlR5cGVDYXRlZ29yeTsKIAogLyogU3VwcG9ydCBmdW5jdGlvbnMgKi8KIGV4dGVybiB1aW50 MzIgZ2V0SnNvbmJPZmZzZXQoY29uc3QgSnNvbmJDb250YWluZXIgKmpjLCBpbnQgaW5kZXgp OwpAQCAtNDAxLDEwICs0MTksMTQgQEAgZXh0ZXJuIHZvaWQgSnNvbmJIYXNoU2NhbGFyVmFs dWVFeHRlbmRlZChjb25zdCBKc29uYlZhbHVlICpzY2FsYXJWYWwsCiAJCQkJCQkJCQkJIHVp bnQ2NCAqaGFzaCwgdWludDY0IHNlZWQpOwogCiAvKiBqc29uYi5jIHN1cHBvcnQgZnVuY3Rp b25zICovCitleHRlcm4gRGF0dW0ganNvbmJfZnJvbV90ZXh0KHRleHQgKmpzLCBib29sIHVu aXF1ZV9rZXlzKTsKIGV4dGVybiBjaGFyICpKc29uYlRvQ1N0cmluZyhTdHJpbmdJbmZvIG91 dCwgSnNvbmJDb250YWluZXIgKmluLAogCQkJCQkJCWludCBlc3RpbWF0ZWRfbGVuKTsKIGV4 dGVybiBjaGFyICpKc29uYlRvQ1N0cmluZ0luZGVudChTdHJpbmdJbmZvIG91dCwgSnNvbmJD b250YWluZXIgKmluLAogCQkJCQkJCQkgIGludCBlc3RpbWF0ZWRfbGVuKTsKK2V4dGVybiBK c29uYiAqSnNvbmJNYWtlRW1wdHlBcnJheSh2b2lkKTsKK2V4dGVybiBKc29uYiAqSnNvbmJN YWtlRW1wdHlPYmplY3Qodm9pZCk7CitleHRlcm4gY2hhciAqSnNvbmJVbnF1b3RlKEpzb25i ICpqYik7CiBleHRlcm4gYm9vbCBKc29uYkV4dHJhY3RTY2FsYXIoSnNvbmJDb250YWluZXIg KmpiYywgSnNvbmJWYWx1ZSAqcmVzKTsKIGV4dGVybiBjb25zdCBjaGFyICpKc29uYlR5cGVO YW1lKEpzb25iVmFsdWUgKmpiKTsKIApAQCAtNDEyLDQgKzQzNCwxNSBAQCBleHRlcm4gRGF0 dW0ganNvbmJfc2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50IHBhdGhf bGVuLAogCQkJCQkJCSAgIEpzb25iVmFsdWUgKm5ld3ZhbCk7CiBleHRlcm4gRGF0dW0ganNv bmJfZ2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50IG5wYXRoLAogCQkJ CQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KTsKK2V4dGVybiBib29sIHRvX2pz b25iX2lzX2ltbXV0YWJsZShPaWQgdHlwb2lkKTsKK2V4dGVybiB2b2lkIGpzb25iX2NhdGVn b3JpemVfdHlwZShPaWQgdHlwb2lkLCBKc29uYlR5cGVDYXRlZ29yeSAqdGNhdGVnb3J5LAor CQkJCQkJCQkgIE9pZCAqb3V0ZnVuY29pZCk7CitleHRlcm4gRGF0dW0gdG9fanNvbmJfd29y a2VyKERhdHVtIHZhbCwgSnNvbmJUeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LAorCQkJCQkJCSBP aWQgb3V0ZnVuY29pZCk7CitleHRlcm4gRGF0dW0ganNvbmJfYnVpbGRfb2JqZWN0X3dvcmtl cihpbnQgbmFyZ3MsIERhdHVtICphcmdzLCBib29sICpudWxscywKKwkJCQkJCQkJCSAgIE9p ZCAqdHlwZXMsIGJvb2wgYWJzZW50X29uX251bGwsCisJCQkJCQkJCQkgICBib29sIHVuaXF1 ZV9rZXlzKTsKK2V4dGVybiBEYXR1bSBqc29uYl9idWlsZF9hcnJheV93b3JrZXIoaW50IG5h cmdzLCBEYXR1bSAqYXJncywgYm9vbCAqbnVsbHMsCisJCQkJCQkJCQkgIE9pZCAqdHlwZXMs IGJvb2wgYWJzZW50X29uX251bGwpOworCiAjZW5kaWYJCQkJCQkJLyogX19KU09OQl9IX18g Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKaW5kZXggODY1YjJmZjdjMS4uNjJkYzNkODhhNCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgZXh0ZXJuIHZvaWQg cGdfcGFyc2VfanNvbl9vcl9lcmVwb3J0KEpzb25MZXhDb250ZXh0ICpsZXgsIEpzb25TZW1B Y3Rpb24gKnNlbSk7CiAvKiByZXBvcnQgYW4gZXJyb3IgZHVyaW5nIGpzb24gbGV4aW5nIG9y IHBhcnNpbmcgKi8KIGV4dGVybiB2b2lkIGpzb25fZXJlcG9ydF9lcnJvcihKc29uUGFyc2VF cnJvclR5cGUgZXJyb3IsIEpzb25MZXhDb250ZXh0ICpsZXgpOwogCisvKiBnZXQgZmlyc3Qg SlNPTiB0b2tlbiAqLworZXh0ZXJuIEpzb25Ub2tlblR5cGUganNvbl9nZXRfZmlyc3RfdG9r ZW4odGV4dCAqanNvbiwgYm9vbCB0aHJvd19lcnJvcik7CisKIGV4dGVybiB1aW50MzIgcGFy c2VfanNvbmJfaW5kZXhfZmxhZ3MoSnNvbmIgKmpiKTsKIGV4dGVybiB2b2lkIGl0ZXJhdGVf anNvbmJfdmFsdWVzKEpzb25iICpqYiwgdWludDMyIGZsYWdzLCB2b2lkICpzdGF0ZSwKIAkJ CQkJCQkJIEpzb25JdGVyYXRlU3RyaW5nVmFsdWVzQWN0aW9uIGFjdGlvbik7CkBAIC01NSw0 ICs1OCw4IEBAIGV4dGVybiBKc29uYiAqdHJhbnNmb3JtX2pzb25iX3N0cmluZ192YWx1ZXMo SnNvbmIgKmpzb25iLCB2b2lkICphY3Rpb25fc3RhdGUsCiBleHRlcm4gdGV4dCAqdHJhbnNm b3JtX2pzb25fc3RyaW5nX3ZhbHVlcyh0ZXh0ICpqc29uLCB2b2lkICphY3Rpb25fc3RhdGUs CiAJCQkJCQkJCQkJICBKc29uVHJhbnNmb3JtU3RyaW5nVmFsdWVzQWN0aW9uIHRyYW5zZm9y bV9hY3Rpb24pOwogCitleHRlcm4gRGF0dW0ganNvbl9wb3B1bGF0ZV90eXBlKERhdHVtIGpz b25fdmFsLCBPaWQganNvbl90eXBlLAorCQkJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1v ZCwKKwkJCQkJCQkJdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1jeHQsIGJvb2wgKmlz bnVsbCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBh dGguaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKaW5kZXggY2QwYjVkNWI2MS4u OThhNjFkN2Y3MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCkBAIC0xNiw3ICsxNiw5IEBACiAK ICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgorI2luY2x1 ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCisjaW5j bHVkZSAidXRpbHMvanNvbmZ1bmNzLmgiCiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC0xNzQs NiArMTc2LDcgQEAgZXh0ZXJuIGJvb2wganNwR2V0Qm9vbChKc29uUGF0aEl0ZW0gKnYpOwog ZXh0ZXJuIGNoYXIgKmpzcEdldFN0cmluZyhKc29uUGF0aEl0ZW0gKnYsIGludDMyICpsZW4p OwogZXh0ZXJuIGJvb2wganNwR2V0QXJyYXlTdWJzY3JpcHQoSnNvblBhdGhJdGVtICp2LCBK c29uUGF0aEl0ZW0gKmZyb20sCiAJCQkJCQkJCSBKc29uUGF0aEl0ZW0gKnRvLCBpbnQgaSk7 CitleHRlcm4gYm9vbCBqc3BJc011dGFibGUoSnNvblBhdGggKnBhdGgsIExpc3QgKnZhcm5h bWVzLCBMaXN0ICp2YXJleHBycyk7CiAKIGV4dGVybiBjb25zdCBjaGFyICpqc3BPcGVyYXRp b25OYW1lKEpzb25QYXRoSXRlbVR5cGUgdHlwZSk7CiAKQEAgLTI0OCw0ICsyNTEsMzQgQEAg ZXh0ZXJuIEpzb25QYXRoUGFyc2VSZXN1bHQgKnBhcnNlanNvbnBhdGgoY29uc3QgY2hhciAq c3RyLCBpbnQgbGVuKTsKIAogZXh0ZXJuIGludAlqc3BDb252ZXJ0UmVnZXhGbGFncyh1aW50 MzIgeGZsYWdzKTsKIAorLyoKKyAqIEV2YWx1YXRpb24gb2YganNvbnBhdGgKKyAqLworCisv KiBFeHRlcm5hbCB2YXJpYWJsZSBwYXNzZWQgaW50byBqc29ucGF0aC4gKi8KK3R5cGVkZWYg c3RydWN0IEpzb25QYXRoVmFyaWFibGVFdmFsQ29udGV4dAoreworCWNoYXIJICAgKm5hbWU7 CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlzdHJ1Y3QgRXhwckNvbnRleHQg KmVjb250ZXh0OworCXN0cnVjdCBFeHByU3RhdGUgICplc3RhdGU7CisJRGF0dW0JCXZhbHVl OworCWJvb2wJCWlzbnVsbDsKKwlib29sCQlldmFsdWF0ZWQ7Cit9IEpzb25QYXRoVmFyaWFi bGVFdmFsQ29udGV4dDsKKworLyogU1FML0pTT04gaXRlbSAqLworZXh0ZXJuIHZvaWQgSnNv bkl0ZW1Gcm9tRGF0dW0oRGF0dW0gdmFsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJ CQkJCQkgIEpzb25iVmFsdWUgKnJlcyk7CisKK2V4dGVybiBib29sICBKc29uUGF0aEV4aXN0 cyhEYXR1bSBqYiwgSnNvblBhdGggKnBhdGgsIExpc3QgKnZhcnMsIGJvb2wgKmVycm9yKTsK K2V4dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIEpz b25XcmFwcGVyIHdyYXBwZXIsCisJCQkJCQkgICBib29sICplbXB0eSwgYm9vbCAqZXJyb3Is IExpc3QgKnZhcnMpOworZXh0ZXJuIEpzb25iVmFsdWUgKkpzb25QYXRoVmFsdWUoRGF0dW0g amIsIEpzb25QYXRoICpqcCwgYm9vbCAqZW1wdHksCisJCQkJCQkJCSBib29sICplcnJvciwg TGlzdCAqdmFycyk7CisKK2V4dGVybiBpbnQgRXZhbEpzb25QYXRoVmFyKHZvaWQgKnZhcnMs IGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJICAgSnNvbmJWYWx1ZSAq dmFsLCBKc29uYlZhbHVlICpiYXNlT2JqZWN0KTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGFyc2UucGwgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL3ByZXByb2MvcGFyc2UucGwKaW5kZXggZGVlNmI4MjAwZC4uNWVjNTExZmQwMSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlLnBsCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJzZS5wbApAQCAtNDcsNiArNDcsOCBAQCBt eSAlcmVwbGFjZV9zdHJpbmcgPSAoCiAJJ05PVF9MQScgICAgICAgICA9PiAnbm90JywKIAkn TlVMTFNfTEEnICAgICAgID0+ICdudWxscycsCiAJJ1dJVEhfTEEnICAgICAgICA9PiAnd2l0 aCcsCisJJ1dJVEhfTEFfVU5JUVVFJyA9PiAnd2l0aCcsCisJJ1dJVEhPVVRfTEEnICAgICA9 PiAnd2l0aG91dCcsCiAJJ1RZUEVDQVNUJyAgICAgICA9PiAnOjonLAogCSdET1RfRE9UJyAg ICAgICAgPT4gJy4uJywKIAknQ09MT05fRVFVQUxTJyAgID0+ICc6PScsCmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGFyc2VyLmMgYi9zcmMvaW50ZXJmYWNl cy9lY3BnL3ByZXByb2MvcGFyc2VyLmMKaW5kZXggYTQ0ZTA3YTE3YS4uNWUyYjYwNmY5YiAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlci5jCisrKyBi L3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJzZXIuYwpAQCAtODMsNiArODMsNyBA QCBmaWx0ZXJlZF9iYXNlX3l5bGV4KHZvaWQpCiAJCWNhc2UgV0lUSDoKIAkJY2FzZSBVSURF TlQ6CiAJCWNhc2UgVVNDT05TVDoKKwkJY2FzZSBXSVRIT1VUOgogCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQlyZXR1cm4gY3VyX3Rva2VuOwpAQCAtMTQzLDYgKzE0NCwxOSBAQCBmaWx0 ZXJlZF9iYXNlX3l5bGV4KHZvaWQpCiAJCQkJY2FzZSBPUkRJTkFMSVRZOgogCQkJCQljdXJf dG9rZW4gPSBXSVRIX0xBOwogCQkJCQlicmVhazsKKwkJCQljYXNlIFVOSVFVRToKKwkJCQkJ Y3VyX3Rva2VuID0gV0lUSF9MQV9VTklRVUU7CisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJl YWs7CisKKwkJY2FzZSBXSVRIT1VUOgorCQkJLyogUmVwbGFjZSBXSVRIT1VUIGJ5IFdJVEhP VVRfTEEgaWYgaXQncyBmb2xsb3dlZCBieSBUSU1FICovCisJCQlzd2l0Y2ggKG5leHRfdG9r ZW4pCisJCQl7CisJCQkJY2FzZSBUSU1FOgorCQkJCQljdXJfdG9rZW4gPSBXSVRIT1VUX0xB OworCQkJCQlicmVhazsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFVJREVOVDoKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iYjYyNjM0MzE0Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0CkBAIC0wLDAg KzEsMTUgQEAKKy0tIEpTT05fRVhJU1RTCitTRUxFQ1QgSlNPTl9FWElTVFMoTlVMTCBGT1JN QVQgSlNPTiwgJyQnKTsKK0VSUk9SOiAgSlNPTl9FWElTVFMoKSBpcyBub3QgeWV0IGltcGxl bWVudGVkIGZvciBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUIEpTT05fRVhJU1RTKE5VTEwg Rk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAgICBeCistLSBKU09OX1ZBTFVFCitT RUxFQ1QgSlNPTl9WQUxVRShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworRVJST1I6ICBKU09O X1ZBTFVFKCkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IganNvbiB0eXBlCitMSU5FIDE6 IFNFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAg ICAgICBeCistLSBKU09OX1FVRVJZCitTRUxFQ1QgSlNPTl9RVUVSWShOVUxMIEZPUk1BVCBK U09OLCAnJCcpOworRVJST1I6ICBKU09OX1FVRVJZKCkgaXMgbm90IHlldCBpbXBsZW1lbnRl ZCBmb3IganNvbiB0eXBlCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFU IEpTT04sICckJyk7CisgICAgICAgICAgICAgICBeCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9qc29uYl9zcWxqc29uLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4xMTI2ZDdjYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dApAQCAtMCwwICsxLDEwMTggQEAKKy0t IEpTT05fRVhJU1RTCitTRUxFQ1QgSlNPTl9FWElTVFMoTlVMTDo6anNvbmIsICckJyk7Cisg anNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAnW10nLCAnJCcpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKEpTT05fT0JKRUNUKFJFVFVS TklORyBqc29uYiksICckJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJCcpOworIGpzb25f ZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICdudWxsJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAnJCcpOwor IGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICcxJywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0t LS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJ3N0 cmljdCAkLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cp CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyBFUlJPUiBP TiBFUlJPUik7CitFUlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3NvciBjYW4gb25seSBi ZSBhcHBsaWVkIHRvIGFuIG9iamVjdAorU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdudWxs JywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykK KworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICckLmEnKTsKKyBqc29uX2V4aXN0 cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnc3RyaWN0ICQuYScpOworIGpzb25fZXhp c3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICdbMSwgImFhYSIsIHsiYSI6IDF9XScsICdsYXggJC5hJyk7CisganNvbl9leGlz dHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMo anNvbmIgJ3t9JywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYK KygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImIiOiAxLCAiYSI6IDJ9 JywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykK KworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYS5iJyk7CisganNvbl9leGlz dHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMo anNvbmIgJ3siYSI6IHsiYiI6IDF9fScsICckLmEuYicpOworIGpzb25fZXhpc3RzIAorLS0t LS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7 ImEiOiAxLCAiYiI6IDJ9JywgJyQuYS5iJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0t LS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEs ICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgMSBBUyB4KTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4KScgUEFTU0lORyAn MScgQVMgeCk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8g KEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMiBBUyB5KTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4ICYmIEAgPCAkeSkn IFBBU1NJTkcgMCBBUyB4LCAxIEFTIHkpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0t LQorIGYKKygxIHJvdykKKworLS0gZXh0ZW5zaW9uOiBib29sZWFuIGV4cHJlc3Npb25zCitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJCA+IDInKTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAnMScsICckLmEgPiAyJyBFUlJPUiBPTiBFUlJPUik7CisganNvbl9leGlzdHMgCistLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBleHRlbnNpb246IFJFVFVSTklORyBjbGF1 c2UKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckWzBdJyBSRVRVUk5JTkcgYm9v bCk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJFsxXScgUkVUVVJOSU5HIGJvb2wpOworIGpz b25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05f RVhJU1RTKGpzb25iICcxJywgJyRbMF0nIFJFVFVSTklORyBpbnQpOworIGpzb25fZXhpc3Rz IAorLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAnMScsICckWzFdJyBSRVRVUk5JTkcgaW50KTsKKyBqc29uX2V4aXN0 cyAKKy0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMAorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJzEnLCAnJFswXScgUkVUVVJOSU5HIHRleHQpOworIGpzb25fZXhp c3RzIAorLS0tLS0tLS0tLS0tLQorIHRydWUKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICcxJywgJyRbMV0nIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyBmYWxzZQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMo anNvbmIgJzEnLCAnc3RyaWN0ICRbMV0nIFJFVFVSTklORyB0ZXh0IEZBTFNFIE9OIEVSUk9S KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmYWxzZQorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJFswXScgUkVUVVJOSU5HIGpzb25iKTsK K0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIGpzb25iCitMSU5FIDE6IFNF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckWzBdJyBSRVRVUk5JTkcganNvbmIpOwor ICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyRbMF0n IFJFVFVSTklORyBmbG9hdDQpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4g dG8gcmVhbAorTElORSAxOiBTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJFswXScg UkVUVVJOSU5HIGZsb2F0NCk7CisgICAgICAgICAgICAgICBeCistLSBKU09OX1ZBTFVFCitT RUxFQ1QgSlNPTl9WQUxVRShOVUxMOjpqc29uYiwgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxs JywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBpbnQpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICd0cnVlJywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgdHJ1ZQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAndHJ1 ZScsICckJyBSRVRVUk5JTkcgYm9vbCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQor IHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyk7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEyMworKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBpbnQpICsgMjM0OworID9jb2x1 bW4/IAorLS0tLS0tLS0tLQorICAgICAgMzU3CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIHRleHQpOworIGpzb25fdmFsdWUgCist LS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworLyoganNvbmIgYnl0ZWEgPz8/ICovCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBieXRlYSBFUlJP UiBPTiBFUlJPUik7CitFUlJPUjogIFNRTC9KU09OIGl0ZW0gY2Fubm90IGJlIGNhc3QgdG8g dGFyZ2V0IHR5cGUKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywgJyQnKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMS4yMworKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMS4yMycsICckJyBSRVRVUk5JTkcgaW50KTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBudW1lcmljKTsKKyBqc29uX3Zh bHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgMS4yMworKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJS T1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAi MS4yMyIKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyk7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQpOworIGpzb25fdmFsdWUgCist LS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDUpKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgYWFhICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJh YWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIpKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0t LS0tCisgYWEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywg JyQnIFJFVFVSTklORyBqc29uKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFh YSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJF VFVSTklORyBqc29uYik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcganNvbiBFUlJPUiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQor ICJhYWEiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICck JyBSRVRVUk5JTkcganNvbmIgRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0t LS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn IlwiYWFhXCIiJywgJyQnIFJFVFVSTklORyBqc29uKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgIlwiYWFhXCIiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICciXCJhYWFcIiInLCAnJCcgUkVUVVJOSU5HIGpzb25iKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgIlwiYWFhXCIiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjog IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJhYWEiCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBERUZBVUxUIDEx MSBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAxMTEK KygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVS TklORyBpbnQpICsgMjM0OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgMzU3Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMjAxNy0wMi0yMCInLCAnJCcg UkVUVVJOSU5HIGRhdGUpICsgOTsKKyAgP2NvbHVtbj8gIAorLS0tLS0tLS0tLS0tCisgMDMt MDEtMjAxNworKDEgcm93KQorCistLSBUZXN0IE5VTEwgY2hlY2tzIGV4ZWN1dGlvbiBpbiBk b21haW4gdHlwZXMKK0NSRUFURSBET01BSU4gc3FsanNvbmJfaW50X25vdF9udWxsIEFTIGlu dCBOT1QgTlVMTDsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQuYScgUkVUVVJO SU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9p bnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICcxJywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBO VUxMIE9OIEVSUk9SKTsKK0VSUk9SOiAgZG9tYWluIHNxbGpzb25iX2ludF9ub3RfbnVsbCBk b2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEn LCAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIERFRkFVTFQgTlVMTCBP TiBFUlJPUik7CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBu b3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbXScsICck Jyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBK U09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xl dG9uIHNjYWxhciBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ3t9JywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBw YXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBz Y2FsYXIgaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyk7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGpz b25wYXRoIG1lbWJlciBhY2Nlc3NvciBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGFuIG9iamVj dAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAn ZXJyb3InIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgZXJyb3IK KygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJS T1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1Q VFkgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUIDIgT04gRVJST1Ip OworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUICcyJyBPTiBFUlJPUik7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMScsICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFVTFQgJzInIE9OIEVS Uk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVNUFRZ IERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisg MgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBF UlJPUiBPTiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0t LS0tLS0tLS0tLQorIDMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sx LDJdJywgJyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJl c3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRl bQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERFRkFVTFQgJzAn IE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMAorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGlu dCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0 eXBlIGludGVnZXI6ICIgIgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siICJdJywgJyRb Kl0nIFJFVFVSTklORyBpbnQgREVGQVVMVCAyICsgMyBPTiBFUlJPUik7CisganNvbl92YWx1 ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDUKKygxIHJvdykKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgREVGQVVMVCAyICsg MyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDEK KygxIHJvdykKKworU0VMRUNUCisJeCwKKwlKU09OX1ZBTFVFKAorCQlqc29uYiAneyJhIjog MSwgImIiOiAyfScsCisJCSckLiogPyAoQCA+ICR4KScgUEFTU0lORyB4IEFTIHgKKwkJUkVU VVJOSU5HIGludAorCQlERUZBVUxUIC0xIE9OIEVNUFRZCisJCURFRkFVTFQgLTIgT04gRVJS T1IKKwkpIHkKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMCwgMikgeDsKKyB4IHwgeSAgCist LS0rLS0tLQorIDAgfCAtMgorIDEgfCAgMgorIDIgfCAtMQorKDMgcm93cykKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiAp JyBBUyBhKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgKDEsMikKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQg JyAoMSwgMiApJyBBUyBhIFJFVFVSTklORyBwb2ludCk7CisganNvbl92YWx1ZSAKKy0tLS0t LS0tLS0tLQorICgxLDIpCisoMSByb3cpCisKKy0tIFRlc3QgdGltZXN0YW1wdHogcGFzc2lu ZyBhbmQgb3V0cHV0CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBB U1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7Cisg ICAgICAgICAganNvbl92YWx1ZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYgMjAxOCBQU1QKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6 ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcHR6 KTsKKyAgICAgICAgICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgVHVlIEZlYiAyMCAxODozNDo1NiAyMDE4IFBTVAorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0 YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0 YW1wKTsKKyAgICAgICAganNvbl92YWx1ZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYgMjAxOAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIw MTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbik7CisgICAgICAg ICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAy LTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAgICAgIGpz b25fdmFsdWUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIy MDE4LTAyLTIxVDAyOjM0OjU2KzAwOjAwIgorKDEgcm93KQorCistLSBKU09OX1FVRVJZCitT RUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnJCcpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRI T1VUIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIENPTkRJVElPTkFMIFdS QVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIFVOQ09ORElUSU9OQUwgQVJSQVkg V1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQVJSQVkgV1JBUFBFUikKK0ZS T00KKwkoVkFMVUVTCisJCShqc29uYiAnbnVsbCcpLAorCQkoJzEyLjMnKSwKKwkJKCd0cnVl JyksCisJCSgnImFhYSInKSwKKwkJKCdbMSwgbnVsbCwgIjIiXScpLAorCQkoJ3siYSI6IDEs ICJiIjogWzJdfScpCisJKSBmb28oanMpOworICAgICBqc29uX3F1ZXJ5ICAgICB8ICAgICBq c29uX3F1ZXJ5ICAgICB8ICAgICBqc29uX3F1ZXJ5ICAgICB8ICAgICAganNvbl9xdWVyeSAg ICAgIHwgICAgICBqc29uX3F1ZXJ5ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBudWxsICAgICAgICAgICAgICAgfCBu dWxsICAgICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAgICAgfCBbbnVsbF0gICAgICAg ICAgICAgICB8IFtudWxsXQorIDEyLjMgICAgICAgICAgICAgICB8IDEyLjMgICAgICAgICAg ICAgICB8IFsxMi4zXSAgICAgICAgICAgICB8IFsxMi4zXSAgICAgICAgICAgICAgIHwgWzEy LjNdCisgdHJ1ZSAgICAgICAgICAgICAgIHwgdHJ1ZSAgICAgICAgICAgICAgIHwgW3RydWVd ICAgICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAgICAgfCBbdHJ1ZV0KKyAiYWFhIiAg ICAgICAgICAgICAgfCAiYWFhIiAgICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAg fCBbImFhYSJdICAgICAgICAgICAgICB8IFsiYWFhIl0KKyBbMSwgbnVsbCwgIjIiXSAgICAg fCBbMSwgbnVsbCwgIjIiXSAgICAgfCBbMSwgbnVsbCwgIjIiXSAgICAgfCBbWzEsIG51bGws ICIyIl1dICAgICB8IFtbMSwgbnVsbCwgIjIiXV0KKyB7ImEiOiAxLCAiYiI6IFsyXX0gfCB7 ImEiOiAxLCAiYiI6IFsyXX0gfCB7ImEiOiAxLCAiYiI6IFsyXX0gfCBbeyJhIjogMSwgImIi OiBbMl19XSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dCisoNiByb3dzKQorCitTRUxFQ1QKKwlK U09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nKSBBUyAidW5zcGVjIiwKKwlKU09OX1FVRVJZ KGpzLCAnc3RyaWN0ICRbKl0nIFdJVEhPVVQgV1JBUFBFUikgQVMgIndpdGhvdXQiLAorCUpT T05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSKSBB UyAid2l0aCBjb25kIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggVU5D T05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCB1bmNvbmQiLAorCUpTT05fUVVF UlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCIKK0ZS T00KKwkoVkFMVUVTCisJCShqc29uYiAnMScpLAorCQkoJ1tdJyksCisJCSgnW251bGxdJyks CisJCSgnWzEyLjNdJyksCisJCSgnW3RydWVdJyksCisJCSgnWyJhYWEiXScpLAorCQkoJ1tb MSwgMiwgM11dJyksCisJCSgnW3siYSI6IDEsICJiIjogWzJdfV0nKSwKKwkJKCdbMSwgIjIi LCBudWxsLCBbM11dJykKKwkpIGZvbyhqcyk7CisgICAgICAgdW5zcGVjICAgICAgIHwgICAg ICB3aXRob3V0ICAgICAgIHwgICAgICB3aXRoIGNvbmQgICAgICB8ICAgICB3aXRoIHVuY29u ZCAgICAgIHwgICAgICAgICB3aXRoICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIHwgCisgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgCisg bnVsbCAgICAgICAgICAgICAgIHwgbnVsbCAgICAgICAgICAgICAgIHwgW251bGxdICAgICAg ICAgICAgICB8IFtudWxsXSAgICAgICAgICAgICAgIHwgW251bGxdCisgMTIuMyAgICAgICAg ICAgICAgIHwgMTIuMyAgICAgICAgICAgICAgIHwgWzEyLjNdICAgICAgICAgICAgICB8IFsx Mi4zXSAgICAgICAgICAgICAgIHwgWzEyLjNdCisgdHJ1ZSAgICAgICAgICAgICAgIHwgdHJ1 ZSAgICAgICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAgICB8IFt0cnVlXSAgICAgICAg ICAgICAgIHwgW3RydWVdCisgImFhYSIgICAgICAgICAgICAgIHwgImFhYSIgICAgICAgICAg ICAgIHwgWyJhYWEiXSAgICAgICAgICAgICB8IFsiYWFhIl0gICAgICAgICAgICAgIHwgWyJh YWEiXQorIFsxLCAyLCAzXSAgICAgICAgICB8IFsxLCAyLCAzXSAgICAgICAgICB8IFsxLCAy LCAzXSAgICAgICAgICAgfCBbWzEsIDIsIDNdXSAgICAgICAgICB8IFtbMSwgMiwgM11dCisg eyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIi OiBbMl19ICB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dIHwgW3siYSI6IDEsICJiIjogWzJdfV0K KyAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCBbMSwgIjIiLCBu dWxsLCBbM11dIHwgWzEsICIyIiwgbnVsbCwgWzNdXSAgfCBbMSwgIjIiLCBudWxsLCBbM11d CisoOSByb3dzKQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIHRleHQpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IHRleHQgS0VFUCBRVU9URVMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYWFh IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIHRleHQgS0VFUCBRVU9URVMgT04gU0NBTEFSIFNUUklORyk7CisganNvbl9xdWVy eSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBPTUlUIFFVT1RFUyk7CisganNv bl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgT01JVCBRVU9URVMgT04g U0NBTEFSIFNUUklORyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgT01JVCBRVU9U RVMgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3Ig dHlwZSBqc29uCitERVRBSUw6ICBUb2tlbiAiYWFhIiBpcyBpbnZhbGlkLgorQ09OVEVYVDog IEpTT04gZGF0YSwgbGluZSAxOiBhYWEKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFh IicsICckJyBSRVRVUk5JTkcganNvbiBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitF UlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGpzb24KK0RFVEFJTDogIFRv a2VuICJhYWEiIGlzIGludmFsaWQuCitDT05URVhUOiAgSlNPTiBkYXRhLCBsaW5lIDE6IGFh YQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBieXRl YSBGT1JNQVQgSlNPTiBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CisganNvbl9xdWVy eSAKKy0tLS0tLS0tLS0tLQorIFx4NjE2MTYxCisoMSByb3cpCisKKy0tIFFVT1RFUyBiZWhh dmlvciBzaG91bGQgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiB1c2VkOgor LS0gU2hvdWxkIGZhaWwKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lU SCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJlaGF2 aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2VkCitM SU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVS IE9NSVQgUVVPVEVTKS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywg JyQnIFdJVEggV1JBUFBFUiBLRUVQIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RF UyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMg dXNlZAorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEgg V1JBUFBFUiBLRUVQIFFVT1RFUykuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgS0VFUCBRVU9URVMpOworRVJS T1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdo ZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTogLi4uTl9RVUVSWShqc29uYiAnWzFd JywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBLRUVQIFFVT1RFLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFM IFdSQVBQRVIgT01JVCBRVU9URVMpOworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZp b3IgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJ TkUgMTogLi4uTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JB UFBFUiBPTUlUIFFVT1RFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2hvdWxkIHN1Y2NlZWQKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVP VEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzFdCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAg UVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzFdCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyk7CisganNvbl9xdWVyeSAK Ky0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn W10nLCAnJFsqXScgTlVMTCBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg RU1QVFkgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbXQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgQVJS QVkgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbXQorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgT0JKRUNU IE9OIEVNUFRZKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisge30KKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZ KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBFTVBU WSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJlbXB0eSIKKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIE5V TEwgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZ IEVNUFRZIEFSUkFZIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg W10KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVS Uk9SIE9OIEVNUFRZIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0t LS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb XScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIG5v IFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF UlJPUiBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgRVJST1IgT04g RVJST1IpOworRVJST1I6ICBKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1FVRVJZIHNo b3VsZCByZXR1cm4gc2luZ2xldG9uIGl0ZW0gd2l0aG91dCB3cmFwcGVyCitISU5UOiAgdXNl IFdJVEggV1JBUFBFUiBjbGF1c2UgdG8gd3JhcCBTUUwvSlNPTiBpdGVtIHNlcXVlbmNlIGlu dG8gYXJyYXkKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBERUZB VUxUICciZW1wdHkiJyBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQor ICJlbXB0eSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywg JyQnIFJFVFVSTklORyBqc29uKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEs IDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBS RVRVUk5JTkcganNvbiBGT1JNQVQgSlNPTik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0n LCAnJCcgUkVUVVJOSU5HIGpzb25iKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg WzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICck JyBSRVRVUk5JTkcganNvbmIgRk9STUFUIEpTT04pOworIGpzb25fcXVlcnkgCistLS0tLS0t LS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDJdJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0t CisgWzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckJyBSRVRVUk5JTkcgY2hhcigxMCkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0K KyBbMSwgMl0gICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwy XScsICckJyBSRVRVUk5JTkcgY2hhcigzKSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIFsxLAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAn JCcgUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04pOworIGpzb25fcXVlcnkgCistLS0tLS0t LS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDJdJywgJyQnIFJFVFVSTklORyBieXRlYSk7CisgICBqc29uX3F1ZXJ5ICAgCistLS0tLS0t LS0tLS0tLS0tCisgXHg1YjMxMmMyMDMyNWQKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTik7Cisg ICBqc29uX3F1ZXJ5ICAgCistLS0tLS0tLS0tLS0tLS0tCisgXHg1YjMxMmMyMDMyNWQKKygx IHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVS TklORyBieXRlYSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyBceDdiN2QKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBFTVBUWSBPQkpF Q1QgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBceDdiN2QKKygx IHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVS TklORyBqc29uIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0t LS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwy XScsICckWypdJyBSRVRVUk5JTkcganNvbmIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKKyBq c29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUCisJeCwg eSwKKwlKU09OX1FVRVJZKAorCQlqc29uYiAnWzEsMiwzLDQsNSxudWxsXScsCisJCSckWypd ID8gKEAgPj0gJHggJiYgQCA8PSAkeSknCisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJ V0lUSCBDT05ESVRJT05BTCBXUkFQUEVSCisJCUVNUFRZIEFSUkFZIE9OIEVNUFRZCisJKSBs aXN0CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVz KDAsIDQpIHk7CisgeCB8IHkgfCAgICAgbGlzdCAgICAgCistLS0rLS0tKy0tLS0tLS0tLS0t LS0tCisgMCB8IDAgfCBbXQorIDAgfCAxIHwgWzFdCisgMCB8IDIgfCBbMSwgMl0KKyAwIHwg MyB8IFsxLCAyLCAzXQorIDAgfCA0IHwgWzEsIDIsIDMsIDRdCisgMSB8IDAgfCBbXQorIDEg fCAxIHwgWzFdCisgMSB8IDIgfCBbMSwgMl0KKyAxIHwgMyB8IFsxLCAyLCAzXQorIDEgfCA0 IHwgWzEsIDIsIDMsIDRdCisgMiB8IDAgfCBbXQorIDIgfCAxIHwgW10KKyAyIHwgMiB8IFsy XQorIDIgfCAzIHwgWzIsIDNdCisgMiB8IDQgfCBbMiwgMywgNF0KKyAzIHwgMCB8IFtdCisg MyB8IDEgfCBbXQorIDMgfCAyIHwgW10KKyAzIHwgMyB8IFszXQorIDMgfCA0IHwgWzMsIDRd CisgNCB8IDAgfCBbXQorIDQgfCAxIHwgW10KKyA0IHwgMiB8IFtdCisgNCB8IDMgfCBbXQor IDQgfCA0IHwgWzRdCisoMjUgcm93cykKKworLS0gRXh0ZW5zaW9uOiByZWNvcmQgdHlwZXMg cmV0dXJuaW5nCitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWMgQVMgKGEgaW50LCB0IHRleHQs IGpzIGpzb24sIGpiIGpzb25iLCBqc2EganNvbltdKTsKK0NSRUFURSBUWVBFIHNxbGpzb25i X3JlY2EgQVMgKHJlY2Egc3FsanNvbmJfcmVjW10pOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7 fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJF VFVSTklORyBzcWxqc29uYl9yZWMpOworICAgICAgICAgICAgICAgICAgICAganNvbl9xdWVy eSAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsYWFhLCJbMSwgIiIyIiIsIHt9XSIsInsi IngiIjogWzEsICIiMiIiLCB7fV19IiwpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gdW5u ZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6ICBbeyJhIjogMSwgImIiOiBbImZvbyJd fSwgeyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9y ZWMpKS5qc2EpOworICAgICAgICAgdW5uZXN0ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB7ImEiOiAxLCAiYiI6IFsiZm9vIl19CisgeyJhIjogMiwgImMiOiB7fX0K KyAxMjMKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpz b25iICd7InJlY2EiOiBbeyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsiYSI6IDIsICJq YiI6IFt7fSwgdHJ1ZV19XX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY2EpKS5yZWNh KTsKKyBhIHwgICAgICB0ICAgICAgfCBqcyB8ICAgICBqYiAgICAgfCBqc2EgCistLS0rLS0t LS0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLS0tLSstLS0tLQorIDEgfCBbImZvbyIsIFtdXSB8 ICAgIHwgICAgICAgICAgICB8IAorIDIgfCAgICAgICAgICAgICB8ICAgIHwgW3t9LCB0cnVl XSB8IAorKDIgcm93cykKKworLS0gRXh0ZW5zaW9uOiBhcnJheSB0eXBlcyByZXR1cm5pbmcK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyLG51bGwsIjMiXScsICckWypdJyBSRVRV Uk5JTkcgaW50W10gV0lUSCBXUkFQUEVSKTsKKyAganNvbl9xdWVyeSAgCistLS0tLS0tLS0t LS0tLQorIHsxLDIsTlVMTCwzfQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHVubmVzdChK U09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsiYSI6IDIs ICJqYiI6IFt7fSwgdHJ1ZV19XScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjW10pKTsK KyBhIHwgICAgICB0ICAgICAgfCBqcyB8ICAgICBqYiAgICAgfCBqc2EgCistLS0rLS0tLS0t LS0tLS0tLSstLS0tKy0tLS0tLS0tLS0tLSstLS0tLQorIDEgfCBbImZvbyIsIFtdXSB8ICAg IHwgICAgICAgICAgICB8IAorIDIgfCAgICAgICAgICAgICB8ICAgIHwgW3t9LCB0cnVlXSB8 IAorKDIgcm93cykKKworLS0gRXh0ZW5zaW9uOiBkb21haW4gdHlwZXMgcmV0dXJuaW5nCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5hJyBSRVRVUk5JTkcgc3Fs anNvbmJfaW50X25vdF9udWxsKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgICAg ICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0n LCAnJC5iJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKK0VSUk9SOiAgZG9t YWluIHNxbGpzb25iX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcwor LS0gVGVzdCB0aW1lc3RhbXB0eiBwYXNzaW5nIGFuZCBvdXRwdXQKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0y MSAxMjozNDo1NiArMTAnIEFTIHRzKTsKKyAgICAgICAgIGpzb25fcXVlcnkgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2 KzAwOjAwIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcsICck dHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0 cyBSRVRVUk5JTkcganNvbik7CisgICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDow MCIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQ QVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVU VVJOSU5HIGpzb25iKTsKKyAgICAgICAgIGpzb25fcXVlcnkgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2KzAwOjAwIgor KDEgcm93KQorCistLSBUZXN0IGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgdGVzdF9qc29u Yl9jb25zdHJhaW50cyAoCisJanMgdGV4dCwKKwlpIGludCwKKwl4IGpzb25iIERFRkFVTFQg SlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgV0lUSCBXUkFQUEVSKQorCUNPTlNU UkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MQorCQlDSEVDSyAoanMgSVMgSlNPTikKKwlD T05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDIKKwkJQ0hFQ0sgKEpTT05fRVhJU1RT KGpzOjpqc29uYiwgJyQuYScgUEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0 LCBhcnJheVsxLDIsM10gYXMgYXJyKSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3Ry YWludDMKKwkJQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcg aW50IERFRkFVTFQgKCcxMicgfHwgaSk6OmludCBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUikg PiBpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50NAorCQlDSEVDSyAoSlNP Tl9RVUVSWShqczo6anNvbmIsICckLmEnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBU WSBPQkpFQ1QgT04gRVJST1IpIDwganNvbmIgJ1sxMF0nKQorCUNPTlNUUkFJTlQgdGVzdF9q c29uYl9jb25zdHJhaW50NQorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEn IFJFVFVSTklORyBjaGFyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ ICAnYScgQ09MTEFURSAiQyIpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ2 CisJCUNIRUNLIChKU09OX0VYSVNUUyhqczo6anNvbmIsICdzdHJpY3QgJC5hJyBSRVRVUk5J TkcgaW50IFRSVUUgT04gRVJST1IpIDwgMikKKyk7CitcZCB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAi cHVibGljLnRlc3RfanNvbmJfY29uc3RyYWludHMiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBqcyAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK KyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB4ICAgICAg fCBqc29uYiAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCBKU09OX1FVRVJZKCdbMSwgMl0n Ojpqc29uYiwgJyRbKl0nIFJFVFVSTklORyBqc29uYiBXSVRIIFVOQ09ORElUSU9OQUwgV1JB UFBFUikKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQx IiBDSEVDSyAoanMgSVMgSlNPTikKKyAgICAidGVzdF9qc29uYl9jb25zdHJhaW50MiIgQ0hF Q0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJyQuImEiJyBQQVNTSU5HIGkgKyA1IEFTIGlu dCwgaTo6dGV4dCBBUyB0eHQsIEFSUkFZWzEsIDIsIDNdIEFTIGFycikpCisgICAgInRlc3Rf anNvbmJfY29uc3RyYWludDMiIENIRUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuImEi JyBSRVRVUk5JTkcgaW50ZWdlciBERUZBVUxUICgnMTInOjp0ZXh0IHx8IGkpOjppbnRlZ2Vy IE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpCisgICAgInRlc3RfanNvbmJfY29uc3Ry YWludDQiIENIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcg anNvbmIgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikg PCAnWzEwXSc6Ompzb25iKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ1IiBDSEVDSyAo SlNPTl9RVUVSWShqczo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGNoYXJhY3Rlcig1KSBP TUlUIFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBUWSkgPiAoJ2EnOjpicGNoYXIgQ09MTEFU RSAiQyIpKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ2IiBDSEVDSyAoSlNPTl9FWElT VFMoanM6Ompzb25iLCAnc3RyaWN0ICQuImEiJyBSRVRVUk5JTkcgaW50ZWdlciBUUlVFIE9O IEVSUk9SKSA8IDIpCisKK1NFTEVDVCBjaGVja19jbGF1c2UKK0ZST00gaW5mb3JtYXRpb25f c2NoZW1hLmNoZWNrX2NvbnN0cmFpbnRzCitXSEVSRSBjb25zdHJhaW50X25hbWUgTElLRSAn dGVzdF9qc29uYl9jb25zdHJhaW50JSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2xhdXNlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAoKGpzIElTIEpTT04pKQorIChKU09OX0VYSVNUUygoanMpOjpqc29uYiwgJyQuImEi JyBQQVNTSU5HIChpICsgNSkgQVMgaW50LCAoaSk6OnRleHQgQVMgdHh0LCBBUlJBWVsxLCAy LCAzXSBBUyBhcnIpKQorICgoSlNPTl9WQUxVRSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRV Uk5JTkcgaW50ZWdlciBERUZBVUxUICgoJzEyJzo6dGV4dCB8fCBpKSk6OmludGVnZXIgT04g RU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkpCisgKChKU09OX1FVRVJZKChqcyk6Ompzb25i LCAnJC4iYSInIFJFVFVSTklORyBqc29uYiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1Q VFkgT0JKRUNUIE9OIEVSUk9SKSA8ICdbMTBdJzo6anNvbmIpKQorICgoSlNPTl9RVUVSWSgo anMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgY2hhcmFjdGVyKDUpIE9NSVQgUVVPVEVT IEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgnYSc6OmJwY2hhciBDT0xMQVRFICJDIikpKQor ICgoSlNPTl9FWElTVFMoKGpzKTo6anNvbmIsICdzdHJpY3QgJC4iYSInIFJFVFVSTklORyBp bnRlZ2VyIFRSVUUgT04gRVJST1IpIDwgMikpCisoNiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0 X2V4cHIoYWRiaW4sIGFkcmVsaWQpIEZST00gcGdfYXR0cmRlZiBXSEVSRSBhZHJlbGlkID0g J3Rlc3RfanNvbmJfY29uc3RyYWludHMnOjpyZWdjbGFzczsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEpTT05fUVVFUlkoJ1sx LCAyXSc6Ompzb25iLCAnJFsqXScgUkVUVVJOSU5HIGpzb25iIFdJVEggVU5DT05ESVRJT05B TCBXUkFQUEVSKQorKDEgcm93KQorCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzIFZBTFVFUyAoJycsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVz dF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9q c29uYl9jb25zdHJhaW50MSIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgsIDEs IFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAo JzEnLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29u c3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3Ry YWludDIiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMSwgWzEsIDJdKS4K K0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnW10nKTsKK0VS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZp b2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDIiCitERVRB SUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoW10sIG51bGwsIFsxLCAyXSkuCitJTlNFUlQg SU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYiI6IDF9JywgMSk7CitF UlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2 aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQyIgorREVU QUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKHsiYiI6IDF9LCAxLCBbMSwgMl0pLgorSU5T RVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImEiOiAxfScsIDEp OworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50 cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MyIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEiOiAxfSwgMSwgWzEsIDJdKS4K K0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogN30n LCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3Ry YWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWlu dDUiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoeyJhIjogN30sIDEsIFsxLCAy XSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYSI6 IDEwfScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9j b25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25z dHJhaW50NCIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEiOiAxMH0sIDEs IFsxLCAyXSkuCitEUk9QIFRBQkxFIHRlc3RfanNvbmJfY29uc3RyYWludHM7CistLSBUZXN0 IG11dGFiaWxpbHkgb2QgcXVlcnkgZnVuY3Rpb25zCitDUkVBVEUgVEFCTEUgdGVzdF9qc29u Yl9tdXRhYmlsaXR5KGpzIGpzb25iKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3Rf anNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYVswXScpKTsKK0NSRUFURSBJ TkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0 aW1lKCknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJC5hID8gKEAgPCAkLmRhdGV0aW1lKCkpJykpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRh dGV0aW1lKCkgPCAkLmRhdGV0aW1lKCkpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5k ZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBP TiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRl dGltZSgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworRVJST1I6ICBmdW5jdGlv bnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEg PyAoQC5kYXRldGltZSgiSEg6TUkgVFpIIikgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSkn KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZ KGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIikgPCAkLmRhdGV0aW1lKCJZWS1NTS1E RCBISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkgVFpIIikgPCAkLmRh dGV0aW1lKCJZWS1NTS1ERCBISDpNSSIpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGlu ZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgi SEg6TUkgVFpIIikgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu ZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJHknIFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFT IHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLmRhdGV0aW1lKCkgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMg eCkpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1h cmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPCAkeCcgUEFTU0lORyAnMTIzNCc6Omlu dCBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJC5kYXRldGltZSgpID8gKEAgPT0gJHgpJyBQQVNTSU5HICcxMjozNCc6 OnRpbWUgQVMgeCkpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBt dXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJZWS1NTS1ERCIpID8gKEAg PT0gJHgpJyBQQVNTSU5HICcyMDIwLTA3LTE0Jzo6ZGF0ZSBBUyB4KSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEg PyAoQC5kYXRldGltZSgpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7 CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2Vk IElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNP Tl9RVUVSWShqcywgJyRbMSwgMCB0byAkLmEgPyAoQC5kYXRldGltZSgpID09ICR4KV0nIFBB U1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRl eCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAu ZGF0ZXRpbWUoIkhIOk1JIikgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgp KTsKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5OwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKaW5kZXggNGNlNmMwMzliNC4uMTVlNDAxNjgz NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CkBAIC0x NDczLDggKzE0NzMsMTAgQEAgV0hFUkUgYS5hZ2dmbm9pZCA9IHAub2lkIEFORAogICAgICAg ICAgTk9UIGJpbmFyeV9jb2VyY2libGUocC5wcm9hcmd0eXBlc1sxXSwgcHRyLnByb2FyZ3R5 cGVzWzJdKSkKICAgICAgT1IgKHAucHJvbmFyZ3MgPiAyIEFORAogICAgICAgICAgTk9UIGJp bmFyeV9jb2VyY2libGUocC5wcm9hcmd0eXBlc1syXSwgcHRyLnByb2FyZ3R5cGVzWzNdKSkK LSAgICAgLS0gd2UgY291bGQgY2FycnkgdGhlIGNoZWNrIGZ1cnRoZXIsIGJ1dCAzIGFyZ3Mg aXMgZW5vdWdoIGZvciBub3cKLSAgICAgT1IgKHAucHJvbmFyZ3MgPiAzKQorICAgICBPUiAo cC5wcm9uYXJncyA+IDMgQU5ECisgICAgICAgICBOT1QgYmluYXJ5X2NvZXJjaWJsZShwLnBy b2FyZ3R5cGVzWzNdLCBwdHIucHJvYXJndHlwZXNbNF0pKQorICAgICAtLSB3ZSBjb3VsZCBj YXJyeSB0aGUgY2hlY2sgZnVydGhlciwgYnV0IDQgYXJncyBpcyBlbm91Z2ggZm9yIG5vdwor ICAgICBPUiAocC5wcm9uYXJncyA+IDQpCiAgICAgKTsKICBhZ2dmbm9pZCB8IHByb25hbWUg fCBvaWQgfCBwcm9uYW1lIAogLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi42Y2FkZDg3ODY4Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uLm91dApAQCAtMCwwICsxLDEyNjgg QEAKKy0tIEpTT04oKQorU0VMRUNUIEpTT04oKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0 IG9yIG5lYXIgIikiCitMSU5FIDE6IFNFTEVDVCBKU09OKCk7CisgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBKU09OKE5VTEwpOworIGpzb24gCistLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIEpTT04oJ3sgImEiIDogMSB9ICcpOworICAgICBqc29uICAgICAKKy0tLS0t LS0tLS0tLS0tCisgeyAiYSIgOiAxIH0gCisoMSByb3cpCisKK1NFTEVDVCBKU09OKCd7ICJh IiA6IDEgfSAnIEZPUk1BVCBKU09OKTsKKyAgICAganNvbiAgICAgCistLS0tLS0tLS0tLS0t LQorIHsgImEiIDogMSB9IAorKDEgcm93KQorCitTRUxFQ1QgSlNPTigneyAiYSIgOiAxIH0g JyBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK0VSUk9SOiAgSlNPTiBFTkNPRElORyBj bGF1c2UgaXMgb25seSBhbGxvd2VkIGZvciBieXRlYSBpbnB1dCB0eXBlCitMSU5FIDE6IFNF TEVDVCBKU09OKCd7ICJhIiA6IDEgfSAnIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTigneyAi YSIgOiAxIH0gJzo6Ynl0ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7CisgICAgIGpz b24gICAgIAorLS0tLS0tLS0tLS0tLS0KKyB7ICJhIiA6IDEgfSAKKygxIHJvdykKKworU0VM RUNUIHBnX3R5cGVvZihKU09OKCd7ICJhIiA6IDEgfSAnKSk7CisgcGdfdHlwZW9mIAorLS0t LS0tLS0tLS0KKyBqc29uCisoMSByb3cpCisKK1NFTEVDVCBKU09OKCcgICAxICAgJzo6anNv bik7CisgIGpzb24gICAKKy0tLS0tLS0tLQorICAgIDEgICAKKygxIHJvdykKKworU0VMRUNU IEpTT04oJyAgIDEgICAnOjpqc29uYik7CisganNvbiAKKy0tLS0tLQorIDEKKygxIHJvdykK KworU0VMRUNUIEpTT04oJyAgIDEgICAnOjpqc29uIFdJVEggVU5JUVVFIEtFWVMpOworRVJS T1I6ICBjYW5ub3QgdXNlIG5vbi1zdHJpbmcgdHlwZXMgd2l0aCBXSVRIIFVOSVFVRSBLRVlT IGNsYXVzZQorTElORSAxOiBTRUxFQ1QgSlNPTignICAgMSAgICc6Ompzb24gV0lUSCBVTklR VUUgS0VZUyk7CisgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTigxMjMpOworRVJST1I6 ICBjYW5ub3QgY2FzdCB0eXBlIGludGVnZXIgdG8ganNvbgorTElORSAxOiBTRUxFQ1QgSlNP TigxMjMpOworICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTigneyJhIjogMSwg ImEiOiAyfScpOworICAgICAgIGpzb24gICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB7 ImEiOiAxLCAiYSI6IDJ9CisoMSByb3cpCisKK1NFTEVDVCBKU09OKCd7ImEiOiAxLCAiYSI6 IDJ9JyBXSVRIIFVOSVFVRSBLRVlTKTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04gb2JqZWN0 IGtleSB2YWx1ZQorU0VMRUNUIEpTT04oJ3siYSI6IDEsICJhIjogMn0nIFdJVEhPVVQgVU5J UVVFIEtFWVMpOworICAgICAgIGpzb24gICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB7 ImEiOiAxLCAiYSI6IDJ9CisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIEpTT04oJzEyMycpOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IEpT T04oJzEyMyc6Ompzb24pCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCBKU09OKCcxMjMnIEZPUk1BVCBKU09OKTsKKyAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAor ICAgT3V0cHV0OiBKU09OKCcxMjMnOjpqc29uKQorKDIgcm93cykKKworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJzo6Ynl0ZWEgRk9STUFUIEpTT04p OworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0 CisgICBPdXRwdXQ6IEpTT04oJ1x4MzEzMjMzJzo6Ynl0ZWEgRk9STUFUIEpTT04pCisoMiBy b3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBKU09OKCcxMjMn OjpieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTignXHgzMTMyMzMnOjpieXRlYSBGT1JNQVQgSlNP TiBFTkNPRElORyBVVEY4KQorKDIgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgSlNPTignMTIzJyBXSVRIIFVOSVFVRSBLRVlTKTsKKyAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNP TignMTIzJzo6dGV4dCBXSVRIIFVOSVFVRSBLRVlTKQorKDIgcm93cykKKworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJyBXSVRIT1VUIFVOSVFVRSBL RVlTKTsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBKU09OKCcxMjMnOjpqc29uKQor KDIgcm93cykKKworU0VMRUNUIEpTT04oJzEyMycgUkVUVVJOSU5HIHRleHQpOworRVJST1I6 ICBjYW5ub3QgdXNlIFJFVFVSTklORyB0eXBlIHRleHQgaW4gSlNPTigpCitMSU5FIDE6IFNF TEVDVCBKU09OKCcxMjMnIFJFVFVSTklORyB0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU IEpTT04oJzEyMycpOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IEpTT04oJzEyMyc6 Ompzb24pCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVD VCBKU09OKCcxMjMnIFJFVFVSTklORyBqc29uKTsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0 cHV0OiBKU09OKCcxMjMnOjpqc29uKQorKDIgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJyBSRVRVUk5JTkcganNvbmIpOworICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0 OiBKU09OKCcxMjMnOjpqc29uYiBSRVRVUk5JTkcganNvbmIpCisoMiByb3dzKQorCitTRUxF Q1QgcGdfdHlwZW9mKEpTT04oJzEyMycpKTsKKyBwZ190eXBlb2YgCistLS0tLS0tLS0tLQor IGpzb24KKygxIHJvdykKKworU0VMRUNUIHBnX3R5cGVvZihKU09OKCcxMjMnIFJFVFVSTklO RyBqc29uKSk7CisgcGdfdHlwZW9mIAorLS0tLS0tLS0tLS0KKyBqc29uCisoMSByb3cpCisK K1NFTEVDVCBwZ190eXBlb2YoSlNPTignMTIzJyBSRVRVUk5JTkcganNvbmIpKTsKKyBwZ190 eXBlb2YgCistLS0tLS0tLS0tLQorIGpzb25iCisoMSByb3cpCisKKy0tIEpTT05fU0NBTEFS KCkKK1NFTEVDVCBKU09OX1NDQUxBUigpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3Ig bmVhciAiKSIKK0xJTkUgMTogU0VMRUNUIEpTT05fU0NBTEFSKCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9TQ0FMQVIoTlVMTCk7CisganNvbl9zY2Fs YXIgCistLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NDQUxBUihO VUxMOjppbnQpOworIGpzb25fc2NhbGFyIAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzKTsKKyBqc29uX3NjYWxhciAKKy0tLS0tLS0tLS0t LS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fU0NBTEFSKDEyMy40NSk7CisganNv bl9zY2FsYXIgCistLS0tLS0tLS0tLS0tCisgMTIzLjQ1CisoMSByb3cpCisKK1NFTEVDVCBK U09OX1NDQUxBUigxMjMuNDU6Om51bWVyaWMpOworIGpzb25fc2NhbGFyIAorLS0tLS0tLS0t LS0tLQorIDEyMy40NQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9TQ0FMQVIodHJ1ZSk7Cisg anNvbl9zY2FsYXIgCistLS0tLS0tLS0tLS0tCisgdHJ1ZQorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9TQ0FMQVIoZmFsc2UpOworIGpzb25fc2NhbGFyIAorLS0tLS0tLS0tLS0tLQorIGZh bHNlCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NDQUxBUignIDEyMy40NScpOworIGpzb25f c2NhbGFyIAorLS0tLS0tLS0tLS0tLQorICIgMTIzLjQ1IgorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9TQ0FMQVIoJzIwMjAtMDYtMDcnOjpkYXRlKTsKKyBqc29uX3NjYWxhciAgCistLS0t LS0tLS0tLS0tLQorICIyMDIwLTA2LTA3IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9TQ0FM QVIoJzIwMjAtMDYtMDcgMDE6MDI6MDMnOjp0aW1lc3RhbXApOworICAgICAganNvbl9zY2Fs YXIgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMjAtMDYtMDdUMDE6MDI6 MDMiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NDQUxBUigne30nOjpqc29uKTsKKyBqc29u X3NjYWxhciAKKy0tLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9T Q0FMQVIoJ3t9Jzo6anNvbmIpOworIGpzb25fc2NhbGFyIAorLS0tLS0tLS0tLS0tLQorIHt9 CisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT05f U0NBTEFSKDEyMyk7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IEpTT05fU0NBTEFSKDEy MykKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIEpT T05fU0NBTEFSKCcxMjMnKTsKKyAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBP dXRwdXQ6IEpTT05fU0NBTEFSKCcxMjMnOjp0ZXh0KQorKDIgcm93cykKKworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzIFJFVFVSTklORyBq c29uKTsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TQ0FMQVIoMTIzKQorKDIg cm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TQ0FM QVIoMTIzIFJFVFVSTklORyBqc29uYik7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TQ0FMQVIoMTIzIFJFVFVSTklO RyBqc29uYikKKygyIHJvd3MpCisKKy0tIEpTT05fU0VSSUFMSVpFKCkKK1NFTEVDVCBKU09O X1NFUklBTElaRSgpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKSIKK0xJ TkUgMTogU0VMRUNUIEpTT05fU0VSSUFMSVpFKCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoTlVMTCk7CisganNvbl9zZXJpYWxp emUgCistLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NFUklB TElaRShKU09OKCd7ICJhIiA6IDEgfSAnKSk7CisganNvbl9zZXJpYWxpemUgCistLS0tLS0t LS0tLS0tLS0tCisgeyAiYSIgOiAxIH0gCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NFUklB TElaRSgneyAiYSIgOiAxIH0gJyk7CisganNvbl9zZXJpYWxpemUgCistLS0tLS0tLS0tLS0t LS0tCisgeyAiYSIgOiAxIH0gCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1NFUklBTElaRSgn MScpOworIGpzb25fc2VyaWFsaXplIAorLS0tLS0tLS0tLS0tLS0tLQorIDEKKygxIHJvdykK KworU0VMRUNUIEpTT05fU0VSSUFMSVpFKCcxJyBGT1JNQVQgSlNPTik7CisganNvbl9zZXJp YWxpemUgCistLS0tLS0tLS0tLS0tLS0tCisgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9T RVJJQUxJWkUoJ3sgImEiIDogMSB9ICcgUkVUVVJOSU5HIGJ5dGVhKTsKKyAgICAgICBqc29u X3NlcmlhbGl6ZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBceDdi MjAyMjYxMjIyMDNhMjAzMTIwN2QyMAorKDEgcm93KQorCitTRUxFQ1QgcGdfdHlwZW9mKEpT T05fU0VSSUFMSVpFKE5VTEwpKTsKKyBwZ190eXBlb2YgCistLS0tLS0tLS0tLQorIHRleHQK KygxIHJvdykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9T RVJJQUxJWkUoJ3t9Jyk7CisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9TRVJJQUxJWkUo J3t9Jzo6anNvbiBSRVRVUk5JTkcgdGV4dCkKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUIEpTT05fU0VSSUFMSVpFKCd7fScgUkVUVVJOSU5HIGJ5 dGVhKTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IEpTT05fU0VSSUFMSVpFKCd7fSc6Ompz b24gUkVUVVJOSU5HIGJ5dGVhKQorKDIgcm93cykKKworLS0gSlNPTl9PQkpFQ1QoKQorU0VM RUNUIEpTT05fT0JKRUNUKCk7CisganNvbl9vYmplY3QgCistLS0tLS0tLS0tLS0tCisge30K KygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBqc29uKTsKKyBqc29u X29iamVjdCAKKy0tLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9P QkpFQ1QoUkVUVVJOSU5HIGpzb24gRk9STUFUIEpTT04pOworIGpzb25fb2JqZWN0IAorLS0t LS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5J TkcganNvbmIpOworIGpzb25fb2JqZWN0IAorLS0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cp CisKK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIgRk9STUFUIEpTT04pOwor IGpzb25fb2JqZWN0IAorLS0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBK U09OX09CSkVDVChSRVRVUk5JTkcgdGV4dCk7CisganNvbl9vYmplY3QgCistLS0tLS0tLS0t LS0tCisge30KKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyB0ZXh0 IEZPUk1BVCBKU09OKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0tLS0tLS0KKyB7fQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04g RU5DT0RJTkcgVVRGOCk7CitFUlJPUjogIGNhbm5vdCBzZXQgSlNPTiBlbmNvZGluZyBmb3Ig bm9uLWJ5dGVhIG91dHB1dCB0eXBlcworTElORSAxOiBTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVU VVJOSU5HIHRleHQgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCkuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX09CSkVDVChS RVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTiBFTkNPRElORyBJTlZBTElEX0VOQ09ESU5HKTsK K0VSUk9SOiAgdW5yZWNvZ25pemVkIEpTT04gZW5jb2Rpbmc6IGludmFsaWRfZW5jb2RpbmcK K1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcgYnl0ZWEpOworIGpzb25fb2JqZWN0IAor LS0tLS0tLS0tLS0tLQorIFx4N2I3ZAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1Qo UkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0t LS0tLS0KKyBceDdiN2QKKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklO RyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKKyBqc29uX29iamVjdCAKKy0t LS0tLS0tLS0tLS0KKyBceDdiN2QKKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKFJF VFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEYxNik7CitFUlJPUjogIHVu c3VwcG9ydGVkIEpTT04gZW5jb2RpbmcKK0xJTkUgMTogU0VMRUNUIEpTT05fT0JKRUNUKFJF VFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEYxLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIG9ubHkgVVRGOCBK U09OIGVuY29kaW5nIGlzIHN1cHBvcnRlZAorU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklO RyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEYzMik7CitFUlJPUjogIHVuc3VwcG9y dGVkIEpTT04gZW5jb2RpbmcKK0xJTkUgMTogU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklO RyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEYzLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIG9ubHkgVVRGOCBKU09OIGVu Y29kaW5nIGlzIHN1cHBvcnRlZAorU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nOiBOVUxMOjpp bnQgRk9STUFUIEpTT04pOworRVJST1I6ICBjYW5ub3QgdXNlIG5vbi1zdHJpbmcgdHlwZXMg d2l0aCBleHBsaWNpdCBGT1JNQVQgSlNPTiBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIEpTT05f T0JKRUNUKCdmb28nOiBOVUxMOjppbnQgRk9STUFUIEpTT04pOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2Zv byc6IE5VTEw6OmludCBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK0VSUk9SOiAgSlNP TiBFTkNPRElORyBjbGF1c2UgaXMgb25seSBhbGxvd2VkIGZvciBieXRlYSBpbnB1dCB0eXBl CitMSU5FIDE6IFNFTEVDVCBKU09OX09CSkVDVCgnZm9vJzogTlVMTDo6aW50IEZPUk1BVCBK U09OIEVOQ09ESU5HIFVURi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2Zvbyc6IE5VTEw6Ompzb24gRk9S TUFUIEpTT04pOworV0FSTklORzogIEZPUk1BVCBKU09OIGhhcyBubyBlZmZlY3QgZm9yIGpz b24gYW5kIGpzb25iIHR5cGVzCitMSU5FIDE6IFNFTEVDVCBKU09OX09CSkVDVCgnZm9vJzog TlVMTDo6anNvbiBGT1JNQVQgSlNPTik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCisgIGpzb25fb2JqZWN0ICAgCistLS0tLS0tLS0tLS0tLS0t CisgeyJmb28iIDogbnVsbH0KKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKCdmb28n OiBOVUxMOjpqc29uIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworRVJST1I6ICBKU09O IEVOQ09ESU5HIGNsYXVzZSBpcyBvbmx5IGFsbG93ZWQgZm9yIGJ5dGVhIGlucHV0IHR5cGUK K0xJTkUgMTogU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nOiBOVUxMOjpqc29uIEZPUk1BVCBK U09OIEVOQ09ESU5HIFVULi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2Zvbyc6IE5VTEw6Ompzb25iIEZP Uk1BVCBKU09OKTsKK1dBUk5JTkc6ICBGT1JNQVQgSlNPTiBoYXMgbm8gZWZmZWN0IGZvciBq c29uIGFuZCBqc29uYiB0eXBlcworTElORSAxOiBTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2Zvbyc6 IE5VTEw6Ompzb25iIEZPUk1BVCBKU09OKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCisgIGpzb25fb2JqZWN0ICAKKy0tLS0tLS0tLS0tLS0t LQorIHsiZm9vIjogbnVsbH0KKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKCdmb28n OiBOVUxMOjpqc29uYiBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK0VSUk9SOiAgSlNP TiBFTkNPRElORyBjbGF1c2UgaXMgb25seSBhbGxvd2VkIGZvciBieXRlYSBpbnB1dCB0eXBl CitMSU5FIDE6IFNFTEVDVCBKU09OX09CSkVDVCgnZm9vJzogTlVMTDo6anNvbmIgRk9STUFU IEpTT04gRU5DT0RJTkcgVS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX09CSkVDVChOVUxMOiAxKTsKK0VSUk9SOiAg YXJndW1lbnQgMSBjYW5ub3QgYmUgbnVsbAorSElOVDogIE9iamVjdCBrZXlzIHNob3VsZCBi ZSB0ZXh0LgorU0VMRUNUIEpTT05fT0JKRUNUKCdhJzogMiArIDMpOworIGpzb25fb2JqZWN0 IAorLS0tLS0tLS0tLS0tLQorIHsiYSIgOiA1fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9P QkpFQ1QoJ2EnIFZBTFVFIDIgKyAzKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0tLS0tLS0K KyB7ImEiIDogNX0KKygxIHJvdykKKworLS1TRUxFQ1QgSlNPTl9PQkpFQ1QoS0VZICdhJyBW QUxVRSAyICsgMyk7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnIHx8IDI6IDEpOworIGpzb25f b2JqZWN0IAorLS0tLS0tLS0tLS0tLQorIHsiYTIiIDogMX0KKygxIHJvdykKKworU0VMRUNU IEpTT05fT0JKRUNUKCgnYScgfHwgMikgVkFMVUUgMSk7CisganNvbl9vYmplY3QgCistLS0t LS0tLS0tLS0tCisgeyJhMiIgOiAxfQorKDEgcm93KQorCistLVNFTEVDVCBKU09OX09CSkVD VCgnYScgfHwgMiBWQUxVRSAxKTsKKy0tU0VMRUNUIEpTT05fT0JKRUNUKEtFWSAnYScgfHwg MiBWQUxVRSAxKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6IDI6OnRleHQpOworIGpzb25f b2JqZWN0IAorLS0tLS0tLS0tLS0tLQorIHsiYSIgOiAiMiJ9CisoMSByb3cpCisKK1NFTEVD VCBKU09OX09CSkVDVCgnYScgVkFMVUUgMjo6dGV4dCk7CisganNvbl9vYmplY3QgCistLS0t LS0tLS0tLS0tCisgeyJhIiA6ICIyIn0KKygxIHJvdykKKworLS1TRUxFQ1QgSlNPTl9PQkpF Q1QoS0VZICdhJyBWQUxVRSAyOjp0ZXh0KTsKK1NFTEVDVCBKU09OX09CSkVDVCgxOjp0ZXh0 OiAyKTsKKyBqc29uX29iamVjdCAKKy0tLS0tLS0tLS0tLS0KKyB7IjEiIDogMn0KKygxIHJv dykKKworU0VMRUNUIEpTT05fT0JKRUNUKCgxOjp0ZXh0KSBWQUxVRSAyKTsKKyBqc29uX29i amVjdCAKKy0tLS0tLS0tLS0tLS0KKyB7IjEiIDogMn0KKygxIHJvdykKKworLS1TRUxFQ1Qg SlNPTl9PQkpFQ1QoMTo6dGV4dCBWQUxVRSAyKTsKKy0tU0VMRUNUIEpTT05fT0JKRUNUKEtF WSAxOjp0ZXh0IFZBTFVFIDIpOworU0VMRUNUIEpTT05fT0JKRUNUKGpzb24gJ1sxXSc6IDEy Myk7CitFUlJPUjogIGtleSB2YWx1ZSBtdXN0IGJlIHNjYWxhciwgbm90IGFycmF5LCBjb21w b3NpdGUsIG9yIGpzb24KK1NFTEVDVCBKU09OX09CSkVDVChBUlJBWVsxLDIsM106ICdhYWEn KTsKK0VSUk9SOiAga2V5IHZhbHVlIG11c3QgYmUgc2NhbGFyLCBub3QgYXJyYXksIGNvbXBv c2l0ZSwgb3IganNvbgorU0VMRUNUIEpTT05fT0JKRUNUKAorCSdhJzogJzEyMycsCisJMS4y MzogMTIzLAorCSdjJzoganNvbiAnWyAxLHRydWUseyB9IF0nLAorCSdkJzoganNvbmIgJ3sg IngiIDogMTIzLjQ1IH0nCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25f b2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsi YSI6ICIxMjMiLCAiYyI6IFsxLCB0cnVlLCB7fV0sICJkIjogeyJ4IjogMTIzLjQ1fSwgIjEu MjMiOiAxMjN9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVCgKKwknYSc6ICcxMjMn LAorCTEuMjM6IDEyMywKKwknYyc6IGpzb24gJ1sgMSx0cnVlLHsgfSBdJywKKwknZCc6IGpz b25iICd7ICJ4IiA6IDEyMy40NSB9JworCVJFVFVSTklORyBqc29uYgorKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBqc29uX29iamVjdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7ImEiOiAiMTIzIiwgImMiOiBbMSwgdHJ1ZSwge31d LCAiZCI6IHsieCI6IDEyMy40NX0sICIxLjIzIjogMTIzfQorKDEgcm93KQorCisvKgorU0VM RUNUIEpTT05fT0JKRUNUKAorCSdhJzogJzEyMycsCisJS0VZIDEuMjMgVkFMVUUgMTIzLAor CSdjJyBWQUxVRSBqc29uICdbMSwgdHJ1ZSwge31dJworKTsKKyovCitTRUxFQ1QgSlNPTl9P QkpFQ1QoJ2EnOiAnMTIzJywgJ2InOiBKU09OX09CSkVDVCgnYSc6IDExMSwgJ2InOiAnYWFh JykpOworICAgICAgICAgICAgICAgICAganNvbl9vYmplY3QgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJh IiA6ICIxMjMiLCAiYiIgOiB7ImEiIDogMTExLCAiYiIgOiAiYWFhIn19CisoMSByb3cpCisK K1NFTEVDVCBKU09OX09CSkVDVCgnYSc6ICcxMjMnLCAnYic6IEpTT05fT0JKRUNUKCdhJzog MTExLCAnYic6ICdhYWEnIFJFVFVSTklORyBqc29uYikpOworICAgICAgICAgICAgICAgIGpz b25fb2JqZWN0ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6ICIxMjMiLCAiYiI6IHsiYSI6IDExMSwgImIiOiAi YWFhIn19CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6IEpTT05fT0JKRUNU KCdiJzogMSBSRVRVUk5JTkcgdGV4dCkpOworICAgICAganNvbl9vYmplY3QgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJhIiA6ICJ7XCJiXCIgOiAxfSJ9CisoMSByb3cp CisKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6IEpTT05fT0JKRUNUKCdiJzogMSBSRVRVUk5J TkcgdGV4dCkgRk9STUFUIEpTT04pOworICAgIGpzb25fb2JqZWN0ICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLQorIHsiYSIgOiB7ImIiIDogMX19CisoMSByb3cpCisKK1NFTEVDVCBKU09O X09CSkVDVCgnYSc6IEpTT05fT0JKRUNUKCdiJzogMSBSRVRVUk5JTkcgYnl0ZWEpKTsKKyAg ICAgICAgICAganNvbl9vYmplY3QgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgeyJhIiA6ICJcXHg3YjIyNjIyMjIwM2EyMDMxN2QifQorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnOiBKU09OX09CSkVDVCgnYic6IDEgUkVUVVJO SU5HIGJ5dGVhKSBGT1JNQVQgSlNPTik7CisgICAganNvbl9vYmplY3QgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tCisgeyJhIiA6IHsiYiIgOiAxfX0KKygxIHJvdykKKworU0VMRUNUIEpT T05fT0JKRUNUKCdhJzogJzEnLCAnYic6IE5VTEwsICdjJzogMik7CisgICAgICAgICAgIGpz b25fb2JqZWN0ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgeyJhIiA6ICIxIiwgImIiIDogbnVsbCwgImMiIDogMn0KKygxIHJvdykKKworU0VM RUNUIEpTT05fT0JKRUNUKCdhJzogJzEnLCAnYic6IE5VTEwsICdjJzogMiBOVUxMIE9OIE5V TEwpOworICAgICAgICAgICBqc29uX29iamVjdCAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiYSIgOiAiMSIsICJiIiA6IG51bGwsICJjIiA6 IDJ9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6ICcxJywgJ2InOiBOVUxM LCAnYyc6IDIgQUJTRU5UIE9OIE5VTEwpOworICAgICBqc29uX29iamVjdCAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiYSIgOiAiMSIsICJjIiA6IDJ9CisoMSByb3cpCisK K1NFTEVDVCBKU09OX09CSkVDVCgxOiAxLCAnMSc6IE5VTEwgV0lUSCBVTklRVUUpOworRVJS T1I6ICBkdXBsaWNhdGUgSlNPTiBrZXkgIjEiCitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwg JzEnOiBOVUxMIEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFKTsKK0VSUk9SOiAgZHVwbGlj YXRlIEpTT04ga2V5ICIxIgorU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcxJzogTlVMTCBO VUxMIE9OIE5VTEwgV0lUSCBVTklRVUUgUkVUVVJOSU5HIGpzb25iKTsKK0VSUk9SOiAgZHVw bGljYXRlIEpTT04gb2JqZWN0IGtleSB2YWx1ZQorU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEs ICcxJzogTlVMTCBBQlNFTlQgT04gTlVMTCBXSVRIIFVOSVFVRSBSRVRVUk5JTkcganNvbmIp OworRVJST1I6ICBkdXBsaWNhdGUgSlNPTiBvYmplY3Qga2V5IHZhbHVlCitTRUxFQ1QgSlNP Tl9PQkpFQ1QoMTogMSwgJzInOiBOVUxMLCAnMSc6IDEgTlVMTCBPTiBOVUxMIFdJVEggVU5J UVVFKTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04ga2V5ICIxIgorU0VMRUNUIEpTT05fT0JK RUNUKDE6IDEsICcyJzogTlVMTCwgJzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVF KTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04ga2V5ICIxIgorU0VMRUNUIEpTT05fT0JKRUNU KDE6IDEsICcyJzogTlVMTCwgJzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJVEhPVVQgVU5JUVVF KTsKKyAgICBqc29uX29iamVjdCAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiMSIg OiAxLCAiMSIgOiAxfQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwgJzIn OiBOVUxMLCAnMSc6IDEgQUJTRU5UIE9OIE5VTEwgV0lUSCBVTklRVUUgUkVUVVJOSU5HIGpz b25iKTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04gb2JqZWN0IGtleSB2YWx1ZQorU0VMRUNU IEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVMTCwgJzEnOiAxIEFCU0VOVCBPTiBOVUxMIFdJ VEhPVVQgVU5JUVVFIFJFVFVSTklORyBqc29uYik7CisganNvbl9vYmplY3QgCistLS0tLS0t LS0tLS0tCisgeyIxIjogMX0KKygxIHJvdykKKworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEs ICcyJzogTlVMTCwgJzMnOiAxLCA0OiBOVUxMLCAnNSc6ICdhJyBBQlNFTlQgT04gTlVMTCBX SVRIIFVOSVFVRSBSRVRVUk5JTkcganNvbmIpOworICAgICAgICBqc29uX29iamVjdCAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiMSI6IDEsICIzIjogMSwg IjUiOiAiYSJ9CisoMSByb3cpCisKKy0tIEpTT05fQVJSQVkoKQorU0VMRUNUIEpTT05fQVJS QVkoKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VM RUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGpzb24pOworIGpzb25fYXJyYXkgCistLS0tLS0t LS0tLS0KKyBbXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcganNv biBGT1JNQVQgSlNPTik7CisganNvbl9hcnJheSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyBqc29uYik7CisganNvbl9hcnJh eSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKFJF VFVSTklORyBqc29uYiBGT1JNQVQgSlNPTik7CisganNvbl9hcnJheSAKKy0tLS0tLS0tLS0t LQorIFtdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyB0ZXh0KTsK KyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VMRUNUIEpT T05fQVJSQVkoUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04pOworIGpzb25fYXJyYXkgCist LS0tLS0tLS0tLS0KKyBbXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5J TkcgdGV4dCBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK0VSUk9SOiAgY2Fubm90IHNl dCBKU09OIGVuY29kaW5nIGZvciBub24tYnl0ZWEgb3V0cHV0IHR5cGVzCitMSU5FIDE6IFNF TEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyB0ZXh0IEZPUk1BVCBKU09OIEVOQ09ESU5HIFVU RjgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgSlNPTl9BUlJBWShSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTiBFTkNPRElORyBJTlZB TElEX0VOQ09ESU5HKTsKK0VSUk9SOiAgdW5yZWNvZ25pemVkIEpTT04gZW5jb2Rpbmc6IGlu dmFsaWRfZW5jb2RpbmcKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklORyBieXRlYSk7Cisg anNvbl9hcnJheSAKKy0tLS0tLS0tLS0tLQorIFx4NWI1ZAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9BUlJBWShSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04pOworIGpzb25fYXJyYXkg CistLS0tLS0tLS0tLS0KKyBceDViNWQKKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVko UkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworIGpzb25fYXJy YXkgCistLS0tLS0tLS0tLS0KKyBceDViNWQKKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJS QVkoUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjE2KTsKK0VSUk9S OiAgdW5zdXBwb3J0ZWQgSlNPTiBlbmNvZGluZworTElORSAxOiBTRUxFQ1QgSlNPTl9BUlJB WShSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGMTYuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBvbmx5IFVU RjggSlNPTiBlbmNvZGluZyBpcyBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVS TklORyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEYzMik7CitFUlJPUjogIHVuc3Vw cG9ydGVkIEpTT04gZW5jb2RpbmcKK0xJTkUgMTogU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJO SU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjMyLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgb25seSBVVEY4IEpTT04g ZW5jb2RpbmcgaXMgc3VwcG9ydGVkCitTRUxFQ1QgSlNPTl9BUlJBWSgnYWFhJywgMTExLCB0 cnVlLCBhcnJheVsxLDIsM10sIE5VTEwsIGpzb24gJ3siYSI6IFsxXX0nLCBqc29uYiAnWyJh IiwzXScpOworICAgICAgICAgICAgICAgICAgICAganNvbl9hcnJheSAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgWyJhYWEiLCAxMTEsIHRydWUsIFsxLCAyLCAzXSwgeyJhIjogWzFdfSwg WyJhIiwgM11dCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKCdhJywgIE5VTEwsICdi JyBOVUxMICAgT04gTlVMTCk7CisgICAganNvbl9hcnJheSAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLQorIFsiYSIsIG51bGwsICJiIl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVko J2EnLCAgTlVMTCwgJ2InIEFCU0VOVCBPTiBOVUxMKTsKKyBqc29uX2FycmF5IAorLS0tLS0t LS0tLS0tCisgWyJhIiwgImIiXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShOVUxM LCBOVUxMLCAnYicgQUJTRU5UIE9OIE5VTEwpOworIGpzb25fYXJyYXkgCistLS0tLS0tLS0t LS0KKyBbImIiXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWSgnYScsICBOVUxMLCAn YicgTlVMTCAgIE9OIE5VTEwgUkVUVVJOSU5HIGpzb25iKTsKKyAgICBqc29uX2FycmF5ICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJhIiwgbnVsbCwgImIiXQorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9BUlJBWSgnYScsICBOVUxMLCAnYicgQUJTRU5UIE9OIE5VTEwgUkVUVVJO SU5HIGpzb25iKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0tCisgWyJhIiwgImIiXQor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShOVUxMLCBOVUxMLCAnYicgQUJTRU5UIE9O IE5VTEwgUkVUVVJOSU5HIGpzb25iKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0tCisg WyJiIl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoSlNPTl9BUlJBWSgneyAiYSIg OiAxMjMgfScgUkVUVVJOSU5HIHRleHQpKTsKKyAgICAgICAgICBqc29uX2FycmF5ICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbIltcInsgXFxcImFc XFwiIDogMTIzIH1cIl0iXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWShKU09OX0FS UkFZKCd7ICJhIiA6IDEyMyB9JyBGT1JNQVQgSlNPTiBSRVRVUk5JTkcgdGV4dCkpOworICAg ICAganNvbl9hcnJheSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJbeyBc ImFcIiA6IDEyMyB9XSJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0FSUkFZKEpTT05fQVJS QVkoJ3sgImEiIDogMTIzIH0nIEZPUk1BVCBKU09OIFJFVFVSTklORyB0ZXh0KSBGT1JNQVQg SlNPTik7CisgICAganNvbl9hcnJheSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgW1t7 ICJhIiA6IDEyMyB9XV0KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUIGkg RlJPTSAoVkFMVUVTICgxKSwgKDIpLCAoTlVMTCksICg0KSkgZm9vKGkpKTsKKyBqc29uX2Fy cmF5IAorLS0tLS0tLS0tLS0tCisgWzEsIDIsIDRdCisoMSByb3cpCisKK1NFTEVDVCBKU09O X0FSUkFZKFNFTEVDVCBpIEZST00gKFZBTFVFUyAoTlVMTDo6aW50W10pLCAoJ3sxLDJ9Jyks IChOVUxMKSwgKE5VTEwpLCAoJ3szLDR9JyksIChOVUxMKSkgZm9vKGkpKTsKKyBqc29uX2Fy cmF5IAorLS0tLS0tLS0tLS0tCisgW1sxLDJdLCAgICsKKyAgWzMsNF1dCisoMSByb3cpCisK K1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpIEZST00gKFZBTFVFUyAoTlVMTDo6aW50W10p LCAoJ3sxLDJ9JyksIChOVUxMKSwgKE5VTEwpLCAoJ3szLDR9JyksIChOVUxMKSkgZm9vKGkp IFJFVFVSTklORyBqc29uYik7CisgICAganNvbl9hcnJheSAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLQorIFtbMSwgMl0sIFszLCA0XV0KKygxIHJvdykKKworLS1TRUxFQ1QgSlNPTl9BUlJB WShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6OmludFtdKSwgKCd7MSwyfScpLCAoTlVM TCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVMTCkpIGZvbyhpKSBOVUxMIE9OIE5VTEwpOwor LS1TRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6OmludFtd KSwgKCd7MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVMTCkpIGZvbyhp KSBOVUxMIE9OIE5VTEwgUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX0FSUkFZKFNF TEVDVCBpIEZST00gKFZBTFVFUyAoMyksICgxKSwgKE5VTEwpLCAoMikpIGZvbyhpKSBPUkRF UiBCWSBpKTsKKyBqc29uX2FycmF5IAorLS0tLS0tLS0tLS0tCisgWzEsIDIsIDNdCisoMSBy b3cpCisKKy0tIFNob3VsZCBmYWlsCitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgRlJPTSAo VkFMVUVTICgxKSkgZm9vKGkpKTsKK0VSUk9SOiAgc3VicXVlcnkgbXVzdCByZXR1cm4gb25s eSBvbmUgY29sdW1uCitMSU5FIDE6IFNFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBGUk9NIChW QUxVRVMgKDEpKSBmb28oaSkpOworICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fQVJS QVkoU0VMRUNUIGksIGkgRlJPTSAoVkFMVUVTICgxKSkgZm9vKGkpKTsKK0VSUk9SOiAgc3Vi cXVlcnkgbXVzdCByZXR1cm4gb25seSBvbmUgY29sdW1uCitMSU5FIDE6IFNFTEVDVCBKU09O X0FSUkFZKFNFTEVDVCBpLCBpIEZST00gKFZBTFVFUyAoMSkpIGZvbyhpKSk7CisgICAgICAg ICAgICAgICBeCitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgKiBGUk9NIChWQUxVRVMgKDEs IDIpKSBmb28oaSwgaikpOworRVJST1I6ICBzdWJxdWVyeSBtdXN0IHJldHVybiBvbmx5IG9u ZSBjb2x1bW4KK0xJTkUgMTogU0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUICogRlJPTSAoVkFM VUVTICgxLCAyKSkgZm9vKGksIGopKTsKKyAgICAgICAgICAgICAgIF4KKy0tIEpTT05fQVJS QVlBR0coKQorU0VMRUNUCUpTT05fQVJSQVlBR0coaSkgSVMgTlVMTCwKKwkJSlNPTl9BUlJB WUFHRyhpIFJFVFVSTklORyBqc29uYikgSVMgTlVMTAorRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMCkgaTsKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgdCAgICAgICAgfCB0CisoMSByb3cpCisKK1NFTEVDVAlKU09OX0FSUkFZQUdHKGkpLAor CQlKU09OX0FSUkFZQUdHKGkgUkVUVVJOSU5HIGpzb25iKQorRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNSkgaTsKKyAganNvbl9hcnJheWFnZyAgfCAganNvbl9hcnJheWFnZyAgCistLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAyLCAzLCA0LCA1XSB8IFsx LCAyLCAzLCA0LCA1XQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9BUlJBWUFHRyhpIE9SREVS IEJZIGkgREVTQykKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIGk7CisgIGpzb25fYXJy YXlhZ2cgIAorLS0tLS0tLS0tLS0tLS0tLS0KKyBbNSwgNCwgMywgMiwgMV0KKygxIHJvdykK KworU0VMRUNUIEpTT05fQVJSQVlBR0coaTo6dGV4dDo6anNvbikKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUpIGk7CisgIGpzb25fYXJyYXlhZ2cgIAorLS0tLS0tLS0tLS0tLS0tLS0K KyBbMSwgMiwgMywgNCwgNV0KKygxIHJvdykKKworU0VMRUNUIEpTT05fQVJSQVlBR0coSlNP Tl9BUlJBWShpLCBpICsgMSBSRVRVUk5JTkcgdGV4dCkgRk9STUFUIEpTT04pCitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1KSBpOworICAgICAgICAgICAgICBqc29uX2FycmF5YWdnICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBbWzEsIDJdLCBbMiwgM10sIFszLCA0XSwgWzQsIDVdLCBbNSwgNl1dCisoMSByb3cp CisKK1NFTEVDVAlKU09OX0FSUkFZQUdHKE5VTEwpLAorCQlKU09OX0FSUkFZQUdHKE5VTEwg UkVUVVJOSU5HIGpzb25iKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSk7CisganNvbl9h cnJheWFnZyB8IGpzb25fYXJyYXlhZ2cgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tCisgW10gICAgICAgICAgICB8IFtdCisoMSByb3cpCisKK1NFTEVDVAlKU09OX0FSUkFZ QUdHKE5VTEwgTlVMTCBPTiBOVUxMKSwKKwkJSlNPTl9BUlJBWUFHRyhOVUxMIE5VTEwgT04g TlVMTCBSRVRVUk5JTkcganNvbmIpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KTsKKyAg ICAgICAgIGpzb25fYXJyYXlhZ2cgICAgICAgICAgfCAgICAgICAgIGpzb25fYXJyYXlhZ2cg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxs XSB8IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXQorKDEgcm93KQorCitTRUxFQ1QK KwlKU09OX0FSUkFZQUdHKGJhciksCisJSlNPTl9BUlJBWUFHRyhiYXIgUkVUVVJOSU5HIGpz b25iKSwKKwlKU09OX0FSUkFZQUdHKGJhciBBQlNFTlQgT04gTlVMTCksCisJSlNPTl9BUlJB WUFHRyhiYXIgQUJTRU5UIE9OIE5VTEwgUkVUVVJOSU5HIGpzb25iKSwKKwlKU09OX0FSUkFZ QUdHKGJhciBOVUxMIE9OIE5VTEwpLAorCUpTT05fQVJSQVlBR0coYmFyIE5VTEwgT04gTlVM TCBSRVRVUk5JTkcganNvbmIpLAorCUpTT05fQVJSQVlBR0coZm9vKSwKKwlKU09OX0FSUkFZ QUdHKGZvbyBSRVRVUk5JTkcganNvbmIpLAorCUpTT05fQVJSQVlBR0coZm9vIE9SREVSIEJZ IGJhcikgRklMVEVSIChXSEVSRSBiYXIgPiAyKSwKKwlKU09OX0FSUkFZQUdHKGZvbyBPUkRF UiBCWSBiYXIgUkVUVVJOSU5HIGpzb25iKSBGSUxURVIgKFdIRVJFIGJhciA+IDIpCitGUk9N CisJKFZBTFVFUyAoTlVMTCksICgzKSwgKDEpLCAoTlVMTCksIChOVUxMKSwgKDUpLCAoMiks ICg0KSwgKE5VTEwpKSBmb28oYmFyKTsKKyAganNvbl9hcnJheWFnZyAgfCAganNvbl9hcnJh eWFnZyAgfCAganNvbl9hcnJheWFnZyAgfCAganNvbl9hcnJheWFnZyAgfCAgICAgICAgICAg ICAganNvbl9hcnJheWFnZyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAganNvbl9hcnJh eWFnZyAgICAgICAgICAgICAgfCAganNvbl9hcnJheWFnZyAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25fYXJyYXlhZ2cgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBq c29uX2FycmF5YWdnIHwgICAgICAgICAgICBqc29uX2FycmF5YWdnICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzMsIDEsIDUsIDIsIDRdIHwgWzMsIDEs IDUsIDIsIDRdIHwgWzMsIDEsIDUsIDIsIDRdIHwgWzMsIDEsIDUsIDIsIDRdIHwgW251bGws IDMsIDEsIG51bGwsIG51bGwsIDUsIDIsIDQsIG51bGxdIHwgW251bGwsIDMsIDEsIG51bGws IG51bGwsIDUsIDIsIDQsIG51bGxdIHwgW3siYmFyIjpudWxsfSwgK3wgW3siYmFyIjogbnVs bH0sIHsiYmFyIjogM30sIHsiYmFyIjogMX0sIHsiYmFyIjogbnVsbH0sIHsiYmFyIjogbnVs bH0sIHsiYmFyIjogNX0sIHsiYmFyIjogMn0sIHsiYmFyIjogNH0sIHsiYmFyIjogbnVsbH1d IHwgW3siYmFyIjozfSwgICt8IFt7ImJhciI6IDN9LCB7ImJhciI6IDR9LCB7ImJhciI6IDV9 XQorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7 ImJhciI6M30sICAgICt8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6NH0sICArfCAKKyAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgeyJiYXIiOjF9 LCAgICArfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgeyJiYXIiOjV9XSAgIHwgCisgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHsiYmFyIjpudWxsfSwgK3wg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IAorICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6bnVsbH0sICt8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgfCAKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgeyJiYXIiOjV9LCAgICArfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgIHwgCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIHsiYmFyIjoyfSwgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICB8IAorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICB7ImJhciI6NH0sICAgICt8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAK KyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgeyJi YXIiOm51bGx9XSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgCisoMSByb3cp CisKK1NFTEVDVAorCWJhciwgSlNPTl9BUlJBWUFHRyhiYXIpIEZJTFRFUiAoV0hFUkUgYmFy ID4gMikgT1ZFUiAoUEFSVElUSU9OIEJZIGZvby5iYXIgJSAyKQorRlJPTQorCShWQUxVRVMg KE5VTEwpLCAoMyksICgxKSwgKE5VTEwpLCAoTlVMTCksICg1KSwgKDIpLCAoNCksIChOVUxM KSwgKDUpLCAoNCkpIGZvbyhiYXIpOworIGJhciB8IGpzb25fYXJyYXlhZ2cgCistLS0tLSst LS0tLS0tLS0tLS0tLS0KKyAgIDQgfCBbNCwgNF0KKyAgIDQgfCBbNCwgNF0KKyAgIDIgfCBb NCwgNF0KKyAgIDUgfCBbNSwgMywgNV0KKyAgIDMgfCBbNSwgMywgNV0KKyAgIDEgfCBbNSwg MywgNV0KKyAgIDUgfCBbNSwgMywgNV0KKyAgICAgfCAKKyAgICAgfCAKKyAgICAgfCAKKyAg ICAgfCAKKygxMSByb3dzKQorCistLSBKU09OX09CSkVDVEFHRygpCitTRUxFQ1QJSlNPTl9P QkpFQ1RBR0coJ2tleSc6IDEpIElTIE5VTEwsCisJCUpTT05fT0JKRUNUQUdHKCdrZXknOiAx IFJFVFVSTklORyBqc29uYikgSVMgTlVMTAorV0hFUkUgRkFMU0U7CisgP2NvbHVtbj8gfCA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHQgICAgICAgIHwgdAorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9PQkpFQ1RBR0coTlVMTDogMSk7CitFUlJPUjogIGZpZWxkIG5h bWUgbXVzdCBub3QgYmUgbnVsbAorU0VMRUNUIEpTT05fT0JKRUNUQUdHKE5VTEw6IDEgUkVU VVJOSU5HIGpzb25iKTsKK0VSUk9SOiAgZmllbGQgbmFtZSBtdXN0IG5vdCBiZSBudWxsCitT RUxFQ1QKKwlKU09OX09CSkVDVEFHRyhpOiBpKSwKKy0tCUpTT05fT0JKRUNUQUdHKGkgVkFM VUUgaSksCistLQlKU09OX09CSkVDVEFHRyhLRVkgaSBWQUxVRSBpKSwKKwlKU09OX09CSkVD VEFHRyhpOiBpIFJFVFVSTklORyBqc29uYikKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwg NSkgaTsKKyAgICAgICAgICAgICAgICAganNvbl9vYmplY3RhZ2cgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICBqc29uX29iamVjdGFnZyAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsgIjEiIDogMSwgIjIiIDogMiwg IjMiIDogMywgIjQiIDogNCwgIjUiIDogNSB9IHwgeyIxIjogMSwgIjIiOiAyLCAiMyI6IDMs ICI0IjogNCwgIjUiOiA1fQorKDEgcm93KQorCitTRUxFQ1QKKwlKU09OX09CSkVDVEFHRyhr OiB2KSwKKwlKU09OX09CSkVDVEFHRyhrOiB2IE5VTEwgT04gTlVMTCksCisJSlNPTl9PQkpF Q1RBR0coazogdiBBQlNFTlQgT04gTlVMTCksCisJSlNPTl9PQkpFQ1RBR0coazogdiBSRVRV Uk5JTkcganNvbmIpLAorCUpTT05fT0JKRUNUQUdHKGs6IHYgTlVMTCBPTiBOVUxMIFJFVFVS TklORyBqc29uYiksCisJSlNPTl9PQkpFQ1RBR0coazogdiBBQlNFTlQgT04gTlVMTCBSRVRV Uk5JTkcganNvbmIpCitGUk9NCisJKFZBTFVFUyAoMSwgMSksICgxLCBOVUxMKSwgKDIsIE5V TEwpLCAoMywgMykpIGZvbyhrLCB2KTsKKyAgICAgICAgICAgICAgICBqc29uX29iamVjdGFn ZyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIGpzb25fb2JqZWN0YWdnICAgICAg ICAgICAgICAgIHwgICAganNvbl9vYmplY3RhZ2cgICAgfCAgICAgICAgIGpzb25fb2JqZWN0 YWdnICAgICAgICAgfCAgICAgICAgIGpzb25fb2JqZWN0YWdnICAgICAgICAgfCAganNvbl9v YmplY3RhZ2cgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg eyAiMSIgOiAxLCAiMSIgOiBudWxsLCAiMiIgOiBudWxsLCAiMyIgOiAzIH0gfCB7ICIxIiA6 IDEsICIxIiA6IG51bGwsICIyIiA6IG51bGwsICIzIiA6IDMgfSB8IHsgIjEiIDogMSwgIjMi IDogMyB9IHwgeyIxIjogbnVsbCwgIjIiOiBudWxsLCAiMyI6IDN9IHwgeyIxIjogbnVsbCwg IjIiOiBudWxsLCAiMyI6IDN9IHwgeyIxIjogMSwgIjMiOiAzfQorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9PQkpFQ1RBR0coazogdiBXSVRIIFVOSVFVRSBLRVlTKQorRlJPTSAoVkFMVUVT ICgxLCAxKSwgKDEsIE5VTEwpLCAoMiwgMikpIGZvbyhrLCB2KTsKK0VSUk9SOiAgZHVwbGlj YXRlIEpTT04ga2V5ICIxIgorU0VMRUNUIEpTT05fT0JKRUNUQUdHKGs6IHYgQUJTRU5UIE9O IE5VTEwgV0lUSCBVTklRVUUgS0VZUykKK0ZST00gKFZBTFVFUyAoMSwgMSksICgxLCBOVUxM KSwgKDIsIDIpKSBmb28oaywgdik7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OIGtleSAiMSIK K1NFTEVDVCBKU09OX09CSkVDVEFHRyhrOiB2IEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVF IEtFWVMpCitGUk9NIChWQUxVRVMgKDEsIDEpLCAoMCwgTlVMTCksICgzLCBOVUxMKSwgKDIs IDIpLCAoNCwgTlVMTCkpIGZvbyhrLCB2KTsKKyAgICBqc29uX29iamVjdGFnZyAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7ICIxIiA6IDEsICIyIiA6IDIgfQorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9PQkpFQ1RBR0coazogdiBXSVRIIFVOSVFVRSBLRVlTIFJFVFVSTklO RyBqc29uYikKK0ZST00gKFZBTFVFUyAoMSwgMSksICgxLCBOVUxMKSwgKDIsIDIpKSBmb28o aywgdik7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OIG9iamVjdCBrZXkgdmFsdWUKK1NFTEVD VCBKU09OX09CSkVDVEFHRyhrOiB2IEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFIEtFWVMg UkVUVVJOSU5HIGpzb25iKQorRlJPTSAoVkFMVUVTICgxLCAxKSwgKDEsIE5VTEwpLCAoMiwg MikpIGZvbyhrLCB2KTsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT04gb2JqZWN0IGtleSB2YWx1 ZQorLS0gVGVzdCBKU09OX09CSkVDVCBkZXBhcnNpbmcKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikKK1NFTEVDVCBKU09OX09CSkVDVCgnZm9vJyA6ICcxJyBGT1JNQVQgSlNPTiwg J2JhcicgOiAnYmF6JyBSRVRVUk5JTkcganNvbik7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBKU09O X09CSkVDVCgnZm9vJyA6ICcxJzo6anNvbiwgJ2JhcicgOiAnYmF6Jzo6dGV4dCBSRVRVUk5J TkcganNvbikKKygyIHJvd3MpCisKK0NSRUFURSBWSUVXIGpzb25fb2JqZWN0X3ZpZXcgQVMK K1NFTEVDVCBKU09OX09CSkVDVCgnZm9vJyA6ICcxJyBGT1JNQVQgSlNPTiwgJ2JhcicgOiAn YmF6JyBSRVRVUk5JTkcganNvbik7Citcc3YganNvbl9vYmplY3RfdmlldworQ1JFQVRFIE9S IFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbl9vYmplY3RfdmlldyBBUworIFNFTEVDVCBKU09O X09CSkVDVCgnZm9vJyA6ICcxJzo6dGV4dCBGT1JNQVQgSlNPTiwgJ2JhcicgOiAnYmF6Jzo6 dGV4dCBSRVRVUk5JTkcganNvbikgQVMgImpzb25fb2JqZWN0IgorRFJPUCBWSUVXIGpzb25f b2JqZWN0X3ZpZXc7CistLSBUZXN0IEpTT05fQVJSQVkgZGVwYXJzaW5nCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgSlNPTl9BUlJBWSgnMScgRk9STUFUIEpTT04s IDIgUkVUVVJOSU5HIGpzb24pOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogSlNPTl9BUlJBWSgnMSc6 Ompzb24sIDIgUkVUVVJOSU5HIGpzb24pCisoMiByb3dzKQorCitDUkVBVEUgVklFVyBqc29u X2FycmF5X3ZpZXcgQVMKK1NFTEVDVCBKU09OX0FSUkFZKCcxJyBGT1JNQVQgSlNPTiwgMiBS RVRVUk5JTkcganNvbik7Citcc3YganNvbl9hcnJheV92aWV3CitDUkVBVEUgT1IgUkVQTEFD RSBWSUVXIHB1YmxpYy5qc29uX2FycmF5X3ZpZXcgQVMKKyBTRUxFQ1QgSlNPTl9BUlJBWSgn MSc6OnRleHQgRk9STUFUIEpTT04sIDIgUkVUVVJOSU5HIGpzb24pIEFTICJqc29uX2FycmF5 IgorRFJPUCBWSUVXIGpzb25fYXJyYXlfdmlldzsKKy0tIFRlc3QgSlNPTl9PQkpFQ1RBR0cg ZGVwYXJzaW5nCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgSlNPTl9P QkpFQ1RBR0coaTogKCcxMTEnIHx8IGkpOjpieXRlYSBGT1JNQVQgSlNPTiBXSVRIIFVOSVFV RSBSRVRVUk5JTkcgdGV4dCkgRklMVEVSIChXSEVSRSBpID4gMykKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsNSkgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiBKU09OX09CSkVDVEFH RyhpIDogKCgnMTExJzo6dGV4dCB8fCAoaSk6OnRleHQpKTo6Ynl0ZWEgRk9STUFUIEpTT04g V0lUSCBVTklRVUUgS0VZUyBSRVRVUk5JTkcgdGV4dCkgRklMVEVSIChXSEVSRSAoaSA+IDMp KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMg aQorICAgICAgICAgT3V0cHV0OiBpCisgICAgICAgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0 ZV9zZXJpZXMoMSwgNSkKKyg1IHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCBKU09OX09CSkVDVEFHRyhpOiAoJzExMScgfHwgaSk6OmJ5dGVhIEZPUk1B VCBKU09OIFdJVEggVU5JUVVFIFJFVFVSTklORyB0ZXh0KSBPVkVSIChQQVJUSVRJT04gQlkg aSAlIDIpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIE91dHB1 dDogSlNPTl9PQkpFQ1RBR0coaSA6ICgoJzExMSc6OnRleHQgfHwgKGkpOjp0ZXh0KSk6OmJ5 dGVhIEZPUk1BVCBKU09OIFdJVEggVU5JUVVFIEtFWVMgUkVUVVJOSU5HIHRleHQpIE9WRVIg KD8pLCAoKGkgJSAyKSkKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6ICgoaSAlIDIp KSwgaQorICAgICAgICAgU29ydCBLZXk6ICgoaS5pICUgMikpCisgICAgICAgICAtPiAgRnVu Y3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRlX3NlcmllcyBpCisgICAgICAgICAg ICAgICBPdXRwdXQ6IChpICUgMiksIGkKKyAgICAgICAgICAgICAgIEZ1bmN0aW9uIENhbGw6 IGdlbmVyYXRlX3NlcmllcygxLCA1KQorKDggcm93cykKKworQ1JFQVRFIFZJRVcganNvbl9v YmplY3RhZ2dfdmlldyBBUworU0VMRUNUIEpTT05fT0JKRUNUQUdHKGk6ICgnMTExJyB8fCBp KTo6Ynl0ZWEgRk9STUFUIEpTT04gV0lUSCBVTklRVUUgUkVUVVJOSU5HIHRleHQpIEZJTFRF UiAoV0hFUkUgaSA+IDMpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGk7Citcc3YganNv bl9vYmplY3RhZ2dfdmlldworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbl9v YmplY3RhZ2dfdmlldyBBUworIFNFTEVDVCBKU09OX09CSkVDVEFHRyhpLmkgOiAoJzExMSc6 OnRleHQgfHwgaS5pKTo6Ynl0ZWEgRk9STUFUIEpTT04gV0lUSCBVTklRVUUgS0VZUyBSRVRV Uk5JTkcgdGV4dCkgRklMVEVSIChXSEVSRSBpLmkgPiAzKSBBUyAianNvbl9vYmplY3RhZ2ci CisgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBpKGkpCitEUk9QIFZJRVcganNvbl9v YmplY3RhZ2dfdmlldzsKKy0tIFRlc3QgSlNPTl9BUlJBWUFHRyBkZXBhcnNpbmcKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBKU09OX0FSUkFZQUdHKCgnMTExJyB8 fCBpKTo6Ynl0ZWEgRk9STUFUIEpTT04gTlVMTCBPTiBOVUxMIFJFVFVSTklORyB0ZXh0KSBG SUxURVIgKFdIRVJFIGkgPiAzKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICBPdXRw dXQ6IEpTT05fQVJSQVlBR0coKCgnMTExJzo6dGV4dCB8fCAoaSk6OnRleHQpKTo6Ynl0ZWEg Rk9STUFUIEpTT04gTlVMTCBPTiBOVUxMIFJFVFVSTklORyB0ZXh0KSBGSUxURVIgKFdIRVJF IChpID4gMykpCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRl X3NlcmllcyBpCisgICAgICAgICBPdXRwdXQ6IGkKKyAgICAgICAgIEZ1bmN0aW9uIENhbGw6 IGdlbmVyYXRlX3NlcmllcygxLCA1KQorKDUgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIEpTT05fQVJSQVlBR0coKCcxMTEnIHx8IGkpOjpieXRlYSBG T1JNQVQgSlNPTiBOVUxMIE9OIE5VTEwgUkVUVVJOSU5HIHRleHQpIE9WRVIgKFBBUlRJVElP TiBCWSBpICUgMikKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgaTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgT3V0cHV0OiBKU09OX0FSUkFZ QUdHKCgoJzExMSc6OnRleHQgfHwgKGkpOjp0ZXh0KSk6OmJ5dGVhIEZPUk1BVCBKU09OIE5V TEwgT04gTlVMTCBSRVRVUk5JTkcgdGV4dCkgT1ZFUiAoPyksICgoaSAlIDIpKQorICAgLT4g IFNvcnQKKyAgICAgICAgIE91dHB1dDogKChpICUgMikpLCBpCisgICAgICAgICBTb3J0IEtl eTogKChpLmkgJSAyKSkKKyAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFs b2cuZ2VuZXJhdGVfc2VyaWVzIGkKKyAgICAgICAgICAgICAgIE91dHB1dDogKGkgJSAyKSwg aQorICAgICAgICAgICAgICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDUp CisoOCByb3dzKQorCitDUkVBVEUgVklFVyBqc29uX2FycmF5YWdnX3ZpZXcgQVMKK1NFTEVD VCBKU09OX0FSUkFZQUdHKCgnMTExJyB8fCBpKTo6Ynl0ZWEgRk9STUFUIEpTT04gTlVMTCBP TiBOVUxMIFJFVFVSTklORyB0ZXh0KSBGSUxURVIgKFdIRVJFIGkgPiAzKQorRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSw1KSBpOworXHN2IGpzb25fYXJyYXlhZ2dfdmlldworQ1JFQVRFIE9S IFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbl9hcnJheWFnZ192aWV3IEFTCisgU0VMRUNUIEpT T05fQVJSQVlBR0coKCcxMTEnOjp0ZXh0IHx8IGkuaSk6OmJ5dGVhIEZPUk1BVCBKU09OIE5V TEwgT04gTlVMTCBSRVRVUk5JTkcgdGV4dCkgRklMVEVSIChXSEVSRSBpLmkgPiAzKSBBUyAi anNvbl9hcnJheWFnZyIKKyAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIGkoaSkKK0RS T1AgVklFVyBqc29uX2FycmF5YWdnX3ZpZXc7CistLSBUZXN0IEpTT05fQVJSQVkoc3VicXVl cnkpIGRlcGFyc2luZworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIEpT T05fQVJSQVkoU0VMRUNUIGkgRlJPTSAoVkFMVUVTICgxKSwgKDIpLCAoTlVMTCksICg0KSkg Zm9vKGkpIFJFVFVSTklORyBqc29uYik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiAkMAorICAgSW5pdFBsYW4gMSAocmV0dXJucyAk MCkKKyAgICAgLT4gIEFnZ3JlZ2F0ZQorICAgICAgICAgICBPdXRwdXQ6IEpTT05fQVJSQVlB R0coIipWQUxVRVMqIi5jb2x1bW4xIFJFVFVSTklORyBqc29uYikKKyAgICAgICAgICAgLT4g IFZhbHVlcyBTY2FuIG9uICIqVkFMVUVTKiIKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAi KlZBTFVFUyoiLmNvbHVtbjEKKyg3IHJvd3MpCisKK0NSRUFURSBWSUVXIGpzb25fYXJyYXlf c3VicXVlcnlfdmlldyBBUworU0VMRUNUIEpTT05fQVJSQVkoU0VMRUNUIGkgRlJPTSAoVkFM VUVTICgxKSwgKDIpLCAoTlVMTCksICg0KSkgZm9vKGkpIFJFVFVSTklORyBqc29uYik7Citc c3YganNvbl9hcnJheV9zdWJxdWVyeV92aWV3CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1 YmxpYy5qc29uX2FycmF5X3N1YnF1ZXJ5X3ZpZXcgQVMKKyBTRUxFQ1QgKCBTRUxFQ1QgSlNP Tl9BUlJBWUFHRyhxLmEgUkVUVVJOSU5HIGpzb25iKSBBUyAianNvbl9hcnJheWFnZyIKKyAg ICAgICAgICAgRlJPTSAoIFNFTEVDVCBmb28uaQorICAgICAgICAgICAgICAgICAgIEZST00g KCBWQUxVRVMgKDEpLCAoMiksIChOVUxMOjppbnRlZ2VyKSwgKDQpKSBmb28oaSkpIHEoYSkp IEFTICJqc29uX2FycmF5IgorRFJPUCBWSUVXIGpzb25fYXJyYXlfc3VicXVlcnlfdmlldzsK Ky0tIElTIEpTT04gcHJlZGljYXRlCitTRUxFQ1QgTlVMTCBJUyBKU09OOworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgTlVMTCBJUyBOT1QgSlNPTjsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIE5VTEw6Ompz b24gSVMgSlNPTjsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIE5VTEw6Ompzb25iIElTIEpTT047CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBOVUxMOjp0ZXh0IElTIEpTT047CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBOVUxMOjpieXRlYSBJUyBKU09OOworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgTlVMTDo6aW50IElT IEpTT047CitFUlJPUjogIGNhbm5vdCB1c2UgdHlwZSBpbnRlZ2VyIGluIElTIEpTT04gcHJl ZGljYXRlCitTRUxFQ1QgJycgSVMgSlNPTjsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBm CisoMSByb3cpCisKK1NFTEVDVCBieXRlYSAnXHgwMCcgSVMgSlNPTjsKK0VSUk9SOiAgaW52 YWxpZCBieXRlIHNlcXVlbmNlIGZvciBlbmNvZGluZyAiVVRGOCI6IDB4MDAKK0NSRUFURSBU QUJMRSB0ZXN0X2lzX2pzb24gKGpzIHRleHQpOworSU5TRVJUIElOVE8gdGVzdF9pc19qc29u IFZBTFVFUworIChOVUxMKSwKKyAoJycpLAorICgnMTIzJyksCisgKCciYWFhICInKSwKKyAo J3RydWUnKSwKKyAoJ251bGwnKSwKKyAoJ1tdJyksCisgKCdbMSwgIjIiLCB7fV0nKSwKKyAo J3t9JyksCisgKCd7ICJhIjogMSwgImIiOiBudWxsIH0nKSwKKyAoJ3sgImEiOiAxLCAiYSI6 IG51bGwgfScpLAorICgneyAiYSI6IDEsICJiIjogW3sgImEiOiAxIH0sIHsgImEiOiAyIH1d IH0nKSwKKyAoJ3sgImEiOiAxLCAiYiI6IFt7ICJhIjogMSwgImIiOiAwLCAiYSI6IDIgfV0g fScpLAorICgnYWFhJyksCisgKCd7YToxfScpLAorICgnWyJhIixdJyk7CitTRUxFQ1QKKwlq cywKKwlqcyBJUyBKU09OICJJUyBKU09OIiwKKwlqcyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpT T04iLAorCWpzIElTIEpTT04gVkFMVUUgIklTIFZBTFVFIiwKKwlqcyBJUyBKU09OIE9CSkVD VCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09OIEFSUkFZICJJUyBBUlJBWSIsCisJanMgSVMg SlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJanMgSVMgSlNPTiBXSVRIT1VUIFVOSVFVRSBL RVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMgSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTICJX SVRIIFVOSVFVRSIKK0ZST00KKwl0ZXN0X2lzX2pzb247CisgICAgICAgICAgICAgICAgICAg ICAganMgICAgICAgICAgICAgICAgICAgICAgIHwgSVMgSlNPTiB8IElTIE5PVCBKU09OIHwg SVMgVkFMVUUgfCBJUyBPQkpFQ1QgfCBJUyBBUlJBWSB8IElTIFNDQUxBUiB8IFdJVEhPVVQg VU5JUVVFIHwgV0lUSCBVTklRVUUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgfCAg ICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IGYg ICAgICAgICAgICAgIHwgZgorIDEyMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAg ICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyAiYWFh ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAg ICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAg fCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICAgICAgIHwg dAorIG51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAg fCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBbXSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0 ICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAg ICAgICAgfCB0CisgWzEsICIyIiwge31dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCB0 ICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHt9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0 ICAgICAgICAgICAgICB8IHQKKyB7ICJhIjogMSwgImIiOiBudWxsIH0gICAgICAgICAgICAg ICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAg ICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgeyAi YSI6IDEsICJhIjogbnVsbCB9ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAg ICAgICB8IHQgICAgICAgICAgICAgIHwgZgorIHsgImEiOiAxLCAiYiI6IFt7ICJhIjogMSB9 LCB7ICJhIjogMiB9XSB9ICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAg IHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8 IHQKKyB7ICJhIjogMSwgImIiOiBbeyAiYSI6IDEsICJiIjogMCwgImEiOiAyIH1dIH0gfCB0 ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAg IHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCBmCisgYWFhICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAg ICAgICAgIHwgZgorIHthOjF9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgICAgICB8IGYKKyBbImEiLF0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAg ICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwg ZiAgICAgICAgICAgICAgfCBmCisoMTYgcm93cykKKworU0VMRUNUCisJanMsCisJanMgSVMg SlNPTiAiSVMgSlNPTiIsCisJanMgSVMgTk9UIEpTT04gIklTIE5PVCBKU09OIiwKKwlqcyBJ UyBKU09OIFZBTFVFICJJUyBWQUxVRSIsCisJanMgSVMgSlNPTiBPQkpFQ1QgIklTIE9CSkVD VCIsCisJanMgSVMgSlNPTiBBUlJBWSAiSVMgQVJSQVkiLAorCWpzIElTIEpTT04gU0NBTEFS ICJJUyBTQ0FMQVIiLAorCWpzIElTIEpTT04gV0lUSE9VVCBVTklRVUUgS0VZUyAiV0lUSE9V VCBVTklRVUUiLAorCWpzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZUyAiV0lUSCBVTklRVUUi CitGUk9NCisJKFNFTEVDVCBqczo6anNvbiBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJ UyBKU09OKSBmb28oanMpOworICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAgICAg ICAgICAgICAgICB8IElTIEpTT04gfCBJUyBOT1QgSlNPTiB8IElTIFZBTFVFIHwgSVMgT0JK RUNUIHwgSVMgQVJSQVkgfCBJUyBTQ0FMQVIgfCBXSVRIT1VUIFVOSVFVRSB8IFdJVEggVU5J UVVFIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIDEyMyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAg ICAgfCB0ICAgICAgICAgICAgICB8IHQKKyAiYWFhICIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8 IGYgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0 CisgdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIG51bGwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQg ICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAg ICAgICB8IHQKKyBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IHQg ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgWzEsICIyIiwge31d ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IHQg ICAgICAgICAgICAgIHwgdAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ICJh IjogMSwgImIiOiBudWxsIH0gICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAg ICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgeyAiYSI6IDEsICJhIjogbnVsbCB9ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAg fCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwg ZgorIHsgImEiOiAxLCAiYiI6IFt7ICJhIjogMSB9LCB7ICJhIjogMiB9XSB9ICAgICB8IHQg ICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAg fCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ICJhIjogMSwgImIiOiBbeyAi YSI6IDEsICJiIjogMCwgImEiOiAyIH1dIH0gfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0 ICAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAg ICAgICAgfCBmCisoMTEgcm93cykKKworU0VMRUNUCisJanMwLAorCWpzIElTIEpTT04gIklT IEpTT04iLAorCWpzIElTIE5PVCBKU09OICJJUyBOT1QgSlNPTiIsCisJanMgSVMgSlNPTiBW QUxVRSAiSVMgVkFMVUUiLAorCWpzIElTIEpTT04gT0JKRUNUICJJUyBPQkpFQ1QiLAorCWpz IElTIEpTT04gQVJSQVkgIklTIEFSUkFZIiwKKwlqcyBJUyBKU09OIFNDQUxBUiAiSVMgU0NB TEFSIiwKKwlqcyBJUyBKU09OIFdJVEhPVVQgVU5JUVVFIEtFWVMgIldJVEhPVVQgVU5JUVVF IiwKKwlqcyBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVMgIldJVEggVU5JUVVFIgorRlJPTQor CShTRUxFQ1QganMsIGpzOjpieXRlYSBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBK U09OKSBmb28oanMwLCBqcyk7CisgICAgICAgICAgICAgICAgICAgICAganMwICAgICAgICAg ICAgICAgICAgICAgIHwgSVMgSlNPTiB8IElTIE5PVCBKU09OIHwgSVMgVkFMVUUgfCBJUyBP QkpFQ1QgfCBJUyBBUlJBWSB8IElTIFNDQUxBUiB8IFdJVEhPVVQgVU5JUVVFIHwgV0lUSCBV TklRVUUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgMTIz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICAgICAgIHwgdAorICJhYWEgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAg IHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8 IHQKKyB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAg IHwgdCAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCB0CisgbnVsbCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwg dCAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAg ICAgICAgIHwgdAorIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwg dCAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBbMSwgIjIiLCB7 fV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwg dCAgICAgICAgICAgICAgfCB0Cisge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAg ICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHsg ImEiOiAxLCAiYiI6IG51bGwgfSAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAg ICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ICJhIjogMSwgImEiOiBudWxsIH0gICAg ICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICAg ICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgICAgICAg fCBmCisgeyAiYSI6IDEsICJiIjogW3sgImEiOiAxIH0sIHsgImEiOiAyIH1dIH0gICAgIHwg dCAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAg ICB8IGYgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdAorIHsgImEiOiAxLCAiYiI6IFt7 ICJhIjogMSwgImIiOiAwLCAiYSI6IDIgfV0gfSB8IHQgICAgICAgfCBmICAgICAgICAgICB8 IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAg ICAgICAgICB8IGYKKygxMSByb3dzKQorCitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09OICJJ UyBKU09OIiwKKwlqcyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04g VkFMVUUgIklTIFZBTFVFIiwKKwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlq cyBJUyBKU09OIEFSUkFZICJJUyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFND QUxBUiIsCisJanMgSVMgSlNPTiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFV RSIsCisJanMgSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00K KwkoU0VMRUNUIGpzOjpqc29uYiBGUk9NIHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBKU09O KSBmb28oanMpOworICAgICAgICAgICAgICAgICBqcyAgICAgICAgICAgICAgICAgIHwgSVMg SlNPTiB8IElTIE5PVCBKU09OIHwgSVMgVkFMVUUgfCBJUyBPQkpFQ1QgfCBJUyBBUlJBWSB8 IElTIFNDQUxBUiB8IFdJVEhPVVQgVU5JUVVFIHwgV0lUSCBVTklRVUUgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyAxMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwg ZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyAiYWFhICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQg ICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAg ICAgICB8IHQKKyB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBudWxsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAg ICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyBb XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgfCB0 ICAgICAgICAgICAgICB8IHQKKyBbMSwgIjIiLCB7fV0gICAgICAgICAgICAgICAgICAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgIHwgdCAg ICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7fSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAg ICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAg ICB8IHQKKyB7ImEiOiAxLCAiYiI6IG51bGx9ICAgICAgICAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAg ICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ImEiOiBudWxsfSAgICAgICAgICAgICAg ICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKyB7ImEi OiAxLCAiYiI6IFt7ImEiOiAxfSwgeyJhIjogMn1dfSB8IHQgICAgICAgfCBmICAgICAgICAg ICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgfCB0ICAg ICAgICAgICAgICB8IHQKKyB7ImEiOiAxLCAiYiI6IFt7ImEiOiAyLCAiYiI6IDB9XX0gICB8 IHQgICAgICAgfCBmICAgICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAg ICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQKKygxMSByb3dzKQorCistLSBU ZXN0IElTIEpTT04gZGVwYXJzaW5nCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgJzEnIElTIEpTT04gQVMgImFueSIsICgnMScgfHwgaSkgSVMgSlNPTiBTQ0FMQVIg QVMgInNjYWxhciIsICdbXScgSVMgTk9UIEpTT04gQVJSQVkgQVMgImFycmF5IiwgJ3t9JyBJ UyBKU09OIE9CSkVDVCBXSVRIIFVOSVFVRSBBUyAib2JqZWN0IiBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAzKSBpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgaQorICAg T3V0cHV0OiAoJzEnOjp0ZXh0IElTIEpTT04pLCAoKCcxJzo6dGV4dCB8fCAoaSk6OnRleHQp IElTIEpTT04gU0NBTEFSKSwgKE5PVCAoJ1tdJzo6dGV4dCBJUyBKU09OIEFSUkFZKSksICgn e30nOjp0ZXh0IElTIEpTT04gT0JKRUNUIFdJVEggVU5JUVVFIEtFWVMpCisgICBGdW5jdGlv biBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMykKKygzIHJvd3MpCisKK0NSRUFURSBWSUVX IGlzX2pzb25fdmlldyBBUworU0VMRUNUICcxJyBJUyBKU09OIEFTICJhbnkiLCAoJzEnIHx8 IGkpIElTIEpTT04gU0NBTEFSIEFTICJzY2FsYXIiLCAnW10nIElTIE5PVCBKU09OIEFSUkFZ IEFTICJhcnJheSIsICd7fScgSVMgSlNPTiBPQkpFQ1QgV0lUSCBVTklRVUUgQVMgIm9iamVj dCIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgaTsKK1xzdiBpc19qc29uX3ZpZXcKK0NS RUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLmlzX2pzb25fdmlldyBBUworIFNFTEVDVCAn MSc6OnRleHQgSVMgSlNPTiBBUyAiYW55IiwKKyAgICAoJzEnOjp0ZXh0IHx8IGkuaSkgSVMg SlNPTiBTQ0FMQVIgQVMgc2NhbGFyLAorICAgIE5PVCAnW10nOjp0ZXh0IElTIEpTT04gQVJS QVkgQVMgImFycmF5IiwKKyAgICAne30nOjp0ZXh0IElTIEpTT04gT0JKRUNUIFdJVEggVU5J UVVFIEtFWVMgQVMgb2JqZWN0CisgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBpKGkp CitEUk9QIFZJRVcgaXNfanNvbl92aWV3OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKaW5kZXggNmQ4ZjUyNGFlOS4uYjhjZWEzYTVmMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCkBAIC0xMTEsNyArMTExLDcgQEAgdGVzdDogc2VsZWN0X3ZpZXdzIHBv cnRhbHNfcDIgZm9yZWlnbl9rZXkgY2x1c3RlciBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMg Y29tYm8KICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3Rz IChKU09OIHJlbGF0ZWQpCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGpzb24ganNvbmIganNvbl9l bmNvZGluZyBqc29ucGF0aCBqc29ucGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0aAordGVz dDoganNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRoIGpzb25wYXRoX2VuY29kaW5n IGpzb25iX2pzb25wYXRoIHNxbGpzb24ganNvbl9zcWxqc29uIGpzb25iX3NxbGpzb24KIAog IyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25fc3FsanNvbi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjRmMzBmYTQ2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3FsCkBAIC0wLDAgKzEsMTEgQEAKKy0tIEpT T05fRVhJU1RTCisKK1NFTEVDVCBKU09OX0VYSVNUUyhOVUxMIEZPUk1BVCBKU09OLCAnJCcp OworCistLSBKU09OX1ZBTFVFCisKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpT T04sICckJyk7CisKKy0tIEpTT05fUVVFUlkKKworU0VMRUNUIEpTT05fUVVFUlkoTlVMTCBG T1JNQVQgSlNPTiwgJyQnKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pz b25iX3NxbGpzb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDBhMDY3YTA2YQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24u c3FsCkBAIC0wLDAgKzEsMzE3IEBACistLSBKU09OX0VYSVNUUworCitTRUxFQ1QgSlNPTl9F WElTVFMoTlVMTDo6anNvbmIsICckJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn W10nLCAnJCcpOworU0VMRUNUIEpTT05fRVhJU1RTKEpTT05fT0JKRUNUKFJFVFVSTklORyBq c29uYiksICckJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckJyk7CitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ251bGwnLCAnJCcpOworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICdbXScsICckJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScs ICckLmEnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyk7 CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04g RVJST1IpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdudWxsJywgJyQuYScpOworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICckLmEnKTsKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnc3RyaWN0ICQuYScpOworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICdbMSwgImFhYSIsIHsiYSI6IDF9XScsICdsYXggJC5hJyk7 CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3t9JywgJyQuYScpOworU0VMRUNUIEpTT05f RVhJU1RTKGpzb25iICd7ImIiOiAxLCAiYSI6IDJ9JywgJyQuYScpOworCitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJzEnLCAnJC5hLmInKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAneyJhIjogeyJiIjogMX19JywgJyQuYS5iJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC5hLmInKTsKKworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIDEg QVMgeCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAn JC4qID8gKEAgPiAkeCknIFBBU1NJTkcgJzEnIEFTIHgpOworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8ICR5KScg UEFTU0lORyAwIEFTIHgsIDIgQVMgeSk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3si YSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAg QVMgeCwgMSBBUyB5KTsKKworLS0gZXh0ZW5zaW9uOiBib29sZWFuIGV4cHJlc3Npb25zCitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJCA+IDInKTsKK1NFTEVDVCBKU09OX0VY SVNUUyhqc29uYiAnMScsICckLmEgPiAyJyBFUlJPUiBPTiBFUlJPUik7CisKKy0tIGV4dGVu c2lvbjogUkVUVVJOSU5HIGNsYXVzZQorU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywg JyRbMF0nIFJFVFVSTklORyBib29sKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScs ICckWzFdJyBSRVRVUk5JTkcgYm9vbCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEn LCAnJFswXScgUkVUVVJOSU5HIGludCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEn LCAnJFsxXScgUkVUVVJOSU5HIGludCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEn LCAnJFswXScgUkVUVVJOSU5HIHRleHQpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcx JywgJyRbMV0nIFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn MScsICdzdHJpY3QgJFsxXScgUkVUVVJOSU5HIHRleHQgRkFMU0UgT04gRVJST1IpOworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyRbMF0nIFJFVFVSTklORyBqc29uYik7CitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJFswXScgUkVUVVJOSU5HIGZsb2F0NCk7 CisKKworLS0gSlNPTl9WQUxVRQorCitTRUxFQ1QgSlNPTl9WQUxVRShOVUxMOjpqc29uYiwg JyQnKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIGludCk7CisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICd0cnVlJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICd0cnVlJywgJyQnIFJFVFVSTklORyBib29sKTsKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEyMycsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQn IFJFVFVSTklORyBpbnQpICsgMjM0OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycs ICckJyBSRVRVUk5JTkcgdGV4dCk7CisvKiBqc29uYiBieXRlYSA/Pz8gKi8KK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEVSUk9SIE9OIEVS Uk9SKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEuMjMnLCAnJCcpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJzEuMjMnLCAnJCcgUkVUVVJOSU5HIGludCk7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBudW1lcmljKTsKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVUVVJOSU5HIGludCBFUlJP UiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyk7 CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQp OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFy KDUpKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcg Y2hhcigyKSk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIGpzb24pOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVS TklORyBqc29uYik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIGpzb24gRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uYiBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnIlwiYWFhXCIiJywgJyQnIFJFVFVSTklORyBqc29uKTsKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICciXCJhYWFcIiInLCAnJCcgUkVUVVJOSU5HIGpzb25i KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50 KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50 IEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICck JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMTExIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICciMTIzIicsICckJyBSRVRVUk5JTkcgaW50KSArIDIzNDsKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyIyMDE3LTAyLTIwIicsICckJyBSRVRVUk5JTkcgZGF0ZSkg KyA5OworCistLSBUZXN0IE5VTEwgY2hlY2tzIGV4ZWN1dGlvbiBpbiBkb21haW4gdHlwZXMK K0NSRUFURSBET01BSU4gc3FsanNvbmJfaW50X25vdF9udWxsIEFTIGludCBOT1QgTlVMTDsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25i X2ludF9ub3RfbnVsbCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnIFJF VFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgTlVMTCBPTiBFUlJPUik7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90 X251bGwgREVGQVVMVCBOVUxMIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJ1tdJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbXScsICckJyBFUlJP UiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ3t9JywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnMScsICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUICdlcnJvcicgT04gRVJST1Ip OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRVJS T1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04g RU1QVFkgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAn c3RyaWN0ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUICcyJyBPTiBFUlJPUik7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFV TFQgJzInIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAk LmEnIERFRkFVTFQgJzInIE9OIEVNUFRZIERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZIERFRkFV TFQgJzMnIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywg JyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwy XScsICckWypdJyBERUZBVUxUICcwJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBE RUZBVUxUIDIgKyAzIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIjEi XScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04gRVJST1IpOworCitT RUxFQ1QKKwl4LAorCUpTT05fVkFMVUUoCisJCWpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywK KwkJJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIHggQVMgeAorCQlSRVRVUk5JTkcgaW50CisJ CURFRkFVTFQgLTEgT04gRU1QVFkKKwkJREVGQVVMVCAtMiBPTiBFUlJPUgorCSkgeQorRlJP TQorCWdlbmVyYXRlX3NlcmllcygwLCAyKSB4OworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiAp JyBBUyBhIFJFVFVSTklORyBwb2ludCk7CisKKy0tIFRlc3QgdGltZXN0YW1wdHogcGFzc2lu ZyBhbmQgb3V0cHV0CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBB U1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1w dHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1w dHopOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRp bWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRp bWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJ TkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5J TkcganNvbik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJ TkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5J TkcganNvbmIpOworCistLSBKU09OX1FVRVJZCisKK1NFTEVDVAorCUpTT05fUVVFUlkoanMs ICckJyksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEhPVVQgV1JBUFBFUiksCisJSlNPTl9R VUVSWShqcywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiksCisJSlNPTl9RVUVSWShq cywgJyQnIFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSwKKwlKU09OX1FVRVJZ KGpzLCAnJCcgV0lUSCBBUlJBWSBXUkFQUEVSKQorRlJPTQorCShWQUxVRVMKKwkJKGpzb25i ICdudWxsJyksCisJCSgnMTIuMycpLAorCQkoJ3RydWUnKSwKKwkJKCciYWFhIicpLAorCQko J1sxLCBudWxsLCAiMiJdJyksCisJCSgneyJhIjogMSwgImIiOiBbMl19JykKKwkpIGZvbyhq cyk7CisKK1NFTEVDVAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScpIEFTICJ1bnNw ZWMiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSE9VVCBXUkFQUEVSKSBB UyAid2l0aG91dCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIENPTkRJ VElPTkFMIFdSQVBQRVIpIEFTICJ3aXRoIGNvbmQiLAorCUpTT05fUVVFUlkoanMsICdzdHJp Y3QgJFsqXScgV0lUSCBVTkNPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIpIEFTICJ3aXRoIHVu Y29uZCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIEFSUkFZIFdSQVBQ RVIpIEFTICJ3aXRoIgorRlJPTQorCShWQUxVRVMKKwkJKGpzb25iICcxJyksCisJCSgnW10n KSwKKwkJKCdbbnVsbF0nKSwKKwkJKCdbMTIuM10nKSwKKwkJKCdbdHJ1ZV0nKSwKKwkJKCdb ImFhYSJdJyksCisJCSgnW1sxLCAyLCAzXV0nKSwKKwkJKCdbeyJhIjogMSwgImIiOiBbMl19 XScpLAorCQkoJ1sxLCAiMiIsIG51bGwsIFszXV0nKQorCSkgZm9vKGpzKTsKKworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBLRUVQIFFV T1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IHRleHQgS0VFUCBRVU9URVMgT04gU0NBTEFSIFNUUklORyk7CitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgT01JVCBRVU9URVMpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQg UVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJh YWEiJywgJyQnIE9NSVQgUVVPVEVTIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbiBPTUlUIFFVT1RFUyBFUlJP UiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIE9NSVQgUVVPVEVTIEVSUk9SIE9OIEVSUk9SKTsK KworLS0gUVVPVEVTIGJlaGF2aW9yIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lU SCBXUkFQUEVSIHVzZWQ6CistLSBTaG91bGQgZmFpbAorU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgT01JVCBRVU9URVMpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgS0VFUCBRVU9URVMpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQ RVIgS0VFUCBRVU9URVMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBX SVRIIENPTkRJVElPTkFMIFdSQVBQRVIgT01JVCBRVU9URVMpOworLS0gU2hvdWxkIHN1Y2Nl ZWQKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBXUkFQUEVS IE9NSVQgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lU SE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1tdJywgJyRbKl0nKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBO VUxMIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF TVBUWSBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg RU1QVFkgQVJSQVkgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywg JyRbKl0nIEVNUFRZIE9CSkVDVCBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1tdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9OIEVNUFRZKTsKKworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIE5VTEwgT04g RVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9O IEVNUFRZIEVNUFRZIEFSUkFZIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVS Uk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF UlJPUiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICck WypdJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0n LCAnJFsqXScgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uIEZPUk1BVCBKU09OKTsK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbmIp OworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29u YiBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcg UkVUVVJOSU5HIHRleHQpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQn IFJFVFVSTklORyBjaGFyKDEwKSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0n LCAnJCcgUkVUVVJOSU5HIGNoYXIoMykpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDJdJywgJyQnIFJFVFVSTklORyB0ZXh0IEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0ZWEpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTik7 CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcg Ynl0ZWEgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU1QVFkgT0JK RUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypd JyBSRVRVUk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBqc29uYiBFTVBUWSBPQkpF Q1QgT04gRVJST1IpOworCitTRUxFQ1QKKwl4LCB5LAorCUpTT05fUVVFUlkoCisJCWpzb25i ICdbMSwyLDMsNCw1LG51bGxdJywKKwkJJyRbKl0gPyAoQCA+PSAkeCAmJiBAIDw9ICR5KScK KwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIK KwkJRU1QVFkgQVJSQVkgT04gRU1QVFkKKwkpIGxpc3QKK0ZST00KKwlnZW5lcmF0ZV9zZXJp ZXMoMCwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJpZXMoMCwgNCkgeTsKKworLS0gRXh0ZW5zaW9u OiByZWNvcmQgdHlwZXMgcmV0dXJuaW5nCitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWMgQVMg KGEgaW50LCB0IHRleHQsIGpzIGpzb24sIGpiIGpzb25iLCBqc2EganNvbltdKTsKK0NSRUFU RSBUWVBFIHNxbGpzb25iX3JlY2EgQVMgKHJlY2Egc3FsanNvbmJfcmVjW10pOworCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIs ICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEi OiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyk7CitTRUxFQ1QgKiBGUk9N IHVubmVzdCgoSlNPTl9RVUVSWShqc29uYiAneyJqc2EiOiAgW3siYSI6IDEsICJiIjogWyJm b28iXX0sIHsiYSI6IDIsICJjIjoge319LCAxMjNdfScsICckJyBSRVRVUk5JTkcgc3FsanNv bmJfcmVjKSkuanNhKTsKK1NFTEVDVCAqIEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpzb25i ICd7InJlY2EiOiBbeyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsiYSI6IDIsICJqYiI6 IFt7fSwgdHJ1ZV19XX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY2EpKS5yZWNhKTsK KworLS0gRXh0ZW5zaW9uOiBhcnJheSB0eXBlcyByZXR1cm5pbmcKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyLG51bGwsIjMiXScsICckWypdJyBSRVRVUk5JTkcgaW50W10gV0lU SCBXUkFQUEVSKTsKK1NFTEVDVCAqIEZST00gdW5uZXN0KEpTT05fUVVFUlkoanNvbmIgJ1t7 ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9LCB0cnVlXX1d JywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9yZWNbXSkpOworCistLSBFeHRlbnNpb246IGRv bWFpbiB0eXBlcyByZXR1cm5pbmcKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAx fScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ3siYSI6IDF9JywgJyQuYicgUkVUVVJOSU5HIHNxbGpzb25iX2lu dF9ub3RfbnVsbCk7CisKKy0tIFRlc3QgdGltZXN0YW1wdHogcGFzc2luZyBhbmQgb3V0cHV0 CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0 YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDIt MjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbik7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDIt MjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbmIpOworCistLSBUZXN0IGNv bnN0cmFpbnRzCisKK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzICgKKwlq cyB0ZXh0LAorCWkgaW50LAorCXgganNvbmIgREVGQVVMVCBKU09OX1FVRVJZKGpzb25iICdb MSwyXScsICckWypdJyBXSVRIIFdSQVBQRVIpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2Nv bnN0cmFpbnQxCisJCUNIRUNLIChqcyBJUyBKU09OKQorCUNPTlNUUkFJTlQgdGVzdF9qc29u Yl9jb25zdHJhaW50MgorCQlDSEVDSyAoSlNPTl9FWElTVFMoanM6Ompzb25iLCAnJC5hJyBQ QVNTSU5HIGkgKyA1IEFTIGludCwgaTo6dGV4dCBBUyB0eHQsIGFycmF5WzEsMiwzXSBhcyBh cnIpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MworCQlDSEVDSyAoSlNP Tl9WQUxVRShqczo6anNvbmIsICckLmEnIFJFVFVSTklORyBpbnQgREVGQVVMVCAoJzEyJyB8 fCBpKTo6aW50IE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpCisJQ09OU1RSQUlOVCB0 ZXN0X2pzb25iX2NvbnN0cmFpbnQ0CisJCUNIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwg JyQuYScgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikg PCBqc29uYiAnWzEwXScpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ1CisJ CUNIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGNoYXIoNSkg T01JVCBRVU9URVMgRU1QVFkgQVJSQVkgT04gRU1QVFkpID4gICdhJyBDT0xMQVRFICJDIikK KwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDYKKwkJQ0hFQ0sgKEpTT05fRVhJ U1RTKGpzOjpqc29uYiwgJ3N0cmljdCAkLmEnIFJFVFVSTklORyBpbnQgVFJVRSBPTiBFUlJP UikgPCAyKQorKTsKKworXGQgdGVzdF9qc29uYl9jb25zdHJhaW50cworCitTRUxFQ1QgY2hl Y2tfY2xhdXNlCitGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jaGVja19jb25zdHJhaW50cwor V0hFUkUgY29uc3RyYWludF9uYW1lIExJS0UgJ3Rlc3RfanNvbmJfY29uc3RyYWludCUnOwor CitTRUxFQ1QgcGdfZ2V0X2V4cHIoYWRiaW4sIGFkcmVsaWQpIEZST00gcGdfYXR0cmRlZiBX SEVSRSBhZHJlbGlkID0gJ3Rlc3RfanNvbmJfY29uc3RyYWludHMnOjpyZWdjbGFzczsKKwor SU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCcnLCAxKTsKK0lO U0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnMScsIDEpOworSU5T RVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCdbXScpOworSU5TRVJU IElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImIiOiAxfScsIDEpOwor SU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImEiOiAxfScs IDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImEi OiA3fScsIDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMg KCd7ImEiOiAxMH0nLCAxKTsKKworRFJPUCBUQUJMRSB0ZXN0X2pzb25iX2NvbnN0cmFpbnRz OworCistLSBUZXN0IG11dGFiaWxpbHkgb2QgcXVlcnkgZnVuY3Rpb25zCitDUkVBVEUgVEFC TEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5KGpzIGpzb25iKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckJykpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYVswXScp KTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlko anMsICckLmRhdGV0aW1lKCknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAgPCAkLmRhdGV0aW1lKCkpJykpOwor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywg JyQuYSA/IChALmRhdGV0aW1lKCkgPCAkLmRhdGV0aW1lKCkpJykpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRh dGV0aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0 ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu YSA/IChALmRhdGV0aW1lKCJISDpNSSIpIDwgJC5kYXRldGltZSgiWVktTU0tREQgSEg6TUki KSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FV RVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJC5kYXRldGltZSgi WVktTU0tREQgSEg6TUkiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgiSEg6TUkgVFpIIikgPCAkeCcg UEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3Rf anNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIkhIOk1JIFRa SCIpIDwgJHknIFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRF WCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1l KCkgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUo KSA8ICR4JyBQQVNTSU5HICcxMjM0Jzo6aW50IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPyAo QCA9PSAkeCknIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgi WVktTU0tREQiKSA/IChAID09ICR4KScgUEFTU0lORyAnMjAyMC0wNy0xNCc6OmRhdGUgQVMg eCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVS WShqcywgJyRbMSwgJC5hID8gKEAuZGF0ZXRpbWUoKSA9PSAkeCldJyBQQVNTSU5HICcxMjoz NCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0 eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgMCB0byAkLmEgPyAoQC5kYXRldGltZSgpID09ICR4 KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVz dF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRl dGltZSgiSEg6TUkiKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOwor RFJPUCBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29w cl9zYW5pdHkuc3FsCmluZGV4IDJiMjkyODUxZTMuLjYzZmUxMTRmZWQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wcl9zYW5pdHkuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL29wcl9zYW5pdHkuc3FsCkBAIC04NTQsOCArODU0LDEwIEBAIFdIRVJFIGEu YWdnZm5vaWQgPSBwLm9pZCBBTkQKICAgICAgICAgIE5PVCBiaW5hcnlfY29lcmNpYmxlKHAu cHJvYXJndHlwZXNbMV0sIHB0ci5wcm9hcmd0eXBlc1syXSkpCiAgICAgIE9SIChwLnByb25h cmdzID4gMiBBTkQKICAgICAgICAgIE5PVCBiaW5hcnlfY29lcmNpYmxlKHAucHJvYXJndHlw ZXNbMl0sIHB0ci5wcm9hcmd0eXBlc1szXSkpCi0gICAgIC0tIHdlIGNvdWxkIGNhcnJ5IHRo ZSBjaGVjayBmdXJ0aGVyLCBidXQgMyBhcmdzIGlzIGVub3VnaCBmb3Igbm93Ci0gICAgIE9S IChwLnByb25hcmdzID4gMykKKyAgICAgT1IgKHAucHJvbmFyZ3MgPiAzIEFORAorICAgICAg ICAgTk9UIGJpbmFyeV9jb2VyY2libGUocC5wcm9hcmd0eXBlc1szXSwgcHRyLnByb2FyZ3R5 cGVzWzRdKSkKKyAgICAgLS0gd2UgY291bGQgY2FycnkgdGhlIGNoZWNrIGZ1cnRoZXIsIGJ1 dCA0IGFyZ3MgaXMgZW5vdWdoIGZvciBub3cKKyAgICAgT1IgKHAucHJvbmFyZ3MgPiA0KQog ICAgICk7CiAKIC0tIENyb3NzLWNoZWNrIGZpbmFsZm4gKGlmIHByZXNlbnQpIGFnYWluc3Qg aXRzIGVudHJ5IGluIHBnX3Byb2MuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zcWxqc29uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb24uc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUxZmM2NTliNTgKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uLnNxbApAQCAtMCwwICsx LDQ0NSBAQAorLS0gSlNPTigpCitTRUxFQ1QgSlNPTigpOworU0VMRUNUIEpTT04oTlVMTCk7 CitTRUxFQ1QgSlNPTigneyAiYSIgOiAxIH0gJyk7CitTRUxFQ1QgSlNPTigneyAiYSIgOiAx IH0gJyBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTigneyAiYSIgOiAxIH0gJyBGT1JNQVQg SlNPTiBFTkNPRElORyBVVEY4KTsKK1NFTEVDVCBKU09OKCd7ICJhIiA6IDEgfSAnOjpieXRl YSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK1NFTEVDVCBwZ190eXBlb2YoSlNPTign eyAiYSIgOiAxIH0gJykpOworCitTRUxFQ1QgSlNPTignICAgMSAgICc6Ompzb24pOworU0VM RUNUIEpTT04oJyAgIDEgICAnOjpqc29uYik7CitTRUxFQ1QgSlNPTignICAgMSAgICc6Ompz b24gV0lUSCBVTklRVUUgS0VZUyk7CitTRUxFQ1QgSlNPTigxMjMpOworCitTRUxFQ1QgSlNP TigneyJhIjogMSwgImEiOiAyfScpOworU0VMRUNUIEpTT04oJ3siYSI6IDEsICJhIjogMn0n IFdJVEggVU5JUVVFIEtFWVMpOworU0VMRUNUIEpTT04oJ3siYSI6IDEsICJhIjogMn0nIFdJ VEhPVVQgVU5JUVVFIEtFWVMpOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCBKU09OKCcxMjMnKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU IEpTT04oJzEyMycgRk9STUFUIEpTT04pOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBTRUxFQ1QgSlNPTignMTIzJzo6Ynl0ZWEgRk9STUFUIEpTT04pOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJzo6Ynl0ZWEgRk9STUFUIEpTT04g RU5DT0RJTkcgVVRGOCk7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBK U09OKCcxMjMnIFdJVEggVU5JUVVFIEtFWVMpOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgSlNPTignMTIzJyBXSVRIT1VUIFVOSVFVRSBLRVlTKTsKKworU0VMRUNU IEpTT04oJzEyMycgUkVUVVJOSU5HIHRleHQpOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCBKU09OKCcxMjMnKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIEpTT04oJzEyMycgUkVUVVJOSU5HIGpzb24pOworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTignMTIzJyBSRVRVUk5JTkcganNvbmIpOworU0VM RUNUIHBnX3R5cGVvZihKU09OKCcxMjMnKSk7CitTRUxFQ1QgcGdfdHlwZW9mKEpTT04oJzEy MycgUkVUVVJOSU5HIGpzb24pKTsKK1NFTEVDVCBwZ190eXBlb2YoSlNPTignMTIzJyBSRVRV Uk5JTkcganNvbmIpKTsKKworLS0gSlNPTl9TQ0FMQVIoKQorU0VMRUNUIEpTT05fU0NBTEFS KCk7CitTRUxFQ1QgSlNPTl9TQ0FMQVIoTlVMTCk7CitTRUxFQ1QgSlNPTl9TQ0FMQVIoTlVM TDo6aW50KTsKK1NFTEVDVCBKU09OX1NDQUxBUigxMjMpOworU0VMRUNUIEpTT05fU0NBTEFS KDEyMy40NSk7CitTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzLjQ1OjpudW1lcmljKTsKK1NFTEVD VCBKU09OX1NDQUxBUih0cnVlKTsKK1NFTEVDVCBKU09OX1NDQUxBUihmYWxzZSk7CitTRUxF Q1QgSlNPTl9TQ0FMQVIoJyAxMjMuNDUnKTsKK1NFTEVDVCBKU09OX1NDQUxBUignMjAyMC0w Ni0wNyc6OmRhdGUpOworU0VMRUNUIEpTT05fU0NBTEFSKCcyMDIwLTA2LTA3IDAxOjAyOjAz Jzo6dGltZXN0YW1wKTsKK1NFTEVDVCBKU09OX1NDQUxBUigne30nOjpqc29uKTsKK1NFTEVD VCBKU09OX1NDQUxBUigne30nOjpqc29uYik7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIEpTT05fU0NBTEFSKDEyMyk7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCBKU09OX1NDQUxBUignMTIzJyk7CitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCBKU09OX1NDQUxBUigxMjMgUkVUVVJOSU5HIGpzb24pOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgSlNPTl9TQ0FMQVIoMTIzIFJFVFVS TklORyBqc29uYik7CisKKy0tIEpTT05fU0VSSUFMSVpFKCkKK1NFTEVDVCBKU09OX1NFUklB TElaRSgpOworU0VMRUNUIEpTT05fU0VSSUFMSVpFKE5VTEwpOworU0VMRUNUIEpTT05fU0VS SUFMSVpFKEpTT04oJ3sgImEiIDogMSB9ICcpKTsKK1NFTEVDVCBKU09OX1NFUklBTElaRSgn eyAiYSIgOiAxIH0gJyk7CitTRUxFQ1QgSlNPTl9TRVJJQUxJWkUoJzEnKTsKK1NFTEVDVCBK U09OX1NFUklBTElaRSgnMScgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fU0VSSUFMSVpF KCd7ICJhIiA6IDEgfSAnIFJFVFVSTklORyBieXRlYSk7CitTRUxFQ1QgcGdfdHlwZW9mKEpT T05fU0VSSUFMSVpFKE5VTEwpKTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgSlNPTl9TRVJJQUxJWkUoJ3t9Jyk7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCBKU09OX1NFUklBTElaRSgne30nIFJFVFVSTklORyBieXRlYSk7CisKKy0t IEpTT05fT0JKRUNUKCkKK1NFTEVDVCBKU09OX09CSkVDVCgpOworU0VMRUNUIEpTT05fT0JK RUNUKFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcganNv biBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGpzb25iKTsK K1NFTEVDVCBKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIgRk9STUFUIEpTT04pOworU0VM RUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX09CSkVDVChS RVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJO SU5HIHRleHQgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7CitTRUxFQ1QgSlNPTl9PQkpF Q1QoUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04gRU5DT0RJTkcgSU5WQUxJRF9FTkNPRElO Ryk7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGJ5dGVhKTsKK1NFTEVDVCBKU09O X09CSkVDVChSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fT0JK RUNUKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK1NFTEVD VCBKU09OX09CSkVDVChSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRG MTYpOworU0VMRUNUIEpTT05fT0JKRUNUKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBF TkNPRElORyBVVEYzMik7CisKK1NFTEVDVCBKU09OX09CSkVDVCgnZm9vJzogTlVMTDo6aW50 IEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnZm9vJzogTlVMTDo6aW50IEZP Uk1BVCBKU09OIEVOQ09ESU5HIFVURjgpOworU0VMRUNUIEpTT05fT0JKRUNUKCdmb28nOiBO VUxMOjpqc29uIEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnZm9vJzogTlVM TDo6anNvbiBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK1NFTEVDVCBKU09OX09CSkVD VCgnZm9vJzogTlVMTDo6anNvbmIgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fT0JKRUNU KCdmb28nOiBOVUxMOjpqc29uYiBGT1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKKworU0VM RUNUIEpTT05fT0JKRUNUKE5VTEw6IDEpOworU0VMRUNUIEpTT05fT0JKRUNUKCdhJzogMiAr IDMpOworU0VMRUNUIEpTT05fT0JKRUNUKCdhJyBWQUxVRSAyICsgMyk7CistLVNFTEVDVCBK U09OX09CSkVDVChLRVkgJ2EnIFZBTFVFIDIgKyAzKTsKK1NFTEVDVCBKU09OX09CSkVDVCgn YScgfHwgMjogMSk7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoKCdhJyB8fCAyKSBWQUxVRSAxKTsK Ky0tU0VMRUNUIEpTT05fT0JKRUNUKCdhJyB8fCAyIFZBTFVFIDEpOworLS1TRUxFQ1QgSlNP Tl9PQkpFQ1QoS0VZICdhJyB8fCAyIFZBTFVFIDEpOworU0VMRUNUIEpTT05fT0JKRUNUKCdh JzogMjo6dGV4dCk7CitTRUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnIFZBTFVFIDI6OnRleHQpOwor LS1TRUxFQ1QgSlNPTl9PQkpFQ1QoS0VZICdhJyBWQUxVRSAyOjp0ZXh0KTsKK1NFTEVDVCBK U09OX09CSkVDVCgxOjp0ZXh0OiAyKTsKK1NFTEVDVCBKU09OX09CSkVDVCgoMTo6dGV4dCkg VkFMVUUgMik7CistLVNFTEVDVCBKU09OX09CSkVDVCgxOjp0ZXh0IFZBTFVFIDIpOworLS1T RUxFQ1QgSlNPTl9PQkpFQ1QoS0VZIDE6OnRleHQgVkFMVUUgMik7CitTRUxFQ1QgSlNPTl9P QkpFQ1QoanNvbiAnWzFdJzogMTIzKTsKK1NFTEVDVCBKU09OX09CSkVDVChBUlJBWVsxLDIs M106ICdhYWEnKTsKKworU0VMRUNUIEpTT05fT0JKRUNUKAorCSdhJzogJzEyMycsCisJMS4y MzogMTIzLAorCSdjJzoganNvbiAnWyAxLHRydWUseyB9IF0nLAorCSdkJzoganNvbmIgJ3sg IngiIDogMTIzLjQ1IH0nCispOworCitTRUxFQ1QgSlNPTl9PQkpFQ1QoCisJJ2EnOiAnMTIz JywKKwkxLjIzOiAxMjMsCisJJ2MnOiBqc29uICdbIDEsdHJ1ZSx7IH0gXScsCisJJ2QnOiBq c29uYiAneyAieCIgOiAxMjMuNDUgfScKKwlSRVRVUk5JTkcganNvbmIKKyk7CisKKy8qCitT RUxFQ1QgSlNPTl9PQkpFQ1QoCisJJ2EnOiAnMTIzJywKKwlLRVkgMS4yMyBWQUxVRSAxMjMs CisJJ2MnIFZBTFVFIGpzb24gJ1sxLCB0cnVlLCB7fV0nCispOworKi8KKworU0VMRUNUIEpT T05fT0JKRUNUKCdhJzogJzEyMycsICdiJzogSlNPTl9PQkpFQ1QoJ2EnOiAxMTEsICdiJzog J2FhYScpKTsKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6ICcxMjMnLCAnYic6IEpTT05fT0JK RUNUKCdhJzogMTExLCAnYic6ICdhYWEnIFJFVFVSTklORyBqc29uYikpOworCitTRUxFQ1Qg SlNPTl9PQkpFQ1QoJ2EnOiBKU09OX09CSkVDVCgnYic6IDEgUkVUVVJOSU5HIHRleHQpKTsK K1NFTEVDVCBKU09OX09CSkVDVCgnYSc6IEpTT05fT0JKRUNUKCdiJzogMSBSRVRVUk5JTkcg dGV4dCkgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fT0JKRUNUKCdhJzogSlNPTl9PQkpF Q1QoJ2InOiAxIFJFVFVSTklORyBieXRlYSkpOworU0VMRUNUIEpTT05fT0JKRUNUKCdhJzog SlNPTl9PQkpFQ1QoJ2InOiAxIFJFVFVSTklORyBieXRlYSkgRk9STUFUIEpTT04pOworCitT RUxFQ1QgSlNPTl9PQkpFQ1QoJ2EnOiAnMScsICdiJzogTlVMTCwgJ2MnOiAyKTsKK1NFTEVD VCBKU09OX09CSkVDVCgnYSc6ICcxJywgJ2InOiBOVUxMLCAnYyc6IDIgTlVMTCBPTiBOVUxM KTsKK1NFTEVDVCBKU09OX09CSkVDVCgnYSc6ICcxJywgJ2InOiBOVUxMLCAnYyc6IDIgQUJT RU5UIE9OIE5VTEwpOworCitTRUxFQ1QgSlNPTl9PQkpFQ1QoMTogMSwgJzEnOiBOVUxMIFdJ VEggVU5JUVVFKTsKK1NFTEVDVCBKU09OX09CSkVDVCgxOiAxLCAnMSc6IE5VTEwgQUJTRU5U IE9OIE5VTEwgV0lUSCBVTklRVUUpOworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcxJzog TlVMTCBOVUxMIE9OIE5VTEwgV0lUSCBVTklRVUUgUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVD VCBKU09OX09CSkVDVCgxOiAxLCAnMSc6IE5VTEwgQUJTRU5UIE9OIE5VTEwgV0lUSCBVTklR VUUgUkVUVVJOSU5HIGpzb25iKTsKKworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzog TlVMTCwgJzEnOiAxIE5VTEwgT04gTlVMTCBXSVRIIFVOSVFVRSk7CitTRUxFQ1QgSlNPTl9P QkpFQ1QoMTogMSwgJzInOiBOVUxMLCAnMSc6IDEgQUJTRU5UIE9OIE5VTEwgV0lUSCBVTklR VUUpOworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVMTCwgJzEnOiAxIEFCU0VO VCBPTiBOVUxMIFdJVEhPVVQgVU5JUVVFKTsKK1NFTEVDVCBKU09OX09CSkVDVCgxOiAxLCAn Mic6IE5VTEwsICcxJzogMSBBQlNFTlQgT04gTlVMTCBXSVRIIFVOSVFVRSBSRVRVUk5JTkcg anNvbmIpOworU0VMRUNUIEpTT05fT0JKRUNUKDE6IDEsICcyJzogTlVMTCwgJzEnOiAxIEFC U0VOVCBPTiBOVUxMIFdJVEhPVVQgVU5JUVVFIFJFVFVSTklORyBqc29uYik7CitTRUxFQ1Qg SlNPTl9PQkpFQ1QoMTogMSwgJzInOiBOVUxMLCAnMyc6IDEsIDQ6IE5VTEwsICc1JzogJ2En IEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFIFJFVFVSTklORyBqc29uYik7CisKKworLS0g SlNPTl9BUlJBWSgpCitTRUxFQ1QgSlNPTl9BUlJBWSgpOworU0VMRUNUIEpTT05fQVJSQVko UkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGpzb24gRk9S TUFUIEpTT04pOworU0VMRUNUIEpTT05fQVJSQVkoUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVD VCBKU09OX0FSUkFZKFJFVFVSTklORyBqc29uYiBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNP Tl9BUlJBWShSRVRVUk5JTkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcg dGV4dCBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcgdGV4dCBG T1JNQVQgSlNPTiBFTkNPRElORyBVVEY4KTsKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVSTklO RyB0ZXh0IEZPUk1BVCBKU09OIEVOQ09ESU5HIElOVkFMSURfRU5DT0RJTkcpOworU0VMRUNU IEpTT05fQVJSQVkoUkVUVVJOSU5HIGJ5dGVhKTsKK1NFTEVDVCBKU09OX0FSUkFZKFJFVFVS TklORyBieXRlYSBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9BUlJBWShSRVRVUk5JTkcg Ynl0ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGOCk7CitTRUxFQ1QgSlNPTl9BUlJBWShS RVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU5DT0RJTkcgVVRGMTYpOworU0VMRUNUIEpT T05fQVJSQVkoUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVOQ09ESU5HIFVURjMyKTsK KworU0VMRUNUIEpTT05fQVJSQVkoJ2FhYScsIDExMSwgdHJ1ZSwgYXJyYXlbMSwyLDNdLCBO VUxMLCBqc29uICd7ImEiOiBbMV19JywganNvbmIgJ1siYSIsM10nKTsKKworU0VMRUNUIEpT T05fQVJSQVkoJ2EnLCAgTlVMTCwgJ2InIE5VTEwgICBPTiBOVUxMKTsKK1NFTEVDVCBKU09O X0FSUkFZKCdhJywgIE5VTEwsICdiJyBBQlNFTlQgT04gTlVMTCk7CitTRUxFQ1QgSlNPTl9B UlJBWShOVUxMLCBOVUxMLCAnYicgQUJTRU5UIE9OIE5VTEwpOworU0VMRUNUIEpTT05fQVJS QVkoJ2EnLCAgTlVMTCwgJ2InIE5VTEwgICBPTiBOVUxMIFJFVFVSTklORyBqc29uYik7CitT RUxFQ1QgSlNPTl9BUlJBWSgnYScsICBOVUxMLCAnYicgQUJTRU5UIE9OIE5VTEwgUkVUVVJO SU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX0FSUkFZKE5VTEwsIE5VTEwsICdiJyBBQlNFTlQg T04gTlVMTCBSRVRVUk5JTkcganNvbmIpOworCitTRUxFQ1QgSlNPTl9BUlJBWShKU09OX0FS UkFZKCd7ICJhIiA6IDEyMyB9JyBSRVRVUk5JTkcgdGV4dCkpOworU0VMRUNUIEpTT05fQVJS QVkoSlNPTl9BUlJBWSgneyAiYSIgOiAxMjMgfScgRk9STUFUIEpTT04gUkVUVVJOSU5HIHRl eHQpKTsKK1NFTEVDVCBKU09OX0FSUkFZKEpTT05fQVJSQVkoJ3sgImEiIDogMTIzIH0nIEZP Uk1BVCBKU09OIFJFVFVSTklORyB0ZXh0KSBGT1JNQVQgSlNPTik7CisKK1NFTEVDVCBKU09O X0FSUkFZKFNFTEVDVCBpIEZST00gKFZBTFVFUyAoMSksICgyKSwgKE5VTEwpLCAoNCkpIGZv byhpKSk7CitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6 OmludFtdKSwgKCd7MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVMTCkp IGZvbyhpKSk7CitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5V TEw6OmludFtdKSwgKCd7MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVM TCkpIGZvbyhpKSBSRVRVUk5JTkcganNvbmIpOworLS1TRUxFQ1QgSlNPTl9BUlJBWShTRUxF Q1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6OmludFtdKSwgKCd7MSwyfScpLCAoTlVMTCksIChO VUxMKSwgKCd7Myw0fScpLCAoTlVMTCkpIGZvbyhpKSBOVUxMIE9OIE5VTEwpOworLS1TRUxF Q1QgSlNPTl9BUlJBWShTRUxFQ1QgaSBGUk9NIChWQUxVRVMgKE5VTEw6OmludFtdKSwgKCd7 MSwyfScpLCAoTlVMTCksIChOVUxMKSwgKCd7Myw0fScpLCAoTlVMTCkpIGZvbyhpKSBOVUxM IE9OIE5VTEwgUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBp IEZST00gKFZBTFVFUyAoMyksICgxKSwgKE5VTEwpLCAoMikpIGZvbyhpKSBPUkRFUiBCWSBp KTsKKy0tIFNob3VsZCBmYWlsCitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgRlJPTSAoVkFM VUVTICgxKSkgZm9vKGkpKTsKK1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpLCBpIEZST00g KFZBTFVFUyAoMSkpIGZvbyhpKSk7CitTRUxFQ1QgSlNPTl9BUlJBWShTRUxFQ1QgKiBGUk9N IChWQUxVRVMgKDEsIDIpKSBmb28oaSwgaikpOworCistLSBKU09OX0FSUkFZQUdHKCkKK1NF TEVDVAlKU09OX0FSUkFZQUdHKGkpIElTIE5VTEwsCisJCUpTT05fQVJSQVlBR0coaSBSRVRV Uk5JTkcganNvbmIpIElTIE5VTEwKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDApIGk7CisK K1NFTEVDVAlKU09OX0FSUkFZQUdHKGkpLAorCQlKU09OX0FSUkFZQUdHKGkgUkVUVVJOSU5H IGpzb25iKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgaTsKKworU0VMRUNUIEpTT05f QVJSQVlBR0coaSBPUkRFUiBCWSBpIERFU0MpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 KSBpOworCitTRUxFQ1QgSlNPTl9BUlJBWUFHRyhpOjp0ZXh0Ojpqc29uKQorRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNSkgaTsKKworU0VMRUNUIEpTT05fQVJSQVlBR0coSlNPTl9BUlJB WShpLCBpICsgMSBSRVRVUk5JTkcgdGV4dCkgRk9STUFUIEpTT04pCitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1KSBpOworCitTRUxFQ1QJSlNPTl9BUlJBWUFHRyhOVUxMKSwKKwkJSlNP Tl9BUlJBWUFHRyhOVUxMIFJFVFVSTklORyBqc29uYikKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUpOworCitTRUxFQ1QJSlNPTl9BUlJBWUFHRyhOVUxMIE5VTEwgT04gTlVMTCksCisJ CUpTT05fQVJSQVlBR0coTlVMTCBOVUxMIE9OIE5VTEwgUkVUVVJOSU5HIGpzb25iKQorRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSk7CisKK1NFTEVDVAorCUpTT05fQVJSQVlBR0coYmFy KSwKKwlKU09OX0FSUkFZQUdHKGJhciBSRVRVUk5JTkcganNvbmIpLAorCUpTT05fQVJSQVlB R0coYmFyIEFCU0VOVCBPTiBOVUxMKSwKKwlKU09OX0FSUkFZQUdHKGJhciBBQlNFTlQgT04g TlVMTCBSRVRVUk5JTkcganNvbmIpLAorCUpTT05fQVJSQVlBR0coYmFyIE5VTEwgT04gTlVM TCksCisJSlNPTl9BUlJBWUFHRyhiYXIgTlVMTCBPTiBOVUxMIFJFVFVSTklORyBqc29uYiks CisJSlNPTl9BUlJBWUFHRyhmb28pLAorCUpTT05fQVJSQVlBR0coZm9vIFJFVFVSTklORyBq c29uYiksCisJSlNPTl9BUlJBWUFHRyhmb28gT1JERVIgQlkgYmFyKSBGSUxURVIgKFdIRVJF IGJhciA+IDIpLAorCUpTT05fQVJSQVlBR0coZm9vIE9SREVSIEJZIGJhciBSRVRVUk5JTkcg anNvbmIpIEZJTFRFUiAoV0hFUkUgYmFyID4gMikKK0ZST00KKwkoVkFMVUVTIChOVUxMKSwg KDMpLCAoMSksIChOVUxMKSwgKE5VTEwpLCAoNSksICgyKSwgKDQpLCAoTlVMTCkpIGZvbyhi YXIpOworCitTRUxFQ1QKKwliYXIsIEpTT05fQVJSQVlBR0coYmFyKSBGSUxURVIgKFdIRVJF IGJhciA+IDIpIE9WRVIgKFBBUlRJVElPTiBCWSBmb28uYmFyICUgMikKK0ZST00KKwkoVkFM VUVTIChOVUxMKSwgKDMpLCAoMSksIChOVUxMKSwgKE5VTEwpLCAoNSksICgyKSwgKDQpLCAo TlVMTCksICg1KSwgKDQpKSBmb28oYmFyKTsKKworLS0gSlNPTl9PQkpFQ1RBR0coKQorU0VM RUNUCUpTT05fT0JKRUNUQUdHKCdrZXknOiAxKSBJUyBOVUxMLAorCQlKU09OX09CSkVDVEFH Rygna2V5JzogMSBSRVRVUk5JTkcganNvbmIpIElTIE5VTEwKK1dIRVJFIEZBTFNFOworCitT RUxFQ1QgSlNPTl9PQkpFQ1RBR0coTlVMTDogMSk7CisKK1NFTEVDVCBKU09OX09CSkVDVEFH RyhOVUxMOiAxIFJFVFVSTklORyBqc29uYik7CisKK1NFTEVDVAorCUpTT05fT0JKRUNUQUdH KGk6IGkpLAorLS0JSlNPTl9PQkpFQ1RBR0coaSBWQUxVRSBpKSwKKy0tCUpTT05fT0JKRUNU QUdHKEtFWSBpIFZBTFVFIGkpLAorCUpTT05fT0JKRUNUQUdHKGk6IGkgUkVUVVJOSU5HIGpz b25iKQorRlJPTQorCWdlbmVyYXRlX3NlcmllcygxLCA1KSBpOworCitTRUxFQ1QKKwlKU09O X09CSkVDVEFHRyhrOiB2KSwKKwlKU09OX09CSkVDVEFHRyhrOiB2IE5VTEwgT04gTlVMTCks CisJSlNPTl9PQkpFQ1RBR0coazogdiBBQlNFTlQgT04gTlVMTCksCisJSlNPTl9PQkpFQ1RB R0coazogdiBSRVRVUk5JTkcganNvbmIpLAorCUpTT05fT0JKRUNUQUdHKGs6IHYgTlVMTCBP TiBOVUxMIFJFVFVSTklORyBqc29uYiksCisJSlNPTl9PQkpFQ1RBR0coazogdiBBQlNFTlQg T04gTlVMTCBSRVRVUk5JTkcganNvbmIpCitGUk9NCisJKFZBTFVFUyAoMSwgMSksICgxLCBO VUxMKSwgKDIsIE5VTEwpLCAoMywgMykpIGZvbyhrLCB2KTsKKworU0VMRUNUIEpTT05fT0JK RUNUQUdHKGs6IHYgV0lUSCBVTklRVUUgS0VZUykKK0ZST00gKFZBTFVFUyAoMSwgMSksICgx LCBOVUxMKSwgKDIsIDIpKSBmb28oaywgdik7CisKK1NFTEVDVCBKU09OX09CSkVDVEFHRyhr OiB2IEFCU0VOVCBPTiBOVUxMIFdJVEggVU5JUVVFIEtFWVMpCitGUk9NIChWQUxVRVMgKDEs IDEpLCAoMSwgTlVMTCksICgyLCAyKSkgZm9vKGssIHYpOworCitTRUxFQ1QgSlNPTl9PQkpF Q1RBR0coazogdiBBQlNFTlQgT04gTlVMTCBXSVRIIFVOSVFVRSBLRVlTKQorRlJPTSAoVkFM VUVTICgxLCAxKSwgKDAsIE5VTEwpLCAoMywgTlVMTCksICgyLCAyKSwgKDQsIE5VTEwpKSBm b28oaywgdik7CisKK1NFTEVDVCBKU09OX09CSkVDVEFHRyhrOiB2IFdJVEggVU5JUVVFIEtF WVMgUkVUVVJOSU5HIGpzb25iKQorRlJPTSAoVkFMVUVTICgxLCAxKSwgKDEsIE5VTEwpLCAo MiwgMikpIGZvbyhrLCB2KTsKKworU0VMRUNUIEpTT05fT0JKRUNUQUdHKGs6IHYgQUJTRU5U IE9OIE5VTEwgV0lUSCBVTklRVUUgS0VZUyBSRVRVUk5JTkcganNvbmIpCitGUk9NIChWQUxV RVMgKDEsIDEpLCAoMSwgTlVMTCksICgyLCAyKSkgZm9vKGssIHYpOworCistLSBUZXN0IEpT T05fT0JKRUNUIGRlcGFyc2luZworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUIEpTT05fT0JKRUNUKCdmb28nIDogJzEnIEZPUk1BVCBKU09OLCAnYmFyJyA6ICdiYXon IFJFVFVSTklORyBqc29uKTsKKworQ1JFQVRFIFZJRVcganNvbl9vYmplY3RfdmlldyBBUwor U0VMRUNUIEpTT05fT0JKRUNUKCdmb28nIDogJzEnIEZPUk1BVCBKU09OLCAnYmFyJyA6ICdi YXonIFJFVFVSTklORyBqc29uKTsKKworXHN2IGpzb25fb2JqZWN0X3ZpZXcKKworRFJPUCBW SUVXIGpzb25fb2JqZWN0X3ZpZXc7CisKKy0tIFRlc3QgSlNPTl9BUlJBWSBkZXBhcnNpbmcK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBKU09OX0FSUkFZKCcxJyBG T1JNQVQgSlNPTiwgMiBSRVRVUk5JTkcganNvbik7CisKK0NSRUFURSBWSUVXIGpzb25fYXJy YXlfdmlldyBBUworU0VMRUNUIEpTT05fQVJSQVkoJzEnIEZPUk1BVCBKU09OLCAyIFJFVFVS TklORyBqc29uKTsKKworXHN2IGpzb25fYXJyYXlfdmlldworCitEUk9QIFZJRVcganNvbl9h cnJheV92aWV3OworCistLSBUZXN0IEpTT05fT0JKRUNUQUdHIGRlcGFyc2luZworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIEpTT05fT0JKRUNUQUdHKGk6ICgnMTEx JyB8fCBpKTo6Ynl0ZWEgRk9STUFUIEpTT04gV0lUSCBVTklRVUUgUkVUVVJOSU5HIHRleHQp IEZJTFRFUiAoV0hFUkUgaSA+IDMpCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGk7CisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBKU09OX09CSkVDVEFHRyhp OiAoJzExMScgfHwgaSk6OmJ5dGVhIEZPUk1BVCBKU09OIFdJVEggVU5JUVVFIFJFVFVSTklO RyB0ZXh0KSBPVkVSIChQQVJUSVRJT04gQlkgaSAlIDIpCitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDUpIGk7CisKK0NSRUFURSBWSUVXIGpzb25fb2JqZWN0YWdnX3ZpZXcgQVMKK1NFTEVD VCBKU09OX09CSkVDVEFHRyhpOiAoJzExMScgfHwgaSk6OmJ5dGVhIEZPUk1BVCBKU09OIFdJ VEggVU5JUVVFIFJFVFVSTklORyB0ZXh0KSBGSUxURVIgKFdIRVJFIGkgPiAzKQorRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSw1KSBpOworCitcc3YganNvbl9vYmplY3RhZ2dfdmlldworCitE Uk9QIFZJRVcganNvbl9vYmplY3RhZ2dfdmlldzsKKworLS0gVGVzdCBKU09OX0FSUkFZQUdH IGRlcGFyc2luZworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIEpTT05f QVJSQVlBR0coKCcxMTEnIHx8IGkpOjpieXRlYSBGT1JNQVQgSlNPTiBOVUxMIE9OIE5VTEwg UkVUVVJOSU5HIHRleHQpIEZJTFRFUiAoV0hFUkUgaSA+IDMpCitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDUpIGk7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBK U09OX0FSUkFZQUdHKCgnMTExJyB8fCBpKTo6Ynl0ZWEgRk9STUFUIEpTT04gTlVMTCBPTiBO VUxMIFJFVFVSTklORyB0ZXh0KSBPVkVSIChQQVJUSVRJT04gQlkgaSAlIDIpCitGUk9NIGdl bmVyYXRlX3NlcmllcygxLDUpIGk7CisKK0NSRUFURSBWSUVXIGpzb25fYXJyYXlhZ2dfdmll dyBBUworU0VMRUNUIEpTT05fQVJSQVlBR0coKCcxMTEnIHx8IGkpOjpieXRlYSBGT1JNQVQg SlNPTiBOVUxMIE9OIE5VTEwgUkVUVVJOSU5HIHRleHQpIEZJTFRFUiAoV0hFUkUgaSA+IDMp CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIGk7CisKK1xzdiBqc29uX2FycmF5YWdnX3Zp ZXcKKworRFJPUCBWSUVXIGpzb25fYXJyYXlhZ2dfdmlldzsKKworLS0gVGVzdCBKU09OX0FS UkFZKHN1YnF1ZXJ5KSBkZXBhcnNpbmcKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpIEZST00gKFZBTFVFUyAoMSksICgyKSwgKE5V TEwpLCAoNCkpIGZvbyhpKSBSRVRVUk5JTkcganNvbmIpOworCitDUkVBVEUgVklFVyBqc29u X2FycmF5X3N1YnF1ZXJ5X3ZpZXcgQVMKK1NFTEVDVCBKU09OX0FSUkFZKFNFTEVDVCBpIEZS T00gKFZBTFVFUyAoMSksICgyKSwgKE5VTEwpLCAoNCkpIGZvbyhpKSBSRVRVUk5JTkcganNv bmIpOworCitcc3YganNvbl9hcnJheV9zdWJxdWVyeV92aWV3CisKK0RST1AgVklFVyBqc29u X2FycmF5X3N1YnF1ZXJ5X3ZpZXc7CisKKy0tIElTIEpTT04gcHJlZGljYXRlCitTRUxFQ1Qg TlVMTCBJUyBKU09OOworU0VMRUNUIE5VTEwgSVMgTk9UIEpTT047CitTRUxFQ1QgTlVMTDo6 anNvbiBJUyBKU09OOworU0VMRUNUIE5VTEw6Ompzb25iIElTIEpTT047CitTRUxFQ1QgTlVM TDo6dGV4dCBJUyBKU09OOworU0VMRUNUIE5VTEw6OmJ5dGVhIElTIEpTT047CitTRUxFQ1Qg TlVMTDo6aW50IElTIEpTT047CisKK1NFTEVDVCAnJyBJUyBKU09OOworCitTRUxFQ1QgYnl0 ZWEgJ1x4MDAnIElTIEpTT047CisKK0NSRUFURSBUQUJMRSB0ZXN0X2lzX2pzb24gKGpzIHRl eHQpOworCitJTlNFUlQgSU5UTyB0ZXN0X2lzX2pzb24gVkFMVUVTCisgKE5VTEwpLAorICgn JyksCisgKCcxMjMnKSwKKyAoJyJhYWEgIicpLAorICgndHJ1ZScpLAorICgnbnVsbCcpLAor ICgnW10nKSwKKyAoJ1sxLCAiMiIsIHt9XScpLAorICgne30nKSwKKyAoJ3sgImEiOiAxLCAi YiI6IG51bGwgfScpLAorICgneyAiYSI6IDEsICJhIjogbnVsbCB9JyksCisgKCd7ICJhIjog MSwgImIiOiBbeyAiYSI6IDEgfSwgeyAiYSI6IDIgfV0gfScpLAorICgneyAiYSI6IDEsICJi IjogW3sgImEiOiAxLCAiYiI6IDAsICJhIjogMiB9XSB9JyksCisgKCdhYWEnKSwKKyAoJ3th OjF9JyksCisgKCdbImEiLF0nKTsKKworU0VMRUNUCisJanMsCisJanMgSVMgSlNPTiAiSVMg SlNPTiIsCisJanMgSVMgTk9UIEpTT04gIklTIE5PVCBKU09OIiwKKwlqcyBJUyBKU09OIFZB TFVFICJJUyBWQUxVRSIsCisJanMgSVMgSlNPTiBPQkpFQ1QgIklTIE9CSkVDVCIsCisJanMg SVMgSlNPTiBBUlJBWSAiSVMgQVJSQVkiLAorCWpzIElTIEpTT04gU0NBTEFSICJJUyBTQ0FM QVIiLAorCWpzIElTIEpTT04gV0lUSE9VVCBVTklRVUUgS0VZUyAiV0lUSE9VVCBVTklRVUUi LAorCWpzIElTIEpTT04gV0lUSCBVTklRVUUgS0VZUyAiV0lUSCBVTklRVUUiCitGUk9NCisJ dGVzdF9pc19qc29uOworCitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09OICJJUyBKU09OIiwK KwlqcyBJUyBOT1QgSlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklT IFZBTFVFIiwKKwlqcyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09O IEFSUkFZICJJUyBBUlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJ anMgSVMgSlNPTiBXSVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMg SVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNU IGpzOjpqc29uIEZST00gdGVzdF9pc19qc29uIFdIRVJFIGpzIElTIEpTT04pIGZvbyhqcyk7 CisKK1NFTEVDVAorCWpzMCwKKwlqcyBJUyBKU09OICJJUyBKU09OIiwKKwlqcyBJUyBOT1Qg SlNPTiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklTIFZBTFVFIiwKKwlq cyBJUyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09OIEFSUkFZICJJUyBB UlJBWSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJanMgSVMgSlNPTiBX SVRIT1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMgSVMgSlNPTiBXSVRI IFVOSVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNUIGpzLCBqczo6Ynl0 ZWEgRlJPTSB0ZXN0X2lzX2pzb24gV0hFUkUganMgSVMgSlNPTikgZm9vKGpzMCwganMpOwor CitTRUxFQ1QKKwlqcywKKwlqcyBJUyBKU09OICJJUyBKU09OIiwKKwlqcyBJUyBOT1QgSlNP TiAiSVMgTk9UIEpTT04iLAorCWpzIElTIEpTT04gVkFMVUUgIklTIFZBTFVFIiwKKwlqcyBJ UyBKU09OIE9CSkVDVCAiSVMgT0JKRUNUIiwKKwlqcyBJUyBKU09OIEFSUkFZICJJUyBBUlJB WSIsCisJanMgSVMgSlNPTiBTQ0FMQVIgIklTIFNDQUxBUiIsCisJanMgSVMgSlNPTiBXSVRI T1VUIFVOSVFVRSBLRVlTICJXSVRIT1VUIFVOSVFVRSIsCisJanMgSVMgSlNPTiBXSVRIIFVO SVFVRSBLRVlTICJXSVRIIFVOSVFVRSIKK0ZST00KKwkoU0VMRUNUIGpzOjpqc29uYiBGUk9N IHRlc3RfaXNfanNvbiBXSEVSRSBqcyBJUyBKU09OKSBmb28oanMpOworCistLSBUZXN0IElT IEpTT04gZGVwYXJzaW5nCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg JzEnIElTIEpTT04gQVMgImFueSIsICgnMScgfHwgaSkgSVMgSlNPTiBTQ0FMQVIgQVMgInNj YWxhciIsICdbXScgSVMgTk9UIEpTT04gQVJSQVkgQVMgImFycmF5IiwgJ3t9JyBJUyBKU09O IE9CSkVDVCBXSVRIIFVOSVFVRSBBUyAib2JqZWN0IiBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAzKSBpOworCitDUkVBVEUgVklFVyBpc19qc29uX3ZpZXcgQVMKK1NFTEVDVCAnMScgSVMg SlNPTiBBUyAiYW55IiwgKCcxJyB8fCBpKSBJUyBKU09OIFNDQUxBUiBBUyAic2NhbGFyIiwg J1tdJyBJUyBOT1QgSlNPTiBBUlJBWSBBUyAiYXJyYXkiLCAne30nIElTIEpTT04gT0JKRUNU IFdJVEggVU5JUVVFIEFTICJvYmplY3QiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGk7 CisKK1xzdiBpc19qc29uX3ZpZXcKKworRFJPUCBWSUVXIGlzX2pzb25fdmlldzsKLS0gCjIu MjUuMQoK --------------UNwjJjMgF1laO8cZ5D0bETkV Content-Type: text/x-patch; charset=UTF-8; name="0002-JSON_TABLE-v57.patch" Content-Disposition: attachment; filename="0002-JSON_TABLE-v57.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZjRmNTJlYzc1MjUxODI0M2M0YWMyNzkxZmY5M2RkZWM3MGZiMjU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogU2F0LCA1IE1hciAyMDIyIDA5OjAxOjIwIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCAyLzRdIEpTT05fVEFCTEUKCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAg ICAgICAgICAgICAgICAgICB8IDMzMCArKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgICB8ICAxOCArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyAgICB8ICAyMyArLQogc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMgICAgICAgICAgICAgICB8ICA4NSArKysKIHNyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYyAgICAgICAgICAgICAgfCAgMjkgKwogc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMgICAgICAgICAgICAgICB8ICAyNyArCiBzcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jICAgICAgICAgICAgICAgIHwgIDI5ICsKIHNyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jICAgICAgICAgICAgICAgfCAgMzEgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9N YWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICB8IDE5OSArKysrKystCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY2xhdXNlLmMgICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfanNvbnRhYmxlLmMgICAgICAgIHwgNDY1ICsrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAgICAgICB8IDQzNiArKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAg fCAyMjggKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUuYyAg ICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAgICAg ICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICAg ICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgfCAgNDggKysKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAg ICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oICAgICAgICAgICAgICAg IHwgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dCAg fCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCB8 IDU2MiArKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9z cWxqc29uLnNxbCAgICAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9z cWxqc29uLnNxbCAgICAgIHwgMjg0ICsrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgIDkgKwogMzIgZmlsZXMgY2hhbmdlZCwgMjg4 NiBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCBlMTk4 MjFjNGIyLi5jMGU1ZGI4YTk5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s 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 bnRvIGJvdGggY2hpbGQgYW5kIHBhcmVudCBjb2x1bW5zIGZvciBhbGwgbWlzc2luZyB2YWx1 ZXMuCisgICAgIDwvcGFyYT4KKworICAgIDwvc2VjdDU+CisgICAgPHNlY3Q1PgorICAgICA8 dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5jb250 ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+IDxvcHRpb25hbD4gQVMgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1l PC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPG9wdGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxh Y2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnZhcm5hbWU8L3Jl cGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+PC9vcHRpb25hbD48L2xp dGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAg ICBUaGUgaW5wdXQgZGF0YSB0byBxdWVyeSwgdGhlIEpTT04gcGF0aCBleHByZXNzaW9uIGRl ZmluaW5nIHRoZSBxdWVyeSwKKyAgICAgYW5kIGFuIG9wdGlvbmFsIDxsaXRlcmFsPlBBU1NJ Tkc8L2xpdGVyYWw+IGNsYXVzZSwgYXMgZGVzY3JpYmVkIGluCisgICAgIDx4cmVmIGxpbmtl bmQ9InNxbGpzb24taW5wdXQtY2xhdXNlIi8+LiBUaGUgcmVzdWx0IG9mIHRoZSBpbnB1dCBk YXRhCisgICAgIGV2YWx1YXRpb24gaXMgY2FsbGVkIHRoZSA8Zmlyc3R0ZXJtPnJvdyBwYXR0 ZXJuPC9maXJzdHRlcm0+LiBUaGUgcm93CisgICAgIHBhdHRlcm4gaXMgdXNlZCBhcyB0aGUg c291cmNlIGZvciByb3cgdmFsdWVzIGluIHRoZSBjb25zdHJ1Y3RlZCB2aWV3LgorICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkNPTFVNTlMoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+ IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ICk8L2xpdGVyYWw+CisgICAgPC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+Q09MVU1O UzwvbGl0ZXJhbD4gY2xhdXNlIGRlZmluaW5nIHRoZSBzY2hlbWEgb2YgdGhlCisgICAgIGNv bnN0cnVjdGVkIHZpZXcuIEluIHRoaXMgY2xhdXNlLCB5b3UgbXVzdCBzcGVjaWZ5IGFsbCB0 aGUgY29sdW1ucworICAgICB0byBiZSBmaWxsZWQgd2l0aCBTUUwvSlNPTiBpdGVtcy4KKyAg ICAgVGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVt bjwvcmVwbGFjZWFibGU+CisgICAgIGV4cHJlc3Npb24gaGFzIHRoZSBmb2xsb3dpbmcgc3lu dGF4IHZhcmlhbnRzOgorICAgIDwvcGFyYT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+PHJlcGxhY2VhYmxlPm5h bWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+CisgICAg ICAgICAgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNh dGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgSW5zZXJ0cyBhIHNpbmdsZSBT UUwvSlNPTiBpdGVtIGludG8gZWFjaCByb3cgb2YKKyAgICAgdGhlIHNwZWNpZmllZCBjb2x1 bW4uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGUgcHJvdmlkZWQgPGxpdGVy YWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBwYXJzZXMgdGhlCisgICAgIHJvdyBwYXR0 ZXJuIGRlZmluZWQgYnkgPHJlcGxhY2VhYmxlPmpzb25fYXBpX2NvbW1vbl9zeW50YXg8L3Jl cGxhY2VhYmxlPgorICAgICBhbmQgZmlsbHMgdGhlIGNvbHVtbiB3aXRoIHByb2R1Y2VkIFNR TC9KU09OIGl0ZW1zLCBvbmUgZm9yIGVhY2ggcm93LgorICAgICBJZiB0aGUgPGxpdGVyYWw+ UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBpcyBvbWl0dGVkLAorICAgICA8ZnVuY3Rpb24+ SlNPTl9UQUJMRTwvZnVuY3Rpb24+IHVzZXMgdGhlCisgICAgIDxsaXRlcmFsPiQuPHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gcGF0aCBleHByZXNzaW9uLAor ICAgICB3aGVyZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBwcm92 aWRlZCBjb2x1bW4gbmFtZS4KKyAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29sdW1uIG5hbWUg bXVzdCBjb3JyZXNwb25kIHRvIG9uZSBvZiB0aGUKKyAgICAga2V5cyB3aXRoaW4gdGhlIFNR TC9KU09OIGl0ZW0gcHJvZHVjZWQgYnkgdGhlIHJvdyBwYXR0ZXJuLgorICAgIDwvcGFyYT4K KyAgICA8cGFyYT4KKyAgICAgIEludGVybmFsbHksIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9u cy1qc29udmFsdWUiLz4gYW5kCisgICAgICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtanNv bnF1ZXJ5Ii8+IGFyZSB1c2VkIHRvIHByb2R1Y2UgcmVzdWx0aW5nIHZhbHVlcy4KKyAgICAg IDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29ucXVlcnkiLz4gaXMgdXNlZCBmb3IgSlNP TiwgYXJyYXksIGFuZAorICAgICAgY29tcG9zaXRlIGNvbHVtbiB0eXBlcywgPHhyZWYgbGlu a2VuZD0iZnVuY3Rpb25zLWpzb252YWx1ZSIvPiBpcyB1c2VkIGZvcgorICAgICAgb3RoZXIg dHlwZXMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBPcHRpb25hbGx5LCB5b3Ug Y2FuIGFkZCA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gYW5kCisgICAgIDxsaXRlcmFs Pk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2VzIHRvIGRlZmluZSBob3cgdG8gaGFuZGxlIG1p c3NpbmcgdmFsdWVzCisgICAgIG9yIHN0cnVjdHVyYWwgZXJyb3JzLgorICAgICA8bGl0ZXJh bD5XUkFQUEVSPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+UVVPVEVTPC9saXRlcmFsPiBjbGF1 c2VzIGNhbiBvbmx5CisgICAgIGJlIHVzZWQgd2l0aCBKU09OLCBhcnJheSwgYW5kIGNvbXBv c2l0ZSB0eXBlcy4KKyAgICAgVGhlc2UgY2xhdXNlcyBoYXZlIHRoZSBzYW1lIHN5bnRheCBh bmQgc2VtYW50aWNzIGFzIGluCisgICAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29u dmFsdWUiLz4gYW5kCisgICAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1qc29ucXVlcnki Lz4uCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+PHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFi bGU+IEZPUk1BVCA8cmVwbGFjZWFibGU+anNvbl9yZXByZXNlbnRhdGlvbjwvcmVwbGFjZWFi bGU+CisgICAgICAgICAgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhf c3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAg IDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgR2VuZXJhdGVz IGEgY29sdW1uIGFuZCBpbnNlcnRzIGEgY29tcG9zaXRlIFNRTC9KU09OCisgICAgIGl0ZW0g aW50byBlYWNoIHJvdyBvZiB0aGlzIGNvbHVtbi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+ CisgICAgIFRoZSBwcm92aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNzaW9u IHBhcnNlcyB0aGUKKyAgICAgcm93IHBhdHRlcm4gZGVmaW5lZCBieSA8cmVwbGFjZWFibGU+ anNvbl9hcGlfY29tbW9uX3N5bnRheDwvcmVwbGFjZWFibGU+CisgICAgIGFuZCBmaWxscyB0 aGUgY29sdW1uIHdpdGggcHJvZHVjZWQgU1FML0pTT04gaXRlbXMsIG9uZSBmb3IgZWFjaCBy b3cuCisgICAgIElmIHRoZSA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNzaW9uIGlz IG9taXR0ZWQsCisgICAgIDxmdW5jdGlvbj5KU09OX1RBQkxFPC9mdW5jdGlvbj4gdXNlcyB0 aGUKKyAgICAgPGxpdGVyYWw+JC48cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+PC9s aXRlcmFsPiBwYXRoIGV4cHJlc3Npb24sCisgICAgIHdoZXJlIDxyZXBsYWNlYWJsZT5uYW1l PC9yZXBsYWNlYWJsZT4gaXMgdGhlIHByb3ZpZGVkIGNvbHVtbiBuYW1lLgorICAgICBJbiB0 aGlzIGNhc2UsIHRoZSBjb2x1bW4gbmFtZSBtdXN0IGNvcnJlc3BvbmQgdG8gb25lIG9mIHRo ZQorICAgICBrZXlzIHdpdGhpbiB0aGUgU1FML0pTT04gaXRlbSBwcm9kdWNlZCBieSB0aGUg cm93IHBhdHRlcm4uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgSW50ZXJuYWxs eSwgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWpzb25xdWVyeSIvPiBpcyB1c2VkIHRvIHBy b2R1Y2UKKyAgICAgIHJlc3VsdGluZyB2YWx1ZXMuCisgICAgPC9wYXJhPgorICAgIDxwYXJh PgorICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCA8bGl0ZXJhbD5XUkFQUEVSPC9saXRl cmFsPiwgPGxpdGVyYWw+UVVPVEVTPC9saXRlcmFsPiwKKyAgICAgPGxpdGVyYWw+T04gRU1Q VFk8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlcwor ICAgICB0byBkZWZpbmUgYWRkaXRpb25hbCBzZXR0aW5ncyBmb3IgdGhlIHJldHVybmVkIFNR TC9KU09OIGl0ZW1zLgorICAgICBUaGVzZSBjbGF1c2VzIGhhdmUgdGhlIHNhbWUgc3ludGF4 IGFuZCBzZW1hbnRpY3MgYXMKKyAgICAgaW4gPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWpz b25xdWVyeSIvPi4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJh bD4KKyAgICAgICA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJs ZT50eXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICBFWElTVFMgPG9wdGlvbmFsPiBQQVRIIDxy ZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0 aW9uYWw+CisgICAgIDwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor CisgICAgPHBhcmE+CisgICAgIEdlbmVyYXRlcyBhIGNvbHVtbiBhbmQgaW5zZXJ0cyBhIGJv b2xlYW4gaXRlbSBpbnRvIGVhY2ggcm93IG9mIHRoaXMgY29sdW1uLgorICAgIDwvcGFyYT4K KyAgICA8cGFyYT4KKyAgICAgVGhlIHByb3ZpZGVkIDxsaXRlcmFsPlBBVEg8L2xpdGVyYWw+ IGV4cHJlc3Npb24gcGFyc2VzIHRoZQorICAgICByb3cgcGF0dGVybiBkZWZpbmVkIGJ5IDxy ZXBsYWNlYWJsZT5qc29uX2FwaV9jb21tb25fc3ludGF4PC9yZXBsYWNlYWJsZT4sCisgICAg IGNoZWNrcyB3aGV0aGVyIGFueSBTUUwvSlNPTiBpdGVtcyB3ZXJlIHJldHVybmVkLCBhbmQg ZmlsbHMgdGhlIGNvbHVtbiB3aXRoCisgICAgIHJlc3VsdGluZyBib29sZWFuIHZhbHVlLCBv bmUgZm9yIGVhY2ggcm93LgorICAgICBUaGUgc3BlY2lmaWVkIDxyZXBsYWNlYWJsZT50eXBl PC9yZXBsYWNlYWJsZT4gc2hvdWxkIGhhdmUgY2FzdCBmcm9tCisgICAgIDx0eXBlPmJvb2xl YW48L3R5cGU+LgorICAgICBJZiB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVz c2lvbiBpcyBvbWl0dGVkLAorICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+ IHVzZXMgdGhlCisgICAgIDxsaXRlcmFsPiQuPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2Vh YmxlPjwvbGl0ZXJhbD4gcGF0aCBleHByZXNzaW9uLAorICAgICB3aGVyZSA8cmVwbGFjZWFi bGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFtZS4KKyAg ICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gYWRkIDxs aXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2UgdG8gZGVmaW5lCisgICAgIGVycm9y IGJlaGF2aW9yLiAgVGhpcyBjbGF1c2UgaGF2ZSB0aGUgc2FtZSBzeW50YXggYW5kIHNlbWFu dGljcyBhcyBpbgorICAgICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtanNvbmV4aXN0cyIv Pi4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5ORVNURUQg UEFUSCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxl PiA8b3B0aW9uYWw+IEFTIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFi bGU+IDwvb3B0aW9uYWw+CisgICAgICAgICAgQ09MVU1OUyAoIDxyZXBsYWNlYWJsZT5qc29u X3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ ICk8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJh PgorICAgICBFeHRyYWN0cyBTUUwvSlNPTiBpdGVtcyBmcm9tIG5lc3RlZCBsZXZlbHMgb2Yg dGhlIHJvdyBwYXR0ZXJuLAorICAgICBnZW5lcmF0ZXMgb25lIG9yIG1vcmUgY29sdW1ucyBh cyBkZWZpbmVkIGJ5IHRoZSA8bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPgorICAgICBzdWJj bGF1c2UsIGFuZCBpbnNlcnRzIHRoZSBleHRyYWN0ZWQgU1FML0pTT04gaXRlbXMgaW50byBl YWNoIHJvdyBvZiB0aGVzZSBjb2x1bW5zLgorICAgICBUaGUgPHJlcGxhY2VhYmxlPmpzb25f dGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gZXhwcmVzc2lvbiBpbiB0aGUKKyAgICAgPGxp dGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gc3ViY2xhdXNlIHVzZXMgdGhlIHNhbWUgc3ludGF4 IGFzIGluIHRoZQorICAgICBwYXJlbnQgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xh dXNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+TkVT VEVEIFBBVEg8L2xpdGVyYWw+IHN5bnRheCBpcyByZWN1cnNpdmUsCisgICAgIHNvIHlvdSBj YW4gZ28gZG93biBtdWx0aXBsZSBuZXN0ZWQgbGV2ZWxzIGJ5IHNwZWNpZnlpbmcgc2V2ZXJh bAorICAgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gc3ViY2xhdXNlcyB3aXRo aW4gZWFjaCBvdGhlci4KKyAgICAgSXQgYWxsb3dzIHRvIHVubmVzdCB0aGUgaGllcmFyY2h5 IG9mIEpTT04gb2JqZWN0cyBhbmQgYXJyYXlzCisgICAgIGluIGEgc2luZ2xlIGZ1bmN0aW9u IGludm9jYXRpb24gcmF0aGVyIHRoYW4gY2hhaW5pbmcgc2V2ZXJhbAorICAgICA8ZnVuY3Rp b24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGV4cHJlc3Npb25zIGluIGFuIFNRTCBzdGF0ZW1l bnQuCisgICAgPC9wYXJhPgorCisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD48cmVw bGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IEZPUiBPUkRJTkFMSVRZPC9saXRlcmFsPgor ICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgQWRkcyBh biBvcmRpbmFsaXR5IGNvbHVtbiB0aGF0IHByb3ZpZGVzIHNlcXVlbnRpYWwgcm93IG51bWJl cmluZy4KKyAgICAgWW91IGNhbiBoYXZlIG9ubHkgb25lIG9yZGluYWxpdHkgY29sdW1uIHBl ciB0YWJsZS4gUm93IG51bWJlcmluZworICAgICBpcyAxLWJhc2VkLiBGb3IgY2hpbGQgcm93 cyB0aGF0IHJlc3VsdCBmcm9tIHRoZSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4K KyAgICAgY2xhdXNlcywgdGhlIHBhcmVudCByb3cgbnVtYmVyIGlzIHJlcGVhdGVkLgorICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFy aWFibGVsaXN0PgorCisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisg IDwvdmFyaWFibGVsaXN0PgorCisgICAgPC9zZWN0NT4KKworICAgIDxzZWN0NT4KKyAgICAg PHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIFF1ZXJ5IHRo ZSA8c3RydWN0bmFtZT5teV9maWxtczwvc3RydWN0bmFtZT4gdGFibGUgaG9sZGluZworICAg ICAgc29tZSBKU09OIGRhdGEgYWJvdXQgdGhlIGZpbG1zIGFuZCBjcmVhdGUgYSB2aWV3IHRo YXQKKyAgICAgIGRpc3RyaWJ1dGVzIHRoZSBmaWxtIGdlbnJlLCB0aXRsZSwgYW5kIGRpcmVj dG9yIGJldHdlZW4gc2VwYXJhdGUgY29sdW1uczoKKzxzY3JlZW4+CitTRUxFQ1QganQuKiBG Uk9NIAorIG15X2ZpbG1zLAorIEpTT05fVEFCTEUgKCBqcywgJyQuZmF2b3JpdGVzWypdJyBD T0xVTU5TICgKKyAgIGlkIEZPUiBPUkRJTkFMSVRZLAorICAga2luZCB0ZXh0IFBBVEggJyQu a2luZCcsCisgICBORVNURUQgUEFUSCAnJC5maWxtc1sqXScgQ09MVU1OUyAoCisgICAgIHRp dGxlIHRleHQgUEFUSCAnJC50aXRsZScsCisgICAgIGRpcmVjdG9yIHRleHQgUEFUSCAnJC5k aXJlY3RvcicpKSkgQVMganQ7CistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyBpZCB8ICAga2luZCAgIHwgICAgICAgdGl0bGUgICAg ICB8ICAgIGRpcmVjdG9yCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyAxICB8IGNvbWVkeSAgIHwgQmFuYW5hcyAgICAgICAgICB8 IFdvb2R5IEFsbGVuCisgMSAgfCBjb21lZHkgICB8IFRoZSBEaW5uZXIgR2FtZSAgfCBGcmFu Y2lzIFZlYmVyCisgMiAgfCBob3Jyb3IgICB8IFBzeWNobyAgICAgICAgICAgfCBBbGZyZWQg SGl0Y2hjb2NrCisgMyAgfCB0aHJpbGxlciB8IFZlcnRpZ28gICAgICAgICAgfCBIaXRjaGNv Y2sKKyA0ICB8IGRyYW1hICAgIHwgWW9qaW1ibyAgICAgICAgICB8IEFraXJhIEt1cm9zYXdh CisgKDUgcm93cykKKzwvc2NyZWVuPgorICAgICA8L3BhcmE+CisKKyAgIDwvc2VjdDU+Cisg IDwvc2VjdDQ+CiAKICAgPC9zZWN0Mz4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IGRlODEzNzlkYTMuLjY4NjIyYTY2YzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAg LTM3OTMsNyArMzc5Myw5IEBAIEV4cGxhaW5UYXJnZXRSZWwoUGxhbiAqcGxhbiwgSW5kZXgg cnRpLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJYnJlYWs7CiAJCWNhc2UgVF9UYWJsZUZ1bmNT Y2FuOgogCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfVEFCTEVGVU5DKTsKLQkJCW9i amVjdG5hbWUgPSAieG1sdGFibGUiOworCQkJb2JqZWN0bmFtZSA9IHJ0ZS0+dGFibGVmdW5j ID8KKwkJCQlydGUtPnRhYmxlZnVuYy0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFID8KKwkJ CQkieG1sdGFibGUiIDogImpzb25fdGFibGUiIDogTlVMTDsKIAkJCW9iamVjdHRhZyA9ICJU YWJsZSBGdW5jdGlvbiBOYW1lIjsKIAkJCWJyZWFrOwogCQljYXNlIFRfVmFsdWVzU2NhbjoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IDI1MjUzZjUzNzcuLmM5MjljYzJkOTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMjYzNSw2ICsyNjM1LDcgQEAgRXhl Y0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCXZhci0+ dHlwbW9kID0gZXhwclR5cG1vZCgoTm9kZSAqKSBhcmdleHByKTsKIAkJCQkJdmFyLT5lc3Rh dGUgPSBFeGVjSW5pdEV4cHIoYXJnZXhwciwgc3RhdGUtPnBhcmVudCk7CiAJCQkJCXZhci0+ ZWNvbnRleHQgPSBOVUxMOworCQkJCQl2YXItPm1jeHQgPSBOVUxMOwogCQkJCQl2YXItPmV2 YWx1YXRlZCA9IGZhbHNlOwogCQkJCQl2YXItPnZhbHVlID0gKERhdHVtKSAwOwogCQkJCQl2 YXItPmlzbnVsbCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAu YwppbmRleCAwNDgzMjc5ZjkxLi5jNGFmMzhmZDVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMKQEAgLTQ2MDgsNiArNDYwOCw3IEBAIEV4ZWNFdmFsSnNvbkJl aGF2aW9yKEV4cHJDb250ZXh0ICplY29udGV4dCwgSnNvbkJlaGF2aW9yICpiZWhhdmlvciwK IAogCQljYXNlIEpTT05fQkVIQVZJT1JfTlVMTDoKIAkJY2FzZSBKU09OX0JFSEFWSU9SX1VO S05PV046CisJCWNhc2UgSlNPTl9CRUhBVklPUl9FTVBUWToKIAkJCSppc19udWxsID0gdHJ1 ZTsKIAkJCXJldHVybiAoRGF0dW0pIDA7CiAKQEAgLTQ3MDAsOCArNDcwMSwxNCBAQCBFdmFs SnNvblBhdGhWYXIodm9pZCAqY3h0LCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbiwK IAogCWlmICghdmFyLT5ldmFsdWF0ZWQpCiAJeworCQlNZW1vcnlDb250ZXh0IG9sZGN4dCA9 IHZhci0+bWN4dCA/CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8odmFyLT5tY3h0KSA6IE5V TEw7CisKIAkJdmFyLT52YWx1ZSA9IEV4ZWNFdmFsRXhwcih2YXItPmVzdGF0ZSwgdmFyLT5l Y29udGV4dCwgJnZhci0+aXNudWxsKTsKIAkJdmFyLT5ldmFsdWF0ZWQgPSB0cnVlOworCisJ CWlmIChvbGRjeHQpCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAl9CiAK IAlpZiAodmFyLT5pc251bGwpCkBAIC00ODQ5LDYgKzQ4NTYsNyBAQCBFeGVjRXZhbEpzb25F eHByU3VidHJhbnMoSnNvbkZ1bmMgZnVuYywgRXhwckV2YWxTdGVwICpvcCwKIAlQR19DQVRD SCgpOwogCXsKIAkJRXJyb3JEYXRhICAqZWRhdGE7CisJCWludAkJCWVjYXRlZ29yeTsKIAog CQkvKiBTYXZlIGVycm9yIGluZm8gaW4gb2xkY29udGV4dCAqLwogCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY29udGV4dCk7CkBAIC00ODYwLDggKzQ4NjgsMTAgQEAgRXhlY0V2YWxK c29uRXhwclN1YnRyYW5zKEpzb25GdW5jIGZ1bmMsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAkJQ3VycmVudFJlc291cmNlT3du ZXIgPSBvbGRvd25lcjsKIAotCQlpZiAoRVJSQ09ERV9UT19DQVRFR09SWShlZGF0YS0+c3Fs ZXJyY29kZSkgIT0KLQkJCUVSUkNPREVfREFUQV9FWENFUFRJT04pCisJCWVjYXRlZ29yeSA9 IEVSUkNPREVfVE9fQ0FURUdPUlkoZWRhdGEtPnNxbGVycmNvZGUpOworCisJCWlmIChlY2F0 ZWdvcnkgIT0gRVJSQ09ERV9EQVRBX0VYQ0VQVElPTiAmJgkvKiBqc29ucGF0aCBhbmQgb3Ro ZXIgZGF0YSBlcnJvcnMgKi8KKwkJCWVjYXRlZ29yeSAhPSBFUlJDT0RFX0lOVEVHUklUWV9D T05TVFJBSU5UX1ZJT0xBVElPTikJLyogZG9tYWluIGVycm9ycyAqLwogCQkJUmVUaHJvd0Vy cm9yKGVkYXRhKTsKIAogCQlyZXMgPSAoRGF0dW0pIDA7CkBAIC00OTg3LDYgKzQ5OTcsMTAg QEAgRXhlY0V2YWxKc29uRXhwcihFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNv bnRleHQsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBJU19KU09OX1RBQkxFOgorCQkJ KnJlc251bGwgPSBmYWxzZTsKKwkJCXJldHVybiBpdGVtOworCiAJCWRlZmF1bHQ6CiAJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9KU09OIGV4cHJlc3Npb24gb3AgJWQiLCBq ZXhwci0+b3ApOwogCQkJcmV0dXJuIChEYXR1bSkgMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4IDBkYjRlZDBjMmYuLjY5MWMzZTI4Y2UgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpAQCAtMjgsNiAr MjgsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNu b2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMv anNvbnBhdGguaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgpAQCAtMTYxLDggKzE2 Miw5IEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlzY2Fuc3RhdGUtPnNzLnBzLnF1YWwgPQogCQlF eGVjSW5pdFF1YWwobm9kZS0+c2Nhbi5wbGFuLnF1YWwsICZzY2Fuc3RhdGUtPnNzLnBzKTsK IAotCS8qIE9ubHkgWE1MVEFCTEUgaXMgc3VwcG9ydGVkIGN1cnJlbnRseSAqLwotCXNjYW5z dGF0ZS0+cm91dGluZSA9ICZYbWxUYWJsZVJvdXRpbmU7CisJLyogT25seSBYTUxUQUJMRSBh bmQgSlNPTl9UQUJMRSBhcmUgc3VwcG9ydGVkIGN1cnJlbnRseSAqLworCXNjYW5zdGF0ZS0+ cm91dGluZSA9CisJCXRmLT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUgPyAmWG1sVGFibGVS b3V0aW5lIDogJkpzb25iVGFibGVSb3V0aW5lOwogCiAJc2NhbnN0YXRlLT5wZXJUYWJsZUN4 dCA9CiAJCUFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKQEAg LTM4MSwxNCArMzgzLDE3IEBAIHRmdW5jSW5pdGlhbGl6ZShUYWJsZUZ1bmNTY2FuU3RhdGUg KnRzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBEYXR1bSBkb2MpCiAJCXJvdXRpbmUt PlNldE5hbWVzcGFjZSh0c3RhdGUsIG5zX25hbWUsIG5zX3VyaSk7CiAJfQogCi0JLyogSW5z dGFsbCB0aGUgcm93IGZpbHRlciBleHByZXNzaW9uIGludG8gdGhlIHRhYmxlIGJ1aWxkZXIg Y29udGV4dCAqLwotCXZhbHVlID0gRXhlY0V2YWxFeHByKHRzdGF0ZS0+cm93ZXhwciwgZWNv bnRleHQsICZpc251bGwpOwotCWlmIChpc251bGwpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJ KGVycmNvZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKLQkJCQkgZXJybXNn KCJyb3cgZmlsdGVyIGV4cHJlc3Npb24gbXVzdCBub3QgYmUgbnVsbCIpKSk7CisJaWYgKHJv dXRpbmUtPlNldFJvd0ZpbHRlcikKKwl7CisJCS8qIEluc3RhbGwgdGhlIHJvdyBmaWx0ZXIg ZXhwcmVzc2lvbiBpbnRvIHRoZSB0YWJsZSBidWlsZGVyIGNvbnRleHQgKi8KKwkJdmFsdWUg PSBFeGVjRXZhbEV4cHIodHN0YXRlLT5yb3dleHByLCBlY29udGV4dCwgJmlzbnVsbCk7CisJ CWlmIChpc251bGwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCQkgZXJybXNnKCJyb3cgZmlsdGVyIGV4 cHJlc3Npb24gbXVzdCBub3QgYmUgbnVsbCIpKSk7CiAKLQlyb3V0aW5lLT5TZXRSb3dGaWx0 ZXIodHN0YXRlLCBUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbHVlKSk7CisJCXJvdXRpbmUtPlNl dFJvd0ZpbHRlcih0c3RhdGUsIFRleHREYXR1bUdldENTdHJpbmcodmFsdWUpKTsKKwl9CiAK IAkvKgogCSAqIEluc3RhbGwgdGhlIGNvbHVtbiBmaWx0ZXIgZXhwcmVzc2lvbnMgaW50byB0 aGUgdGFibGUgYnVpbGRlciBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBj MzI0MmFmOGYyLi44MWJkYTU0MDQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMTM5 Myw2ICsxMzkzLDcgQEAgX2NvcHlUYWJsZUZ1bmMoY29uc3QgVGFibGVGdW5jICpmcm9tKQog ewogCVRhYmxlRnVuYyAgKm5ld25vZGUgPSBtYWtlTm9kZShUYWJsZUZ1bmMpOwogCisJQ09Q WV9TQ0FMQVJfRklFTEQoZnVuY3R5cGUpOwogCUNPUFlfTk9ERV9GSUVMRChuc191cmlzKTsK IAlDT1BZX05PREVfRklFTEQobnNfbmFtZXMpOwogCUNPUFlfTk9ERV9GSUVMRChkb2NleHBy KTsKQEAgLTE0MDMsNyArMTQwNCw5IEBAIF9jb3B5VGFibGVGdW5jKGNvbnN0IFRhYmxlRnVu YyAqZnJvbSkKIAlDT1BZX05PREVfRklFTEQoY29sY29sbGF0aW9ucyk7CiAJQ09QWV9OT0RF X0ZJRUxEKGNvbGV4cHJzKTsKIAlDT1BZX05PREVfRklFTEQoY29sZGVmZXhwcnMpOworCUNP UFlfTk9ERV9GSUVMRChjb2x2YWxleHBycyk7CiAJQ09QWV9CSVRNQVBTRVRfRklFTEQobm90 bnVsbHMpOworCUNPUFlfTk9ERV9GSUVMRChwbGFuKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChv cmRpbmFsaXR5Y29sKTsKIAlDT1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKIApAQCAt MjY2NSw2ICsyNjY4LDc2IEBAIF9jb3B5SnNvbkFyZ3VtZW50KGNvbnN0IEpzb25Bcmd1bWVu dCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorLyoKKyAqIF9jb3B5SnNvblRhYmxl CisgKi8KK3N0YXRpYyBKc29uVGFibGUgKgorX2NvcHlKc29uVGFibGUoY29uc3QgSnNvblRh YmxlICpmcm9tKQoreworCUpzb25UYWJsZSAqbmV3bm9kZSA9IG1ha2VOb2RlKEpzb25UYWJs ZSk7CisKKwlDT1BZX05PREVfRklFTEQoY29tbW9uKTsKKwlDT1BZX05PREVfRklFTEQoY29s dW1ucyk7CisJQ09QWV9OT0RFX0ZJRUxEKG9uX2Vycm9yKTsKKwlDT1BZX05PREVfRklFTEQo YWxpYXMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiBuZXdu b2RlOworfQorCisvKgorICogX2NvcHlKc29uVGFibGVDb2x1bW4KKyAqLworc3RhdGljIEpz b25UYWJsZUNvbHVtbiAqCitfY29weUpzb25UYWJsZUNvbHVtbihjb25zdCBKc29uVGFibGVD b2x1bW4gKmZyb20pCit7CisJSnNvblRhYmxlQ29sdW1uICpuZXdub2RlID0gbWFrZU5vZGUo SnNvblRhYmxlQ29sdW1uKTsKKworCUNPUFlfU0NBTEFSX0ZJRUxEKGNvbHR5cGUpOworCUNP UFlfU1RSSU5HX0ZJRUxEKG5hbWUpOworCUNPUFlfTk9ERV9GSUVMRCh0eXBlTmFtZSk7CisJ Q09QWV9TVFJJTkdfRklFTEQocGF0aHNwZWMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGZvcm1h dCk7CisJQ09QWV9TQ0FMQVJfRklFTEQod3JhcHBlcik7CisJQ09QWV9TQ0FMQVJfRklFTEQo b21pdF9xdW90ZXMpOworCUNPUFlfTk9ERV9GSUVMRChjb2x1bW5zKTsKKwlDT1BZX05PREVf RklFTEQob25fZW1wdHkpOworCUNPUFlfTk9ERV9GSUVMRChvbl9lcnJvcik7CisJQ09QWV9T Q0FMQVJfRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKy8qCisg KiBfY29weUpzb25UYWJsZVBhcmVudE5vZGUKKyAqLworc3RhdGljIEpzb25UYWJsZVBhcmVu dE5vZGUgKgorX2NvcHlKc29uVGFibGVQYXJlbnROb2RlKGNvbnN0IEpzb25UYWJsZVBhcmVu dE5vZGUgKmZyb20pCit7CisJSnNvblRhYmxlUGFyZW50Tm9kZSAqbmV3bm9kZSA9IG1ha2VO b2RlKEpzb25UYWJsZVBhcmVudE5vZGUpOworCisJQ09QWV9OT0RFX0ZJRUxEKHBhdGgpOwor CUNPUFlfTk9ERV9GSUVMRChjaGlsZCk7CisJQ09QWV9TQ0FMQVJfRklFTEQoY29sTWluKTsK KwlDT1BZX1NDQUxBUl9GSUVMRChjb2xNYXgpOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisK Ky8qCisgKiBfY29weUpzb25UYWJsZVNpYmxpbmdOb2RlCisgKi8KK3N0YXRpYyBKc29uVGFi bGVTaWJsaW5nTm9kZSAqCitfY29weUpzb25UYWJsZVNpYmxpbmdOb2RlKGNvbnN0IEpzb25U YWJsZVNpYmxpbmdOb2RlICpmcm9tKQoreworCUpzb25UYWJsZVNpYmxpbmdOb2RlICpuZXdu b2RlID0gbWFrZU5vZGUoSnNvblRhYmxlU2libGluZ05vZGUpOworCisJQ09QWV9OT0RFX0ZJ RUxEKGxhcmcpOworCUNPUFlfTk9ERV9GSUVMRChyYXJnKTsKKworCXJldHVybiBuZXdub2Rl OworfQorCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAgKgkJCQkJCXBhdGhub2Rlcy5oIGNvcHkgZnVuY3Rp b25zCiAgKgpAQCAtNTc4Myw2ICs1ODU2LDE4IEBAIGNvcHlPYmplY3RJbXBsKGNvbnN0IHZv aWQgKmZyb20pCiAJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uczoKIAkJCXJldHZhbCA9IF9j b3B5SnNvbkl0ZW1Db2VyY2lvbnMoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25U YWJsZToKKwkJCXJldHZhbCA9IF9jb3B5SnNvblRhYmxlKGZyb20pOworCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uVGFibGVDb2x1bW46CisJCQlyZXR2YWwgPSBfY29weUpzb25UYWJsZUNv bHVtbihmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvblRhYmxlUGFyZW50Tm9kZToK KwkJCXJldHZhbCA9IF9jb3B5SnNvblRhYmxlUGFyZW50Tm9kZShmcm9tKTsKKwkJCWJyZWFr OworCQljYXNlIFRfSnNvblRhYmxlU2libGluZ05vZGU6CisJCQlyZXR2YWwgPSBfY29weUpz b25UYWJsZVNpYmxpbmdOb2RlKGZyb20pOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBS RUxBVElPTiBOT0RFUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IDczMWIxNDE5ZjYu Ljk5ODU2ODAwYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTEyNyw2ICsxMjcs NyBAQCBfZXF1YWxSYW5nZVZhcihjb25zdCBSYW5nZVZhciAqYSwgY29uc3QgUmFuZ2VWYXIg KmIpCiBzdGF0aWMgYm9vbAogX2VxdWFsVGFibGVGdW5jKGNvbnN0IFRhYmxlRnVuYyAqYSwg Y29uc3QgVGFibGVGdW5jICpiKQogeworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGZ1bmN0eXBl KTsKIAlDT01QQVJFX05PREVfRklFTEQobnNfdXJpcyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxE KG5zX25hbWVzKTsKIAlDT01QQVJFX05PREVfRklFTEQoZG9jZXhwcik7CkBAIC0xMzcsMTMg KzEzOCwzNSBAQCBfZXF1YWxUYWJsZUZ1bmMoY29uc3QgVGFibGVGdW5jICphLCBjb25zdCBU YWJsZUZ1bmMgKmIpCiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGNvbGNvbGxhdGlvbnMpOwogCUNP TVBBUkVfTk9ERV9GSUVMRChjb2xleHBycyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGNvbGRl ZmV4cHJzKTsKKwlDT01QQVJFX05PREVfRklFTEQoY29sdmFsZXhwcnMpOwogCUNPTVBBUkVf QklUTUFQU0VUX0ZJRUxEKG5vdG51bGxzKTsKKwlDT01QQVJFX05PREVfRklFTEQocGxhbik7 CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQob3JkaW5hbGl0eWNvbCk7CiAJQ09NUEFSRV9MT0NB VElPTl9GSUVMRChsb2NhdGlvbik7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJv b2wKK19lcXVhbEpzb25UYWJsZVBhcmVudE5vZGUoY29uc3QgSnNvblRhYmxlUGFyZW50Tm9k ZSAqYSwgY29uc3QgSnNvblRhYmxlUGFyZW50Tm9kZSAqYikKK3sKKwlDT01QQVJFX05PREVf RklFTEQocGF0aCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGNoaWxkKTsKKwlDT01QQVJFX1ND QUxBUl9GSUVMRChjb2xNaW4pOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGNvbE1heCk7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wKK19lcXVhbEpzb25UYWJsZVNpYmxp bmdOb2RlKGNvbnN0IEpzb25UYWJsZVNpYmxpbmdOb2RlICphLCBjb25zdCBKc29uVGFibGVT aWJsaW5nTm9kZSAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQobGFyZyk7CisJQ09NUEFS RV9OT0RFX0ZJRUxEKHJhcmcpOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29s CiBfZXF1YWxJbnRvQ2xhdXNlKGNvbnN0IEludG9DbGF1c2UgKmEsIGNvbnN0IEludG9DbGF1 c2UgKmIpCiB7CkBAIC0zNjI3LDYgKzM2NTAsMTIgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwg Y29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb25zOgogCQkJcmV0dmFs ID0gX2VxdWFsSnNvbkl0ZW1Db2VyY2lvbnMoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBU X0pzb25UYWJsZVBhcmVudE5vZGU6CisJCQlyZXR2YWwgPSBfZXF1YWxKc29uVGFibGVQYXJl bnROb2RlKGEsIGIpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVGFibGVTaWJsaW5nTm9k ZToKKwkJCXJldHZhbCA9IF9lcXVhbEpzb25UYWJsZVNpYmxpbmdOb2RlKGEsIGIpOworCQkJ YnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBSRUxBVElPTiBOT0RFUwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYwppbmRleCBlOGRlMWRkM2FhLi5jYmFlMTgwZGJhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYwpAQCAtMjQ1NCw2ICsyNDU0LDggQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcihOb2Rl ICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAod2Fsa2VyKHRmLT5jb2xkZWZl eHBycywgY29udGV4dCkpCiAJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIodGYt PmNvbHZhbGV4cHJzLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQli cmVhazsKIAkJY2FzZSBUX0pzb25WYWx1ZUV4cHI6CkBAIC0zNDg3LDYgKzM0ODksNyBAQCBl eHByZXNzaW9uX3RyZWVfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCU1VVEFURShuZXdub2Rl LT5yb3dleHByLCB0Zi0+cm93ZXhwciwgTm9kZSAqKTsKIAkJCQlNVVRBVEUobmV3bm9kZS0+ Y29sZXhwcnMsIHRmLT5jb2xleHBycywgTGlzdCAqKTsKIAkJCQlNVVRBVEUobmV3bm9kZS0+ Y29sZGVmZXhwcnMsIHRmLT5jb2xkZWZleHBycywgTGlzdCAqKTsKKwkJCQlNVVRBVEUobmV3 bm9kZS0+Y29sdmFsZXhwcnMsIHRmLT5jb2x2YWxleHBycywgTGlzdCAqKTsKIAkJCQlyZXR1 cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOwpAQCAtNDQ0NCw2ICs0NDQ3 LDMwIEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJCXJl dHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVGFibGU6CisJCQl7 CisJCQkJSnNvblRhYmxlICAqanQgPSAoSnNvblRhYmxlICopIG5vZGU7CisKKwkJCQlpZiAo d2Fsa2VyKGp0LT5jb21tb24sIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAod2Fsa2VyKGp0LT5jb2x1bW5zLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJ CQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25UYWJsZUNvbHVtbjoKKwkJCXsKKwkJCQlK c29uVGFibGVDb2x1bW4gICpqdGMgPSAoSnNvblRhYmxlQ29sdW1uICopIG5vZGU7CisKKwkJ CQlpZiAod2Fsa2VyKGp0Yy0+dHlwZU5hbWUsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAod2Fsa2VyKGp0Yy0+b25fZW1wdHksIGNvbnRleHQpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKGp0Yy0+b25fZXJyb3IsIGNvbnRleHQpKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQgJiYg d2Fsa2VyKGp0Yy0+Y29sdW1ucywgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJ fQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBub2RlVGFnKG5vZGUpKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jCmluZGV4IDIzNzUwZDk3YWIuLjMyOTBkMjgwNjQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYwpAQCAtMTA5MSw2ICsxMDkxLDcgQEAgX291dFRhYmxlRnVuYyhTdHJpbmdJbmZv IHN0ciwgY29uc3QgVGFibGVGdW5jICpub2RlKQogewogCVdSSVRFX05PREVfVFlQRSgiVEFC TEVGVU5DIik7CiAKKwlXUklURV9FTlVNX0ZJRUxEKGZ1bmN0eXBlLCBUYWJsZUZ1bmNUeXBl KTsKIAlXUklURV9OT0RFX0ZJRUxEKG5zX3VyaXMpOwogCVdSSVRFX05PREVfRklFTEQobnNf bmFtZXMpOwogCVdSSVRFX05PREVfRklFTEQoZG9jZXhwcik7CkBAIC0xMTAxLDcgKzExMDIs OSBAQCBfb3V0VGFibGVGdW5jKFN0cmluZ0luZm8gc3RyLCBjb25zdCBUYWJsZUZ1bmMgKm5v ZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChjb2xjb2xsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJ RUxEKGNvbGV4cHJzKTsKIAlXUklURV9OT0RFX0ZJRUxEKGNvbGRlZmV4cHJzKTsKKwlXUklU RV9OT0RFX0ZJRUxEKGNvbHZhbGV4cHJzKTsKIAlXUklURV9CSVRNQVBTRVRfRklFTEQobm90 bnVsbHMpOworCVdSSVRFX05PREVfRklFTEQocGxhbik7CiAJV1JJVEVfSU5UX0ZJRUxEKG9y ZGluYWxpdHljb2wpOwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKIH0KQEAg LTE4NjUsNiArMTg2OCwyNiBAQCBfb3V0SnNvbkl0ZW1Db2VyY2lvbnMoU3RyaW5nSW5mbyBz dHIsIGNvbnN0IEpzb25JdGVtQ29lcmNpb25zICpub2RlKQogCVdSSVRFX05PREVfRklFTEQo Y29tcG9zaXRlKTsKIH0KIAorc3RhdGljIHZvaWQKK19vdXRKc29uVGFibGVQYXJlbnROb2Rl KFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uVGFibGVQYXJlbnROb2RlICpub2RlKQorewor CVdSSVRFX05PREVfVFlQRSgiSlNPTlRBQlBOT0RFIik7CisKKwlXUklURV9OT0RFX0ZJRUxE KHBhdGgpOworCVdSSVRFX05PREVfRklFTEQoY2hpbGQpOworCVdSSVRFX0lOVF9GSUVMRChj b2xNaW4pOworCVdSSVRFX0lOVF9GSUVMRChjb2xNYXgpOworfQorCitzdGF0aWMgdm9pZAor X291dEpzb25UYWJsZVNpYmxpbmdOb2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBKc29uVGFi bGVTaWJsaW5nTm9kZSAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIkpTT05UQUJTTk9E RSIpOworCisJV1JJVEVfTk9ERV9GSUVMRChsYXJnKTsKKwlXUklURV9OT0RFX0ZJRUxEKHJh cmcpOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKglTdHVmZiBmcm9t IHBhdGhub2Rlcy5oLgpAQCAtNDY3OCw2ICs0NzAxLDEyIEBAIG91dE5vZGUoU3RyaW5nSW5m byBzdHIsIGNvbnN0IHZvaWQgKm9iaikKIAkJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uczoK IAkJCQlfb3V0SnNvbkl0ZW1Db2VyY2lvbnMoc3RyLCBvYmopOwogCQkJCWJyZWFrOworCQkJ Y2FzZSBUX0pzb25UYWJsZVBhcmVudE5vZGU6CisJCQkJX291dEpzb25UYWJsZVBhcmVudE5v ZGUoc3RyLCBvYmopOworCQkJCWJyZWFrOworCQkJY2FzZSBUX0pzb25UYWJsZVNpYmxpbmdO b2RlOgorCQkJCV9vdXRKc29uVGFibGVTaWJsaW5nTm9kZShzdHIsIG9iaik7CisJCQkJYnJl YWs7CiAKIAkJCWRlZmF1bHQ6CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggYzE1ZTgx YTM2Mi4uZDgyZmMyMmNkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTUzMyw2ICs1 MzMsNyBAQCBfcmVhZFRhYmxlRnVuYyh2b2lkKQogewogCVJFQURfTE9DQUxTKFRhYmxlRnVu Yyk7CiAKKwlSRUFEX0VOVU1fRklFTEQoZnVuY3R5cGUsIFRhYmxlRnVuY1R5cGUpOwogCVJF QURfTk9ERV9GSUVMRChuc191cmlzKTsKIAlSRUFEX05PREVfRklFTEQobnNfbmFtZXMpOwog CVJFQURfTk9ERV9GSUVMRChkb2NleHByKTsKQEAgLTU0Myw3ICs1NDQsOSBAQCBfcmVhZFRh YmxlRnVuYyh2b2lkKQogCVJFQURfTk9ERV9GSUVMRChjb2xjb2xsYXRpb25zKTsKIAlSRUFE X05PREVfRklFTEQoY29sZXhwcnMpOwogCVJFQURfTk9ERV9GSUVMRChjb2xkZWZleHBycyk7 CisJUkVBRF9OT0RFX0ZJRUxEKGNvbHZhbGV4cHJzKTsKIAlSRUFEX0JJVE1BUFNFVF9GSUVM RChub3RudWxscyk7CisJUkVBRF9OT0RFX0ZJRUxEKHBsYW4pOwogCVJFQURfSU5UX0ZJRUxE KG9yZGluYWxpdHljb2wpOwogCVJFQURfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwogCkBA IC0xNDk0LDYgKzE0OTcsMzAgQEAgX3JlYWRKc29uRXhwcih2b2lkKQogCVJFQURfRE9ORSgp OwogfQogCitzdGF0aWMgSnNvblRhYmxlUGFyZW50Tm9kZSAqCitfcmVhZEpzb25UYWJsZVBh cmVudE5vZGUodm9pZCkKK3sKKwlSRUFEX0xPQ0FMUyhKc29uVGFibGVQYXJlbnROb2RlKTsK KworCVJFQURfTk9ERV9GSUVMRChwYXRoKTsKKwlSRUFEX05PREVfRklFTEQoY2hpbGQpOwor CVJFQURfSU5UX0ZJRUxEKGNvbE1pbik7CisJUkVBRF9JTlRfRklFTEQoY29sTWF4KTsKKwor CVJFQURfRE9ORSgpOworfQorCitzdGF0aWMgSnNvblRhYmxlU2libGluZ05vZGUgKgorX3Jl YWRKc29uVGFibGVTaWJsaW5nTm9kZSh2b2lkKQoreworCVJFQURfTE9DQUxTKEpzb25UYWJs ZVNpYmxpbmdOb2RlKTsKKworCVJFQURfTk9ERV9GSUVMRChsYXJnKTsKKwlSRUFEX05PREVf RklFTEQocmFyZyk7CisKKwlSRUFEX0RPTkUoKTsKK30KKwogLyoKICAqIF9yZWFkSnNvbkNv ZXJjaW9uCiAgKi8KQEAgLTMxNTEsNiArMzE3OCwxMCBAQCBwYXJzZU5vZGVTdHJpbmcodm9p ZCkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uQ29lcmNpb24oKTsKIAllbHNlIGlmIChN QVRDSCgiSlNPTklURU1DT0VSQ0lPTlMiLCAxNykpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFk SnNvbkl0ZW1Db2VyY2lvbnMoKTsKKwllbHNlIGlmIChNQVRDSCgiSlNPTlRBQlBOT0RFIiwg MTIpKQorCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25UYWJsZVBhcmVudE5vZGUoKTsKKwll bHNlIGlmIChNQVRDSCgiSlNPTlRBQlNOT0RFIiwgMTIpKQorCQlyZXR1cm5fdmFsdWUgPSBf cmVhZEpzb25UYWJsZVNpYmxpbmdOb2RlKCk7CiAJZWxzZQogCXsKIAkJZWxvZyhFUlJPUiwg ImJhZGx5IGZvcm1hdHRlZCBub2RlIHN0cmluZyBcIiUuMzJzXCIuLi4iLCB0b2tlbik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9w YXJzZXIvTWFrZWZpbGUKaW5kZXggNWRkYjlhOTJmMC4uNTZkYWZkZDk2MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9NYWtlZmlsZQpAQCAtMjMsNiArMjMsNyBAQCBPQkpTID0gXAogCXBhcnNlX2Vuci5vIFwK IAlwYXJzZV9leHByLm8gXAogCXBhcnNlX2Z1bmMubyBcCisJcGFyc2VfanNvbnRhYmxlLm8g XAogCXBhcnNlX25vZGUubyBcCiAJcGFyc2Vfb3Blci5vIFwKIAlwYXJzZV9wYXJhbS5vIFwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IDcwZjU0MWVjZTAuLjcwMmM4MDJlNjkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQpAQCAtNjY5LDE1ICs2NjksMjUgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAkJCQkJanNvbl9vYmplY3RfYWdncmVnYXRlX2NvbnN0cnVjdG9yCiAJCQkJCWpzb25fYXJy YXlfYWdncmVnYXRlX2NvbnN0cnVjdG9yCiAJCQkJCWpzb25fcGF0aF9zcGVjaWZpY2F0aW9u CisJCQkJCWpzb25fdGFibGUKKwkJCQkJanNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbgor CQkJCQlqc29uX3RhYmxlX29yZGluYWxpdHlfY29sdW1uX2RlZmluaXRpb24KKwkJCQkJanNv bl90YWJsZV9yZWd1bGFyX2NvbHVtbl9kZWZpbml0aW9uCisJCQkJCWpzb25fdGFibGVfZm9y bWF0dGVkX2NvbHVtbl9kZWZpbml0aW9uCisJCQkJCWpzb25fdGFibGVfZXhpc3RzX2NvbHVt bl9kZWZpbml0aW9uCisJCQkJCWpzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMKIAogJXR5cGUg PGxpc3Q+CQlqc29uX25hbWVfYW5kX3ZhbHVlX2xpc3QKIAkJCQkJanNvbl92YWx1ZV9leHBy X2xpc3QKIAkJCQkJanNvbl9hcnJheV9hZ2dyZWdhdGVfb3JkZXJfYnlfY2xhdXNlX29wdAog CQkJCQlqc29uX2FyZ3VtZW50cwogCQkJCQlqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJ CQlqc29uX3RhYmxlX2NvbHVtbnNfY2xhdXNlCisJCQkJCWpzb25fdGFibGVfY29sdW1uX2Rl ZmluaXRpb25fbGlzdAogCiAldHlwZSA8c3RyPgkJCWpzb25fdGFibGVfcGF0aF9uYW1lCiAJ CQkJCWpzb25fYXNfcGF0aF9uYW1lX2NsYXVzZV9vcHQKKwkJCQkJanNvbl90YWJsZV9jb2x1 bW5fcGF0aF9zcGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQKIAogJXR5cGUgPGl2YWw+CQlqc29u X2VuY29kaW5nCiAJCQkJCWpzb25fZW5jb2RpbmdfY2xhdXNlX29wdApAQCAtNjkxLDYgKzcw MSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJCWpzb25fYmVoYXZpb3Jf dHJ1ZQogCQkJCQlqc29uX2JlaGF2aW9yX2ZhbHNlCiAJCQkJCWpzb25fYmVoYXZpb3JfdW5r bm93bgorCQkJCQlqc29uX2JlaGF2aW9yX2VtcHR5CiAJCQkJCWpzb25fYmVoYXZpb3JfZW1w dHlfYXJyYXkKIAkJCQkJanNvbl9iZWhhdmlvcl9lbXB0eV9vYmplY3QKIAkJCQkJanNvbl9i ZWhhdmlvcl9kZWZhdWx0CkBAIC02OTgsNiArNzA5LDggQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAkJCQkJanNvbl9xdWVyeV9iZWhhdmlvcgogCQkJCQlqc29uX2V4aXN0c19l cnJvcl9iZWhhdmlvcgogCQkJCQlqc29uX2V4aXN0c19lcnJvcl9jbGF1c2Vfb3B0CisJCQkJ CWpzb25fdGFibGVfZXJyb3JfYmVoYXZpb3IKKwkJCQkJanNvbl90YWJsZV9lcnJvcl9jbGF1 c2Vfb3B0CiAKICV0eXBlIDxvbl9iZWhhdmlvcj4ganNvbl92YWx1ZV9vbl9iZWhhdmlvcl9j bGF1c2Vfb3B0CiAJCQkJCWpzb25fcXVlcnlfb25fYmVoYXZpb3JfY2xhdXNlX29wdApAQCAt NzcyLDcgKzc4NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSU5URVJTRUNU IElOVEVSVkFMIElOVE8gSU5WT0tFUiBJUyBJU05VTEwgSVNPTEFUSU9OCiAKIAlKT0lOIEpT T04gSlNPTl9BUlJBWSBKU09OX0FSUkFZQUdHIEpTT05fRVhJU1RTIEpTT05fT0JKRUNUIEpT T05fT0JKRUNUQUdHCi0JSlNPTl9RVUVSWSBKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRSBK U09OX1ZBTFVFCisJSlNPTl9RVUVSWSBKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRSBKU09O X1RBQkxFIEpTT05fVkFMVUUKIAogCUtFWSBLRVlTIEtFRVAKIApAQCAtNzgyLDggKzc5NSw4 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAKIAlNQVBQSU5HIE1BVENIIE1BVEVS SUFMSVpFRCBNQVhWQUxVRSBNRVRIT0QgTUlOVVRFX1AgTUlOVkFMVUUgTU9ERSBNT05USF9Q IE1PVkUKIAotCU5BTUVfUCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5DSEFSIE5FVyBORVhU IE5GQyBORkQgTkZLQyBORktEIE5PIE5PTkUKLQlOT1JNQUxJWkUgTk9STUFMSVpFRAorCU5B TUVfUCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5DSEFSIE5FU1RFRCBORVcgTkVYVCBORkMg TkZEIE5GS0MgTkZLRCBOTworCU5PTkUgTk9STUFMSVpFIE5PUk1BTElaRUQKIAlOT1QgTk9U SElORyBOT1RJRlkgTk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVN RVJJQwogCkBAIC03OTEsNyArODA0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQ UyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUlNFUiBQ QVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JEIFBMQUNJTkcgUExBTlMgUE9MSUNZ CisJUEFSQUxMRUwgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQg UEFUSCBQTEFDSU5HIFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJ T04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdF UyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04K IApAQCAtODkzLDcgKzkwNiw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAgKi8K ICVub25hc3NvYwlVTkJPVU5ERUQJCS8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNl ZGVuY2UgYXMgSURFTlQgKi8KICVub25hc3NvYwlFUlJPUl9QIEVNUFRZX1AgREVGQVVMVCBB QlNFTlQgLyogSlNPTiBlcnJvci9lbXB0eSBiZWhhdmlvciAqLwotJW5vbmFzc29jCUZBTFNF X1AgS0VFUCBPTUlUIFBBU1NJTkcgVFJVRV9QIFVOS05PV04gVU5JUVVFIEpTT04KKyVub25h c3NvYwlGQUxTRV9QIEtFRVAgT01JVCBQQVNTSU5HIFRSVUVfUCBVTktOT1dOIFVOSVFVRSBK U09OIENPTFVNTlMKICVub25hc3NvYwlJREVOVCBQQVJUSVRJT04gUkFOR0UgUk9XUyBHUk9V UFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJPTExVUAogJWxlZnQJCU9wIE9QRVJBVE9S CQkvKiBtdWx0aS1jaGFyYWN0ZXIgb3BzIGFuZCB1c2VyLWRlZmluZWQgb3BlcmF0b3JzICov CiAlbGVmdAkJJysnICctJwpAQCAtOTE4LDYgKzkzMSwxMCBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogICovCiAlbGVmdAkJSk9JTiBDUk9TUyBMRUZUIEZVTEwgUklHSFQgSU5O RVJfUCBOQVRVUkFMCiAKKyVub25hc3NvYwlqc29uX3RhYmxlX2NvbHVtbgorJW5vbmFzc29j CU5FU1RFRAorJWxlZnQJCVBBVEgKKwogJW5vbmFzc29jCWVtcHR5X2pzb25fdW5pcXVlCiAl bGVmdAkJV0lUSE9VVCBXSVRIX0xBX1VOSVFVRQogCkBAIC0xMjQ4NCw2ICsxMjUwMSwxOSBA QCB0YWJsZV9yZWY6CXJlbGF0aW9uX2V4cHIgb3B0X2FsaWFzX2NsYXVzZQogCQkJCQkkMi0+ YWxpYXMgPSAkNDsKIAkJCQkJJCQgPSAoTm9kZSAqKSAkMjsKIAkJCQl9CisJCQl8IGpzb25f dGFibGUgb3B0X2FsaWFzX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlICpqdCA9IGNh c3ROb2RlKEpzb25UYWJsZSwgJDEpOworCQkJCQlqdC0+YWxpYXMgPSAkMjsKKwkJCQkJJCQg PSAoTm9kZSAqKSBqdDsKKwkJCQl9CisJCQl8IExBVEVSQUxfUCBqc29uX3RhYmxlIG9wdF9h bGlhc19jbGF1c2UKKwkJCQl7CisJCQkJCUpzb25UYWJsZSAqanQgPSBjYXN0Tm9kZShKc29u VGFibGUsICQyKTsKKwkJCQkJanQtPmFsaWFzID0gJDM7CisJCQkJCWp0LT5sYXRlcmFsID0g dHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBqdDsKKwkJCQl9CiAJCTsKIAogCkBAIC0xMzAz NSw2ICsxMzA2NSw4IEBAIHhtbHRhYmxlX2NvbHVtbl9vcHRpb25fZWw6CiAJCQkJeyAkJCA9 IG1ha2VEZWZFbGVtKCJpc19ub3RfbnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFuKHRydWUp LCBAMSk7IH0KIAkJCXwgTlVMTF9QCiAJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJpc19ub3Rf bnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFuKGZhbHNlKSwgQDEpOyB9CisJCQl8IFBBVEgg Yl9leHByCisJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJwYXRoIiwgJDIsIEAxKTsgfQogCQk7 CiAKIHhtbF9uYW1lc3BhY2VfbGlzdDoKQEAgLTE1NTYxLDYgKzE1NTkzLDEwIEBAIGpzb25f YmVoYXZpb3JfdW5rbm93bjoKIAkJCVVOS05PV04JCXsgJCQgPSBtYWtlSnNvbkJlaGF2aW9y KEpTT05fQkVIQVZJT1JfVU5LTk9XTiwgTlVMTCk7IH0KIAkJOwogCitqc29uX2JlaGF2aW9y X2VtcHR5OgorCQkJRU1QVFlfUAkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhB VklPUl9FTVBUWV9PQkpFQ1QsIE5VTEwpOyB9CisJCTsKKwoganNvbl9iZWhhdmlvcl9lbXB0 eV9hcnJheToKIAkJCUVNUFRZX1AgQVJSQVkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNP Tl9CRUhBVklPUl9FTVBUWV9BUlJBWSwgTlVMTCk7IH0KIAkJCS8qIG5vbi1zdGFuZGFyZCwg Zm9yIE9yYWNsZSBjb21wYXRpYmlsaXR5IG9ubHkgKi8KQEAgLTE1Njc1LDYgKzE1NzExLDE1 MyBAQCBqc29uX3F1ZXJ5X29uX2JlaGF2aW9yX2NsYXVzZV9vcHQ6CiAJCQkJCQkJCQl7ICQk Lm9uX2VtcHR5ID0gTlVMTDsgJCQub25fZXJyb3IgPSBOVUxMOyB9CiAJCTsKIAoranNvbl90 YWJsZToKKwkJCUpTT05fVEFCTEUgJygnCisJCQkJanNvbl9hcGlfY29tbW9uX3N5bnRheAor CQkJCWpzb25fdGFibGVfY29sdW1uc19jbGF1c2UKKwkJCQlqc29uX3RhYmxlX2Vycm9yX2Ns YXVzZV9vcHQKKwkJCScpJworCQkJCXsKKwkJCQkJSnNvblRhYmxlICpuID0gbWFrZU5vZGUo SnNvblRhYmxlKTsKKwkJCQkJbi0+Y29tbW9uID0gKEpzb25Db21tb24gKikgJDM7CisJCQkJ CW4tPmNvbHVtbnMgPSAkNDsKKwkJCQkJbi0+b25fZXJyb3IgPSAkNTsKKwkJCQkJbi0+bG9j YXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29u X3RhYmxlX2NvbHVtbnNfY2xhdXNlOgorCQkJQ09MVU1OUyAnKCcJanNvbl90YWJsZV9jb2x1 bW5fZGVmaW5pdGlvbl9saXN0ICcpJyB7ICQkID0gJDM7IH0KKwkJOworCitqc29uX3RhYmxl X2NvbHVtbl9kZWZpbml0aW9uX2xpc3Q6CisJCQlqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0 aW9uCisJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IGpzb25fdGFibGVfY29s dW1uX2RlZmluaXRpb25fbGlzdCAnLCcganNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbgor CQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitqc29uX3RhYmxlX2NvbHVt bl9kZWZpbml0aW9uOgorCQkJanNvbl90YWJsZV9vcmRpbmFsaXR5X2NvbHVtbl9kZWZpbml0 aW9uCQklcHJlYyBqc29uX3RhYmxlX2NvbHVtbgorCQkJfCBqc29uX3RhYmxlX3JlZ3VsYXJf Y29sdW1uX2RlZmluaXRpb24gCQklcHJlYyBqc29uX3RhYmxlX2NvbHVtbgorCQkJfCBqc29u X3RhYmxlX2Zvcm1hdHRlZF9jb2x1bW5fZGVmaW5pdGlvbgklcHJlYyBqc29uX3RhYmxlX2Nv bHVtbgorCQkJfCBqc29uX3RhYmxlX2V4aXN0c19jb2x1bW5fZGVmaW5pdGlvbgkJJXByZWMg anNvbl90YWJsZV9jb2x1bW4KKwkJCXwganNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucworCQk7 CisKK2pzb25fdGFibGVfb3JkaW5hbGl0eV9jb2x1bW5fZGVmaW5pdGlvbjoKKwkJCUNvbElk IEZPUiBPUkRJTkFMSVRZCisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtl Tm9kZShKc29uVGFibGVDb2x1bW4pOworCQkJCQluLT5jb2x0eXBlID0gSlRDX0ZPUl9PUkRJ TkFMSVRZOworCQkJCQluLT5uYW1lID0gJDE7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJ CQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworanNvbl90YWJsZV9yZWd1bGFy X2NvbHVtbl9kZWZpbml0aW9uOgorCQkJQ29sSWQgVHlwZW5hbWUKKwkJCWpzb25fdGFibGVf Y29sdW1uX3BhdGhfc3BlY2lmaWNhdGlvbl9jbGF1c2Vfb3B0CisJCQlqc29uX3dyYXBwZXJf Y2xhdXNlX29wdAorCQkJanNvbl9xdW90ZXNfY2xhdXNlX29wdAorCQkJanNvbl92YWx1ZV9v bl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4g PSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCQkJCQluLT5jb2x0eXBlID0gSlRDX1JF R1VMQVI7CisJCQkJCW4tPm5hbWUgPSAkMTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJ CQkJbi0+Zm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VO Q19ERUZBVUxULCAtMSk7CisJCQkJCW4tPndyYXBwZXIgPSAkNDsgLyogSlNXX05PTkUgKi8K KwkJCQkJbi0+b21pdF9xdW90ZXMgPSAkNTsgLyogZmFsc2UgKi8KKwkJCQkJbi0+cGF0aHNw ZWMgPSAkMzsKKwkJCQkJbi0+b25fZW1wdHkgPSAkNi5vbl9lbXB0eTsKKwkJCQkJbi0+b25f ZXJyb3IgPSAkNi5vbl9lcnJvcjsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQg PSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX2V4aXN0c19jb2x1bW5f ZGVmaW5pdGlvbjoKKwkJCUNvbElkIFR5cGVuYW1lCisJCQlFWElTVFMganNvbl90YWJsZV9j b2x1bW5fcGF0aF9zcGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQKKwkJCWpzb25fZXhpc3RzX2Vy cm9yX2NsYXVzZV9vcHQKKwkJCQl7CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VO b2RlKEpzb25UYWJsZUNvbHVtbik7CisJCQkJCW4tPmNvbHR5cGUgPSBKVENfRVhJU1RTOwor CQkJCQluLT5uYW1lID0gJDE7CisJCQkJCW4tPnR5cGVOYW1lID0gJDI7CisJCQkJCW4tPmZv cm1hdCA9IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVM VCwgLTEpOworCQkJCQluLT53cmFwcGVyID0gSlNXX05PTkU7CisJCQkJCW4tPm9taXRfcXVv dGVzID0gZmFsc2U7CisJCQkJCW4tPnBhdGhzcGVjID0gJDQ7CisJCQkJCW4tPm9uX2VtcHR5 ID0gTlVMTDsKKwkJCQkJbi0+b25fZXJyb3IgPSAkNTsKKwkJCQkJbi0+bG9jYXRpb24gPSBA MTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX2Vy cm9yX2JlaGF2aW9yOgorCQkJanNvbl9iZWhhdmlvcl9lcnJvcgorCQkJfCBqc29uX2JlaGF2 aW9yX2VtcHR5CisJCTsKKworanNvbl90YWJsZV9lcnJvcl9jbGF1c2Vfb3B0OgorCQkJanNv bl90YWJsZV9lcnJvcl9iZWhhdmlvciBPTiBFUlJPUl9QCXsgJCQgPSAkMTsgfQorCQkJfCAv KiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK2pzb25fdGFibGVfY29s dW1uX3BhdGhfc3BlY2lmaWNhdGlvbl9jbGF1c2Vfb3B0OgorCQkJUEFUSCBTY29uc3QJCQkJ CQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBFTVBUWSAqLyAlcHJlYyBqc29uX3RhYmxlX2Nv bHVtbgl7ICQkID0gTlVMTDsgfQorCQk7CisKK2pzb25fdGFibGVfZm9ybWF0dGVkX2NvbHVt bl9kZWZpbml0aW9uOgorCQkJQ29sSWQgVHlwZW5hbWUgRk9STUFUIGpzb25fcmVwcmVzZW50 YXRpb24KKwkJCWpzb25fdGFibGVfY29sdW1uX3BhdGhfc3BlY2lmaWNhdGlvbl9jbGF1c2Vf b3B0CisJCQlqc29uX3dyYXBwZXJfY2xhdXNlX29wdAorCQkJanNvbl9xdW90ZXNfY2xhdXNl X29wdAorCQkJanNvbl9xdWVyeV9vbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJeworCQkJ CQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCQkJ CQluLT5jb2x0eXBlID0gSlRDX0ZPUk1BVFRFRDsKKwkJCQkJbi0+bmFtZSA9ICQxOworCQkJ CQluLT50eXBlTmFtZSA9ICQyOworCQkJCQluLT5mb3JtYXQgPSBjYXN0Tm9kZShKc29uRm9y bWF0LCAkNCk7CisJCQkJCW4tPnBhdGhzcGVjID0gJDU7CisJCQkJCW4tPndyYXBwZXIgPSAk NjsKKwkJCQkJaWYgKG4tPndyYXBwZXIgIT0gSlNXX05PTkUgJiYgJDcgIT0gSlNfUVVPVEVT X1VOU1BFQykKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiU1FML0pTT04gUVVPVEVTIGJl aGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2Vk IiksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDcpKSk7CisJCQkJCW4tPm9taXRf cXVvdGVzID0gJDcgPT0gSlNfUVVPVEVTX09NSVQ7CisJCQkJCW4tPm9uX2VtcHR5ID0gJDgu b25fZW1wdHk7CisJCQkJCW4tPm9uX2Vycm9yID0gJDgub25fZXJyb3I7CisJCQkJCW4tPmxv Y2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworanNv bl90YWJsZV9uZXN0ZWRfY29sdW1uczoKKwkJCU5FU1RFRCBwYXRoX29wdCBTY29uc3QganNv bl90YWJsZV9jb2x1bW5zX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpu ID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19O RVNURUQ7CisJCQkJCW4tPnBhdGhzcGVjID0gJDM7CisJCQkJCW4tPmNvbHVtbnMgPSAkNDsK KwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0K KwkJOworCitwYXRoX29wdDoKKwkJCVBBVEgJCQkJCQkJCQl7IH0KKwkJCXwgLyogRU1QVFkg Ki8JCQkJCQkJeyB9CisJCTsKKwoganNvbl9yZXR1cm5pbmdfY2xhdXNlX29wdDoKIAkJCVJF VFVSTklORyBUeXBlbmFtZQogCQkJCXsKQEAgLTE2NTE4LDYgKzE2NzAxLDcgQEAgdW5yZXNl cnZlZF9rZXl3b3JkOgogCQkJfCBNT1ZFCiAJCQl8IE5BTUVfUAogCQkJfCBOQU1FUworCQkJ fCBORVNURUQKIAkJCXwgTkVXCiAJCQl8IE5FWFQKIAkJCXwgTkZDCkBAIC0xNjU1MSw2ICsx NjczNSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBB U1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJCXwgUEFUSAogCQkJfCBQTEFOUwogCQkJfCBQT0xJ Q1kKIAkJCXwgUFJFQ0VESU5HCkBAIC0xNjcxNCw2ICsxNjg5OSw3IEBAIGNvbF9uYW1lX2tl eXdvcmQ6CiAJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJCXwgSlNPTl9T RVJJQUxJWkUKKwkJCXwgSlNPTl9UQUJMRQogCQkJfCBKU09OX1ZBTFVFCiAJCQl8IExFQVNU CiAJCQl8IE5BVElPTkFMCkBAIC0xNzA4MSw2ICsxNzI2Nyw3IEBAIGJhcmVfbGFiZWxfa2V5 d29yZDoKIAkJCXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NF UklBTElaRQorCQkJfCBKU09OX1RBQkxFCiAJCQl8IEpTT05fVkFMVUUKIAkJCXwgS0VFUAog CQkJfCBLRVkKQEAgLTE3MTE4LDYgKzE3MzA1LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgog CQkJfCBOQVRJT05BTAogCQkJfCBOQVRVUkFMCiAJCQl8IE5DSEFSCisJCQl8IE5FU1RFRAog CQkJfCBORVcKIAkJCXwgTkVYVAogCQkJfCBORkMKQEAgLTE3MTYxLDYgKzE3MzQ5LDcgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJ fCBQQVNTV09SRAorCQkJfCBQQVRICiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwg UE9MSUNZCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKaW5kZXggZDhiMTRiYTdjZC4u ZGFmZGU2OGIyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVz ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpAQCAtNjk2LDcg KzY5Niw5IEBAIHRyYW5zZm9ybVJhbmdlVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwg UmFuZ2VUYWJsZUZ1bmMgKnJ0ZikKIAljaGFyCSAgKipuYW1lczsKIAlpbnQJCQljb2xubzsK IAotCS8qIEN1cnJlbnRseSBvbmx5IFhNTFRBQkxFIGlzIHN1cHBvcnRlZCAqLworCS8qIEN1 cnJlbnRseSBvbmx5IFhNTFRBQkxFIGFuZCBKU09OX1RBQkxFIGFyZSBzdXBwb3J0ZWQgKi8K KworCXRmLT5mdW5jdHlwZSA9IFRGVF9YTUxUQUJMRTsKIAljb25zdHJ1Y3ROYW1lID0gIlhN TFRBQkxFIjsKIAlkb2NUeXBlID0gWE1MT0lEOwogCkBAIC0xMTAwLDEzICsxMTAyLDE3IEBA IHRyYW5zZm9ybUZyb21DbGF1c2VJdGVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwK IAkJcnRyLT5ydGluZGV4ID0gbnNpdGVtLT5wX3J0aW5kZXg7CiAJCXJldHVybiAoTm9kZSAq KSBydHI7CiAJfQotCWVsc2UgaWYgKElzQShuLCBSYW5nZVRhYmxlRnVuYykpCisJZWxzZSBp ZiAoSXNBKG4sIFJhbmdlVGFibGVGdW5jKSB8fCBJc0EobiwgSnNvblRhYmxlKSkKIAl7CiAJ CS8qIHRhYmxlIGZ1bmN0aW9uIGlzIGxpa2UgYSBwbGFpbiByZWxhdGlvbiAqLwogCQlSYW5n ZVRibFJlZiAqcnRyOwogCQlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKIAotCQluc2l0 ZW0gPSB0cmFuc2Zvcm1SYW5nZVRhYmxlRnVuYyhwc3RhdGUsIChSYW5nZVRhYmxlRnVuYyAq KSBuKTsKKwkJaWYgKElzQShuLCBSYW5nZVRhYmxlRnVuYykpCisJCQluc2l0ZW0gPSB0cmFu c2Zvcm1SYW5nZVRhYmxlRnVuYyhwc3RhdGUsIChSYW5nZVRhYmxlRnVuYyAqKSBuKTsKKwkJ ZWxzZQorCQkJbnNpdGVtID0gdHJhbnNmb3JtSnNvblRhYmxlKHBzdGF0ZSwgKEpzb25UYWJs ZSAqKSBuKTsKKwogCQkqdG9wX25zaXRlbSA9IG5zaXRlbTsKIAkJKm5hbWVzcGFjZSA9IGxp c3RfbWFrZTEobnNpdGVtKTsKIAkJcnRyID0gbWFrZU5vZGUoUmFuZ2VUYmxSZWYpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMTg2MjJmZDAxMy4uNGE1YmU0Y2RiNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC00MDkzLDcgKzQwOTMsNyBAQCB0cmFuc2Zv cm1Kc29uRXhwckNvbW1vbihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVu YykKIAlOb2RlCSAgICpwYXRoc3BlYzsKIAlKc29uRm9ybWF0VHlwZSBmb3JtYXQ7CiAKLQlp ZiAoZnVuYy0+Y29tbW9uLT5wYXRobmFtZSkKKwlpZiAoZnVuYy0+Y29tbW9uLT5wYXRobmFt ZSAmJiBmdW5jLT5vcCAhPSBJU19KU09OX1RBQkxFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJKU09OX1RB QkxFIHBhdGggbmFtZSBpcyBub3QgYWxsb3dlZCBoZXJlIiksCkBAIC00MTMxLDE0ICs0MTMx LDEzIEBAIHRyYW5zZm9ybUpzb25FeHByQ29tbW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNv bkZ1bmNFeHByICpmdW5jKQogCXRyYW5zZm9ybUpzb25QYXNzaW5nQXJncyhwc3RhdGUsIGZv cm1hdCwgZnVuYy0+Y29tbW9uLT5wYXNzaW5nLAogCQkJCQkJCSAmanNleHByLT5wYXNzaW5n X3ZhbHVlcywgJmpzZXhwci0+cGFzc2luZ19uYW1lcyk7CiAKLQlpZiAoZnVuYy0+b3AgIT0g SVNfSlNPTl9FWElTVFMpCisJaWYgKGZ1bmMtPm9wICE9IElTX0pTT05fRVhJU1RTICYmIGZ1 bmMtPm9wICE9IElTX0pTT05fVEFCTEUpCiAJCWpzZXhwci0+b25fZW1wdHkgPSB0cmFuc2Zv cm1Kc29uQmVoYXZpb3IocHN0YXRlLCBmdW5jLT5vbl9lbXB0eSwKIAkJCQkJCQkJCQkJCSBK U09OX0JFSEFWSU9SX05VTEwpOwogCiAJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpz b25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAotCQkJCQkJCQkJCQkgZnVuYy0+ b3AgPT0gSVNfSlNPTl9FWElTVFMgPwotCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9GQUxT RSA6Ci0JCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwpOworCQlmdW5jLT5vcCA9PSBJ U19KU09OX0VYSVNUUyA/IEpTT05fQkVIQVZJT1JfRkFMU0UgOgorCQlmdW5jLT5vcCA9PSBJ U19KU09OX1RBQkxFID8gSlNPTl9CRUhBVklPUl9FTVBUWSA6IEpTT05fQkVIQVZJT1JfTlVM TCk7CiAKIAlyZXR1cm4ganNleHByOwogfQpAQCAtNDQzOSw2ICs0NDM4LDIwIEBAIHRyYW5z Zm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVu YykKIAkJCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24tPmV4cHIgPSBOVUxMOwogCQkJfQog CQkJYnJlYWs7CisKKwkJY2FzZSBJU19KU09OX1RBQkxFOgorCQkJanNleHByLT5yZXR1cm5p bmcgPSBtYWtlTm9kZShKc29uUmV0dXJuaW5nKTsKKwkJCWpzZXhwci0+cmV0dXJuaW5nLT5m b3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFV TFQsIC0xKTsKKwkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IGV4cHJUeXBlKGNvbnRl eHRJdGVtRXhwcik7CisJCQlqc2V4cHItPnJldHVybmluZy0+dHlwbW9kID0gLTE7CisKKwkJ CWlmIChqc2V4cHItPnJldHVybmluZy0+dHlwaWQgIT0gSlNPTkJPSUQpCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCSBlcnJtc2coIkpTT05fVEFCTEUoKSBpcyBub3QgeWV0IGltcGxlbWVudGVk IGZvciBqc29uIHR5cGUiKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBm dW5jLT5sb2NhdGlvbikpKTsKKworCQkJYnJlYWs7CiAJfQogCiAJaWYgKGV4cHJUeXBlKGNv bnRleHRJdGVtRXhwcikgIT0gSlNPTkJPSUQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfanNvbnRhYmxlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNv bnRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGY1ODE5 NDBlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29u dGFibGUuYwpAQCAtMCwwICsxLDQ2NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogcGFyc2VfanNvbnRhYmxlLmMKKyAqCSAgcGFyc2luZyBvZiBKU09OX1RBQkxFCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMu aCIKKworI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9k ZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVk ZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1 c2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgorI2luY2x1ZGUgInBh cnNlci9wYXJzZV9leHByLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKKyNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKKworLyogQ29udGV4dCBmb3IgSlNPTl9UQUJMRSB0cmFuc2Zvcm1hdGlvbiAq LwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29udGV4dAoreworCVBhcnNlU3RhdGUgKnBz dGF0ZTsJCQkJLyogcGFyc2luZyBzdGF0ZSAqLworCUpzb25UYWJsZSAgKnRhYmxlOwkJCQkv KiB1bnRyYW5zZm9ybWVkIG5vZGUgKi8KKwlUYWJsZUZ1bmMgICp0YWJsZWZ1bmM7CQkJLyog dHJhbnNmb3JtZWQgbm9kZQkqLworCUxpc3QJICAgKnBhdGhOYW1lczsJCQkvKiBsaXN0IG9m IGFsbCBwYXRoIGFuZCBjb2x1bW5zIG5hbWVzICovCisJT2lkCQkJY29udGV4dEl0ZW1UeXBp ZDsJLyogdHlwZSBvaWQgb2YgY29udGV4dCBpdGVtIChqc29uL2pzb25iKSAqLworfSBKc29u VGFibGVDb250ZXh0OworCitzdGF0aWMgSnNvblRhYmxlUGFyZW50Tm9kZSAqIHRyYW5zZm9y bUpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxlQ29udGV4dCAqY3h0LAorCQkJCQkJCQkJCQkJ CSAgIExpc3QgKmNvbHVtbnMsCisJCQkJCQkJCQkJCQkJICAgY2hhciAqcGF0aFNwZWMsCisJ CQkJCQkJCQkJCQkJICAgaW50IGxvY2F0aW9uKTsKKworc3RhdGljIE5vZGUgKgorbWFrZVN0 cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uKQoreworCUFfQ29uc3QgKm4gPSBt YWtlTm9kZShBX0NvbnN0KTsKKworCW4tPnZhbC5ub2RlLnR5cGUgPSBUX1N0cmluZzsKKwlu LT52YWwuc3ZhbC5zdmFsID0gc3RyOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwly ZXR1cm4gKE5vZGUgKiluOworfQorCisvKgorICogVHJhbnNmb3JtIEpTT05fVEFCTEUgY29s dW1uCisgKiAgIC0gcmVndWxhciBjb2x1bW4gaW50byBKU09OX1ZBTFVFKCkKKyAqICAgLSBG T1JNQVQgSlNPTiBjb2x1bW4gaW50byBKU09OX1FVRVJZKCkKKyAqICAgLSBFWElTVFMgY29s dW1uIGludG8gSlNPTl9FWElTVFMoKQorICovCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1K c29uVGFibGVDb2x1bW4oSnNvblRhYmxlQ29sdW1uICpqdGMsIE5vZGUgKmNvbnRleHRJdGVt RXhwciwKKwkJCQkJCSBMaXN0ICpwYXNzaW5nQXJncywgYm9vbCBlcnJvck9uRXJyb3IpCit7 CisJSnNvbkZ1bmNFeHByICpqZmV4cHIgPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCUpz b25Db21tb24gKmNvbW1vbiA9IG1ha2VOb2RlKEpzb25Db21tb24pOworCUpzb25PdXRwdXQg Km91dHB1dCA9IG1ha2VOb2RlKEpzb25PdXRwdXQpOworCUpzb25QYXRoU3BlYyBwYXRoc3Bl YzsKKwlKc29uRm9ybWF0ICpkZWZhdWx0X2Zvcm1hdDsKKworCWpmZXhwci0+b3AgPQorCQlq dGMtPmNvbHR5cGUgPT0gSlRDX1JFR1VMQVIgPyBJU19KU09OX1ZBTFVFIDoKKwkJanRjLT5j b2x0eXBlID09IEpUQ19FWElTVFMgPyBJU19KU09OX0VYSVNUUyA6IElTX0pTT05fUVVFUlk7 CisJamZleHByLT5jb21tb24gPSBjb21tb247CisJamZleHByLT5vdXRwdXQgPSBvdXRwdXQ7 CisJamZleHByLT5vbl9lbXB0eSA9IGp0Yy0+b25fZW1wdHk7CisJamZleHByLT5vbl9lcnJv ciA9IGp0Yy0+b25fZXJyb3I7CisJaWYgKCFqZmV4cHItPm9uX2Vycm9yICYmIGVycm9yT25F cnJvcikKKwkJamZleHByLT5vbl9lcnJvciA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhB VklPUl9FUlJPUiwgTlVMTCk7CisJamZleHByLT5vbWl0X3F1b3RlcyA9IGp0Yy0+b21pdF9x dW90ZXM7CisJamZleHByLT53cmFwcGVyID0ganRjLT53cmFwcGVyOworCWpmZXhwci0+bG9j YXRpb24gPSBqdGMtPmxvY2F0aW9uOworCisJb3V0cHV0LT50eXBlTmFtZSA9IGp0Yy0+dHlw ZU5hbWU7CisJb3V0cHV0LT5yZXR1cm5pbmcgPSBtYWtlTm9kZShKc29uUmV0dXJuaW5nKTsK KwlvdXRwdXQtPnJldHVybmluZy0+Zm9ybWF0ID0ganRjLT5mb3JtYXQ7CisKKwlkZWZhdWx0 X2Zvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVG QVVMVCwgLTEpOworCisJY29tbW9uLT5wYXRobmFtZSA9IE5VTEw7CisJY29tbW9uLT5leHBy ID0gbWFrZUpzb25WYWx1ZUV4cHIoKEV4cHIgKikgY29udGV4dEl0ZW1FeHByLCBkZWZhdWx0 X2Zvcm1hdCk7CisJY29tbW9uLT5wYXNzaW5nID0gcGFzc2luZ0FyZ3M7CisKKwlpZiAoanRj LT5wYXRoc3BlYykKKwkJcGF0aHNwZWMgPSBqdGMtPnBhdGhzcGVjOworCWVsc2UKKwl7CisJ CS8qIENvbnN0cnVjdCBkZWZhdWx0IHBhdGggYXMgJyQuImNvbHVtbl9uYW1lIicgKi8KKwkJ U3RyaW5nSW5mb0RhdGEgcGF0aDsKKworCQlpbml0U3RyaW5nSW5mbygmcGF0aCk7CisKKwkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcGF0aCwgIiQuIik7CisJCWVzY2FwZV9qc29uKCZw YXRoLCBqdGMtPm5hbWUpOworCisJCXBhdGhzcGVjID0gcGF0aC5kYXRhOworCX0KKworCWNv bW1vbi0+cGF0aHNwZWMgPSBtYWtlU3RyaW5nQ29uc3QocGF0aHNwZWMsIC0xKTsKKworCXJl dHVybiAoTm9kZSAqKSBqZmV4cHI7Cit9CisKK3N0YXRpYyBib29sCitpc0pzb25UYWJsZVBh dGhOYW1lRHVwbGljYXRlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgY29uc3QgY2hhciAqcGF0 aG5hbWUpCit7CisJTGlzdENlbGwgKmxjOworCisJZm9yZWFjaChsYywgY3h0LT5wYXRoTmFt ZXMpCisJeworCQlpZiAoIXN0cmNtcChwYXRobmFtZSwgKGNvbnN0IGNoYXIgKikgbGZpcnN0 KGxjKSkpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8q IFJlY3Vyc2l2ZWx5IHJlZ2lzdGVyIGNvbHVtbiBuYW1lIGluIHRoZSBwYXRoIG5hbWUgbGlz dC4gKi8KK3N0YXRpYyB2b2lkCityZWdpc3Rlckpzb25UYWJsZUNvbHVtbihKc29uVGFibGVD b250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUpCit7CisJaWYgKGlzSnNvblRhYmxlUGF0aE5h bWVEdXBsaWNhdGUoY3h0LCBjb2xuYW1lKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0RVUExJQ0FURV9BTElBUyksCisJCQkJIGVycm1zZygiZHVwbGljYXRl IEpTT05fVEFCTEUgY29sdW1uIG5hbWU6ICVzIiwgY29sbmFtZSksCisJCQkJIGVycmhpbnQo IkpTT05fVEFCTEUgY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QgZnJvbSBvbmUgYW5v dGhlciIpKSk7CisKKwljeHQtPnBhdGhOYW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMs IGNvbG5hbWUpOworfQorCisvKiBSZWN1cnNpdmVseSByZWdpc3RlciBhbGwgbmVzdGVkIGNv bHVtbiBuYW1lcyBpbiB0aGUgcGF0aCBuYW1lIGxpc3QuICovCitzdGF0aWMgdm9pZAorcmVn aXN0ZXJBbGxKc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgTGlzdCAq Y29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGNvbHVtbnMp CisJeworCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVt biwgbGZpcnN0KGxjKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVEKQor CQkJcmVnaXN0ZXJBbGxKc29uVGFibGVDb2x1bW5zKGN4dCwganRjLT5jb2x1bW5zKTsKKwkJ ZWxzZQorCQkJcmVnaXN0ZXJKc29uVGFibGVDb2x1bW4oY3h0LCBqdGMtPm5hbWUpOworCX0K K30KKworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtTmVzdGVkSnNvblRhYmxlQ29sdW1uKEpz b25UYWJsZUNvbnRleHQgKmN4dCwgSnNvblRhYmxlQ29sdW1uICpqdGMpCit7CisJSnNvblRh YmxlUGFyZW50Tm9kZSAqbm9kZTsKKworCW5vZGUgPSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1 bW5zKGN4dCwganRjLT5jb2x1bW5zLCBqdGMtPnBhdGhzcGVjLAorCQkJCQkJCQkJIGp0Yy0+ bG9jYXRpb24pOworCisJcmV0dXJuIChOb2RlICopIG5vZGU7Cit9CisKK3N0YXRpYyBOb2Rl ICoKK21ha2VKc29uVGFibGVTaWJsaW5nSm9pbihOb2RlICpsbm9kZSwgTm9kZSAqcm5vZGUp Cit7CisJSnNvblRhYmxlU2libGluZ05vZGUgKmpvaW4gPSBtYWtlTm9kZShKc29uVGFibGVT aWJsaW5nTm9kZSk7CisKKwlqb2luLT5sYXJnID0gbG5vZGU7CisJam9pbi0+cmFyZyA9IHJu b2RlOworCisJcmV0dXJuIChOb2RlICopIGpvaW47Cit9CisKKy8qCisgKiBSZWN1cnNpdmVs eSB0cmFuc2Zvcm0gY2hpbGQgKG5lc3RlZCkgSlNPTl9UQUJMRSBjb2x1bW5zLgorICoKKyAq IENoaWxkIGNvbHVtbnMgYXJlIHRyYW5zZm9ybWVkIGludG8gYSBiaW5hcnkgdHJlZSBvZiB1 bmlvbi1qb2luZWQKKyAqIEpzb25UYWJsZVNpYmxpbmdOb2Rlcy4KKyAqLworc3RhdGljIE5v ZGUgKgordHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRDb2x1bW5zKEpzb25UYWJsZUNvbnRleHQg KmN4dCwgTGlzdCAqY29sdW1ucykKK3sKKwlOb2RlCSAgICpyZXMgPSBOVUxMOworCUxpc3RD ZWxsICAgKmxjOworCisJLyogdHJhbnNmb3JtIGFsbCBuZXN0ZWQgY29sdW1ucyBpbnRvIHVu aW9uIGpvaW4gKi8KKwlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29s dW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChsYykpOworCQlO b2RlCSAgICpub2RlOworCisJCWlmIChqdGMtPmNvbHR5cGUgIT0gSlRDX05FU1RFRCkKKwkJ CWNvbnRpbnVlOworCisJCW5vZGUgPSB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4o Y3h0LCBqdGMpOworCisJCS8qIGpvaW4gdHJhbnNmb3JtZWQgbm9kZSB3aXRoIHByZXZpb3Vz IHNpYmxpbmcgbm9kZXMgKi8KKwkJcmVzID0gcmVzID8gbWFrZUpzb25UYWJsZVNpYmxpbmdK b2luKHJlcywgbm9kZSkgOiBub2RlOworCX0KKworCXJldHVybiByZXM7Cit9CisKKy8qIENo ZWNrIHdoZXRoZXIgdHlwZSBpcyBqc29uL2pzb25iLCBhcnJheSwgb3IgcmVjb3JkLiAqLwor c3RhdGljIGJvb2wKK3R5cGVJc0NvbXBvc2l0ZShPaWQgdHlwaWQpCit7CisJaWYgKHR5cGlk ID09IEpTT05PSUQgfHwKKwkJdHlwaWQgPT0gSlNPTkJPSUQgfHwKKwkJdHlwaWQgPT0gUkVD T1JET0lEIHx8CisJCXR5cGVfaXNfYXJyYXkodHlwaWQpKQorCQlyZXR1cm4gdHJ1ZTsKKwor CXN3aXRjaCAoZ2V0X3R5cHR5cGUodHlwaWQpKQorCXsKKwkJY2FzZSBUWVBUWVBFX0NPTVBP U0lURToKKwkJCXJldHVybiB0cnVlOworCisJCWNhc2UgVFlQVFlQRV9ET01BSU46CisJCQly ZXR1cm4gdHlwZUlzQ29tcG9zaXRlKGdldEJhc2VUeXBlKHR5cGlkKSk7CisJfQorCisJcmV0 dXJuIGZhbHNlOworfQorCisvKiBBcHBlbmQgdHJhbnNmb3JtZWQgbm9uLW5lc3RlZCBKU09O X1RBQkxFIGNvbHVtbnMgdG8gdGhlIFRhYmxlRnVuYyBub2RlICovCitzdGF0aWMgdm9pZAor YXBwZW5kSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVDb250ZXh0ICpjeHQsIExpc3QgKmNv bHVtbnMpCit7CisJTGlzdENlbGwgICAqY29sOworCVBhcnNlU3RhdGUgKnBzdGF0ZSA9IGN4 dC0+cHN0YXRlOworCUpzb25UYWJsZSAgKmp0ID0gY3h0LT50YWJsZTsKKwlUYWJsZUZ1bmMg ICp0ZiA9IGN4dC0+dGFibGVmdW5jOworCWJvb2wJCWVycm9yT25FcnJvciA9IGp0LT5vbl9l cnJvciAmJgorCQkJCQkJCSAgIGp0LT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklP Ul9FUlJPUjsKKworCWZvcmVhY2goY29sLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29s dW1uICpyYXdjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QoY29sKSk7CisJ CU9pZAkJCXR5cGlkOworCQlpbnQzMgkJdHlwbW9kOworCQlOb2RlCSAgICpjb2xleHByOwor CisJCWlmIChyYXdjLT5uYW1lKQorCQl7CisJCQkvKiBtYWtlIHN1cmUgY29sdW1uIG5hbWVz IGFyZSB1bmlxdWUgKi8KKwkJCUxpc3RDZWxsICpjb2xuYW1lOworCisJCQlmb3JlYWNoKGNv bG5hbWUsIHRmLT5jb2xuYW1lcykKKwkJCQlpZiAoIXN0cmNtcCgoY29uc3QgY2hhciAqKSBj b2xuYW1lLCByYXdjLT5uYW1lKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygiY29sdW1uIG5h bWUgXCIlc1wiIGlzIG5vdCB1bmlxdWUiLAorCQkJCQkJCQkJcmF3Yy0+bmFtZSksCisJCQkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCisJ CQl0Zi0+Y29sbmFtZXMgPSBsYXBwZW5kKHRmLT5jb2xuYW1lcywKKwkJCQkJCQkJICAgbWFr ZVN0cmluZyhwc3RyZHVwKHJhd2MtPm5hbWUpKSk7CisJCX0KKworCQkvKgorCQkgKiBEZXRl cm1pbmUgdGhlIHR5cGUgYW5kIHR5cG1vZCBmb3IgdGhlIG5ldyBjb2x1bW4uIEZPUgorCQkg KiBPUkRJTkFMSVRZIGNvbHVtbnMgYXJlIElOVEVHRVIgYnkgc3RhbmRhcmQ7IHRoZSBvdGhl cnMgYXJlCisJCSAqIHVzZXItc3BlY2lmaWVkLgorCQkgKi8KKwkJc3dpdGNoIChyYXdjLT5j b2x0eXBlKQorCQl7CisJCQljYXNlIEpUQ19GT1JfT1JESU5BTElUWToKKwkJCQljb2xleHBy ID0gTlVMTDsKKwkJCQl0eXBpZCA9IElOVDRPSUQ7CisJCQkJdHlwbW9kID0gLTE7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgSlRDX1JFR1VMQVI6CisJCQkJdHlwZW5hbWVUeXBlSWRBbmRN b2QocHN0YXRlLCByYXdjLT50eXBlTmFtZSwgJnR5cGlkLCAmdHlwbW9kKTsKKworCQkJCS8q CisJCQkJICogVXNlIGltcGxpY2l0IEZPUk1BVCBKU09OIGZvciBjb21wb3NpdGUgdHlwZXMg KGFycmF5cyBhbmQKKwkJCQkgKiByZWNvcmRzKQorCQkJCSAqLworCQkJCWlmICh0eXBlSXND b21wb3NpdGUodHlwaWQpKQorCQkJCQlyYXdjLT5jb2x0eXBlID0gSlRDX0ZPUk1BVFRFRDsK KwkJCQllbHNlIGlmIChyYXdjLT53cmFwcGVyICE9IEpTV19OT05FKQorCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJ CQkgZXJybXNnKCJjYW5ub3QgdXNlIFdJVEggV1JBUFBFUiBjbGF1c2Ugd2l0aCBzY2FsYXIg Y29sdW1ucyIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByYXdjLT5s b2NhdGlvbikpKTsKKwkJCQllbHNlIGlmIChyYXdjLT5vbWl0X3F1b3RlcykKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCQkJIGVycm1zZygiY2Fubm90IHVzZSBPTUlUIFFVT1RFUyBjbGF1c2Ugd2l0aCBzY2Fs YXIgY29sdW1ucyIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByYXdj LT5sb2NhdGlvbikpKTsKKworCQkJCS8qIEZBTExUSFJPVUdIICovCisJCQljYXNlIEpUQ19F WElTVFM6CisJCQljYXNlIEpUQ19GT1JNQVRURUQ6CisJCQkJeworCQkJCQlOb2RlCSAgICpq ZTsKKwkJCQkJQ2FzZVRlc3RFeHByICpwYXJhbSA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7 CisKKwkJCQkJcGFyYW0tPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisJCQkJCXBhcmFtLT50 eXBlSWQgPSBjeHQtPmNvbnRleHRJdGVtVHlwaWQ7CisJCQkJCXBhcmFtLT50eXBlTW9kID0g LTE7CisKKwkJCQkJamUgPSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW4ocmF3YywgKE5vZGUg KikgcGFyYW0sCisJCQkJCQkJCQkJCQkgIE5JTCwgZXJyb3JPbkVycm9yKTsKKworCQkJCQlj b2xleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGplLCBFWFBSX0tJTkRfRlJPTV9GVU5D VElPTik7CisJCQkJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCBjb2xleHByKTsK KworCQkJCQl0eXBpZCA9IGV4cHJUeXBlKGNvbGV4cHIpOworCQkJCQl0eXBtb2QgPSBleHBy VHlwbW9kKGNvbGV4cHIpOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UgSlRDX05F U1RFRDoKKwkJCQljb250aW51ZTsKKworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAi dW5rbm93biBKU09OX1RBQkxFIGNvbHVtbiB0eXBlOiAlZCIsIHJhd2MtPmNvbHR5cGUpOwor CQkJCWJyZWFrOworCQl9CisKKwkJdGYtPmNvbHR5cGVzID0gbGFwcGVuZF9vaWQodGYtPmNv bHR5cGVzLCB0eXBpZCk7CisJCXRmLT5jb2x0eXBtb2RzID0gbGFwcGVuZF9pbnQodGYtPmNv bHR5cG1vZHMsIHR5cG1vZCk7CisJCXRmLT5jb2xjb2xsYXRpb25zID0gbGFwcGVuZF9vaWQo dGYtPmNvbGNvbGxhdGlvbnMsCisJCQkJCQkJCQkJdHlwZV9pc19jb2xsYXRhYmxlKHR5cGlk KQorCQkJCQkJCQkJCQk/IERFRkFVTFRfQ09MTEFUSU9OX09JRAorCQkJCQkJCQkJCQk6IElu dmFsaWRPaWQpOworCQl0Zi0+Y29sdmFsZXhwcnMgPSBsYXBwZW5kKHRmLT5jb2x2YWxleHBy cywgY29sZXhwcik7CisJfQorfQorCisvKgorICogQ3JlYXRlIHRyYW5zZm9ybWVkIEpTT05f VEFCTEUgcGFyZW50IHBsYW4gbm9kZSBieSBhcHBlbmRpbmcgYWxsIG5vbi1uZXN0ZWQKKyAq IGNvbHVtbnMgdG8gdGhlIFRhYmxlRnVuYyBub2RlIGFuZCByZW1lbWJlcmluZyB0aGVpciBp bmRpY2VzIGluIHRoZQorICogY29sdmFsZXhwcnMgbGlzdC4KKyAqLworc3RhdGljIEpzb25U YWJsZVBhcmVudE5vZGUgKgorbWFrZVBhcmVudEpzb25UYWJsZU5vZGUoSnNvblRhYmxlQ29u dGV4dCAqY3h0LCBjaGFyICpwYXRoU3BlYywgTGlzdCAqY29sdW1ucykKK3sKKwlKc29uVGFi bGVQYXJlbnROb2RlICpub2RlID0gbWFrZU5vZGUoSnNvblRhYmxlUGFyZW50Tm9kZSk7CisK Kwlub2RlLT5wYXRoID0gbWFrZUNvbnN0KEpTT05QQVRIT0lELCAtMSwgSW52YWxpZE9pZCwg LTEsCisJCQkJCQkgICBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25wYXRoX2luLAorCQkJCQkJ CQkJCQkgICBDU3RyaW5nR2V0RGF0dW0ocGF0aFNwZWMpKSwKKwkJCQkJCSAgIGZhbHNlLCBm YWxzZSk7CisKKwkvKiBzYXZlIHN0YXJ0IG9mIGNvbHVtbiByYW5nZSAqLworCW5vZGUtPmNv bE1pbiA9IGxpc3RfbGVuZ3RoKGN4dC0+dGFibGVmdW5jLT5jb2x2YWxleHBycyk7CisKKwlh cHBlbmRKc29uVGFibGVDb2x1bW5zKGN4dCwgY29sdW1ucyk7CisKKwkvKiBzYXZlIGVuZCBv ZiBjb2x1bW4gcmFuZ2UgKi8KKwlub2RlLT5jb2xNYXggPSBsaXN0X2xlbmd0aChjeHQtPnRh YmxlZnVuYy0+Y29sdmFsZXhwcnMpIC0gMTsKKworCW5vZGUtPmVycm9yT25FcnJvciA9CisJ CWN4dC0+dGFibGUtPm9uX2Vycm9yICYmCisJCWN4dC0+dGFibGUtPm9uX2Vycm9yLT5idHlw ZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOworCisJcmV0dXJuIG5vZGU7Cit9CisKK3N0YXRp YyBKc29uVGFibGVQYXJlbnROb2RlICoKK3RyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoSnNv blRhYmxlQ29udGV4dCAqY3h0LCBMaXN0ICpjb2x1bW5zLCBjaGFyICpwYXRoU3BlYywKKwkJ CQkJCSAgaW50IGxvY2F0aW9uKQoreworCUpzb25UYWJsZVBhcmVudE5vZGUgKm5vZGU7CisK KwkvKiB0cmFuc2Zvcm0gb25seSBub24tbmVzdGVkIGNvbHVtbnMgKi8KKwlub2RlID0gbWFr ZVBhcmVudEpzb25UYWJsZU5vZGUoY3h0LCBwYXRoU3BlYywgY29sdW1ucyk7CisKKwkvKiB0 cmFuc2Zvcm0gcmVjdXJzaXZlbHkgbmVzdGVkIGNvbHVtbnMgKi8KKwlub2RlLT5jaGlsZCA9 IHRyYW5zZm9ybUpzb25UYWJsZUNoaWxkQ29sdW1ucyhjeHQsIGNvbHVtbnMpOworCisJcmV0 dXJuIG5vZGU7Cit9CisKKy8qCisgKiB0cmFuc2Zvcm1Kc29uVGFibGUgLQorICoJCQlUcmFu c2Zvcm0gYSByYXcgSnNvblRhYmxlIGludG8gVGFibGVGdW5jLgorICoKKyAqIFRyYW5zZm9y bSB0aGUgZG9jdW1lbnQtZ2VuZXJhdGluZyBleHByZXNzaW9uLCB0aGUgcm93LWdlbmVyYXRp bmcgZXhwcmVzc2lvbiwKKyAqIHRoZSBjb2x1bW4tZ2VuZXJhdGluZyBleHByZXNzaW9ucywg YW5kIHRoZSBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zLgorICovCitQYXJzZU5hbWVzcGFj ZUl0ZW0gKgordHJhbnNmb3JtSnNvblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRh YmxlICpqdCkKK3sKKwlKc29uVGFibGVDb250ZXh0IGN4dDsKKwlUYWJsZUZ1bmMgICp0ZiA9 IG1ha2VOb2RlKFRhYmxlRnVuYyk7CisJSnNvbkZ1bmNFeHByICpqZmUgPSBtYWtlTm9kZShK c29uRnVuY0V4cHIpOworCUpzb25Db21tb24gKmpzY29tbW9uOworCWNoYXIJICAgKnJvb3RQ YXRoOworCWJvb2wJCWlzX2xhdGVyYWw7CisKKwljeHQucHN0YXRlID0gcHN0YXRlOworCWN4 dC50YWJsZSA9IGp0OworCWN4dC50YWJsZWZ1bmMgPSB0ZjsKKwljeHQucGF0aE5hbWVzID0g TklMOworCisJcmVnaXN0ZXJBbGxKc29uVGFibGVDb2x1bW5zKCZjeHQsIGp0LT5jb2x1bW5z KTsKKworCWpzY29tbW9uID0gY29weU9iamVjdChqdC0+Y29tbW9uKTsKKwlqc2NvbW1vbi0+ cGF0aHNwZWMgPSBtYWtlU3RyaW5nQ29uc3QocHN0cmR1cCgiJCIpLCAtMSk7CisKKwlqZmUt Pm9wID0gSVNfSlNPTl9UQUJMRTsKKwlqZmUtPmNvbW1vbiA9IGpzY29tbW9uOworCWpmZS0+ b25fZXJyb3IgPSBqdC0+b25fZXJyb3I7CisJamZlLT5sb2NhdGlvbiA9IGp0LT5jb21tb24t PmxvY2F0aW9uOworCisJLyoKKwkgKiBXZSBtYWtlIGxhdGVyYWxfb25seSBuYW1lcyBvZiB0 aGlzIGxldmVsIHZpc2libGUsIHdoZXRoZXIgb3Igbm90IHRoZQorCSAqIFJhbmdlVGFibGVG dW5jIGlzIGV4cGxpY2l0bHkgbWFya2VkIExBVEVSQUwuICBUaGlzIGlzIG5lZWRlZCBmb3Ig U1FMCisJICogc3BlYyBjb21wbGlhbmNlIGFuZCBzZWVtcyB1c2VmdWwgb24gY29udmVuaWVu Y2UgZ3JvdW5kcyBmb3IgYWxsCisJICogZnVuY3Rpb25zIGluIEZST00uCisJICoKKwkgKiAo TEFURVJBTCBjYW4ndCBuZXN0IHdpdGhpbiBhIHNpbmdsZSBwc3RhdGUgbGV2ZWwsIHNvIHdl IGRvbid0IG5lZWQKKwkgKiBzYXZlL3Jlc3RvcmUgbG9naWMgaGVyZS4pCisJICovCisJQXNz ZXJ0KCFwc3RhdGUtPnBfbGF0ZXJhbF9hY3RpdmUpOworCXBzdGF0ZS0+cF9sYXRlcmFsX2Fj dGl2ZSA9IHRydWU7CisKKwl0Zi0+ZnVuY3R5cGUgPSBURlRfSlNPTl9UQUJMRTsKKwl0Zi0+ ZG9jZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSBqZmUsIEVYUFJfS0lO RF9GUk9NX0ZVTkNUSU9OKTsKKworCWN4dC5jb250ZXh0SXRlbVR5cGlkID0gZXhwclR5cGUo dGYtPmRvY2V4cHIpOworCisJaWYgKCFJc0EoanQtPmNvbW1vbi0+cGF0aHNwZWMsIEFfQ29u c3QpIHx8CisJCWNhc3ROb2RlKEFfQ29uc3QsIGp0LT5jb21tb24tPnBhdGhzcGVjKS0+dmFs Lm5vZGUudHlwZSAhPSBUX1N0cmluZykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygib25seSBz dHJpbmcgY29uc3RhbnRzIHN1cHBvcnRlZCBpbiBKU09OX1RBQkxFIHBhdGggc3BlY2lmaWNh dGlvbiIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkJZXhw ckxvY2F0aW9uKGp0LT5jb21tb24tPnBhdGhzcGVjKSkpKTsKKworCXJvb3RQYXRoID0gY2Fz dE5vZGUoQV9Db25zdCwganQtPmNvbW1vbi0+cGF0aHNwZWMpLT52YWwuc3ZhbC5zdmFsOwor CisJdGYtPnBsYW4gPSAoTm9kZSAqKSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKCZjeHQs IGp0LT5jb2x1bW5zLCByb290UGF0aCwKKwkJCQkJCQkJCQkJCSAganQtPmNvbW1vbi0+bG9j YXRpb24pOworCisJdGYtPm9yZGluYWxpdHljb2wgPSAtMTsJCS8qIHVuZGVmaW5lIG9yZGlu YWxpdHkgY29sdW1uIG51bWJlciAqLworCXRmLT5sb2NhdGlvbiA9IGp0LT5sb2NhdGlvbjsK KworCXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2ZSA9IGZhbHNlOworCisJLyoKKwkgKiBNYXJr IHRoZSBSVEUgYXMgTEFURVJBTCBpZiB0aGUgdXNlciBzYWlkIExBVEVSQUwgZXhwbGljaXRs eSwgb3IgaWYKKwkgKiB0aGVyZSBhcmUgYW55IGxhdGVyYWwgY3Jvc3MtcmVmZXJlbmNlcyBp biBpdC4KKwkgKi8KKwlpc19sYXRlcmFsID0ganQtPmxhdGVyYWwgfHwgY29udGFpbl92YXJz X29mX2xldmVsKChOb2RlICopIHRmLCAwKTsKKworCXJldHVybiBhZGRSYW5nZVRhYmxlRW50 cnlGb3JUYWJsZUZ1bmMocHN0YXRlLAorCQkJCQkJCQkJCSAgdGYsIGp0LT5hbGlhcywgaXNf bGF0ZXJhbCwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmlu ZGV4IGNiOWUxNzdiNWUuLmUwNmMyM2QwZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y ZWxhdGlvbi5jCkBAIC0xOTc4LDcgKzE5NzgsOCBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JU YWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgIGJvb2wgaW5Gcm9tQ2wp CiB7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7Ci0J Y2hhcgkgICAqcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFzbmFtZSA6IHBzdHJkdXAo InhtbHRhYmxlIik7CisJY2hhcgkgICAqcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFz bmFtZSA6CisJCXBzdHJkdXAodGYtPmZ1bmN0eXBlID09IFRGVF9YTUxUQUJMRSA/ICJ4bWx0 YWJsZSIgOiAianNvbl90YWJsZSIpOwogCUFsaWFzCSAgICplcmVmOwogCWludAkJCW51bWFs aWFzZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA4MjljMGY5NDk3 Li43Y2M1MDIwODYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFy Z2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0xOTky LDYgKzE5OTIsOSBAQCBGaWd1cmVDb2xuYW1lSW50ZXJuYWwoTm9kZSAqbm9kZSwgY2hhciAq Km5hbWUpCiAJCQkJY2FzZSBJU19KU09OX0VYSVNUUzoKIAkJCQkJKm5hbWUgPSAianNvbl9l eGlzdHMiOwogCQkJCQlyZXR1cm4gMjsKKwkJCQljYXNlIElTX0pTT05fVEFCTEU6CisJCQkJ CSpuYW1lID0gImpzb25fdGFibGUiOworCQkJCQlyZXR1cm4gMjsKIAkJCX0KIAkJCWJyZWFr OwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25w YXRoX2V4ZWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5k ZXggNzgxMWZhMzFlMC4uZjAwNzhiNzg3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoX2V4ZWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jCkBAIC02MSw5ICs2MSwxMSBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRl ICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRl ICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUg Im5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInJlZ2V4L3JlZ2V4LmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCkBAIC03NCw2 ICs3Niw4IEBACiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvanNv bi5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAKQEAgLTE1NSw2 ICsxNTksNTcgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblZhbHVlTGlzdEl0ZXJhdG9yCiAJTGlz dENlbGwgICAqbmV4dDsKIH0gSnNvblZhbHVlTGlzdEl0ZXJhdG9yOwogCisvKiBTdHJ1Y3R1 cmVzIGZvciBKU09OX1RBQkxFIGV4ZWN1dGlvbiAgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25U YWJsZVNjYW5TdGF0ZSBKc29uVGFibGVTY2FuU3RhdGU7Cit0eXBlZGVmIHN0cnVjdCBKc29u VGFibGVKb2luU3RhdGUgSnNvblRhYmxlSm9pblN0YXRlOworCitzdHJ1Y3QgSnNvblRhYmxl U2NhblN0YXRlCit7CisJSnNvblRhYmxlU2NhblN0YXRlICpwYXJlbnQ7CisJSnNvblRhYmxl Sm9pblN0YXRlICpuZXN0ZWQ7CisJTWVtb3J5Q29udGV4dCBtY3h0OworCUpzb25QYXRoICAg KnBhdGg7CisJTGlzdAkgICAqYXJnczsKKwlKc29uVmFsdWVMaXN0IGZvdW5kOworCUpzb25W YWx1ZUxpc3RJdGVyYXRvciBpdGVyOworCURhdHVtCQljdXJyZW50OworCWludAkJCW9yZGlu YWw7CisJYm9vbAkJY3VycmVudElzTnVsbDsKKwlib29sCQllcnJvck9uRXJyb3I7CisJYm9v bAkJYWR2YW5jZU5lc3RlZDsKKwlib29sCQlyZXNldDsKK307CisKK3N0cnVjdCBKc29uVGFi bGVKb2luU3RhdGUKK3sKKwl1bmlvbgorCXsKKwkJc3RydWN0CisJCXsKKwkJCUpzb25UYWJs ZUpvaW5TdGF0ZSAqbGVmdDsKKwkJCUpzb25UYWJsZUpvaW5TdGF0ZSAqcmlnaHQ7CisJCQli b29sCQlhZHZhbmNlUmlnaHQ7CisJCX0JCQlqb2luOworCQlKc29uVGFibGVTY2FuU3RhdGUg c2NhbjsKKwl9CQkJdTsKKwlib29sCQlpc19qb2luOworfTsKKworLyogcmFuZG9tIG51bWJl ciB0byBpZGVudGlmeSBKc29uVGFibGVDb250ZXh0ICovCisjZGVmaW5lIEpTT05fVEFCTEVf Q09OVEVYVF9NQUdJQwk0MTgzNTI4NjcKKwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29u dGV4dAoreworCWludAkJCW1hZ2ljOworCXN0cnVjdAorCXsKKwkJRXhwclN0YXRlICAqZXhw cjsKKwkJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuOworCX0JCSAgICpjb2xleHByczsKKwlK c29uVGFibGVTY2FuU3RhdGUgcm9vdDsKKwlib29sCQllbXB0eTsKK30gSnNvblRhYmxlQ29u dGV4dDsKKwogLyogc3RyaWN0L2xheCBmbGFncyBpcyBkZWNvbXBvc2VkIGludG8gZm91ciBb dW5dd3JhcC9lcnJvciBmbGFncyAqLwogI2RlZmluZSBqc3BTdHJpY3RBYnNlbnNlT2ZFcnJv cnMoY3h0KQkoIShjeHQpLT5sYXhNb2RlKQogI2RlZmluZSBqc3BBdXRvVW53cmFwKGN4dCkJ CQkJKChjeHQpLT5sYXhNb2RlKQpAQCAtMjQ1LDYgKzMwMCw3IEBAIHN0YXRpYyBKc29uUGF0 aEV4ZWNSZXN1bHQgZ2V0QXJyYXlJbmRleChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJ CQkJCQkJCQkJSnNvblBhdGhJdGVtICpqc3AsIEpzb25iVmFsdWUgKmpiLCBpbnQzMiAqaW5k ZXgpOwogc3RhdGljIEpzb25CYXNlT2JqZWN0SW5mbyBzZXRCYXNlT2JqZWN0KEpzb25QYXRo RXhlY0NvbnRleHQgKmN4dCwKIAkJCQkJCQkJCQlKc29uYlZhbHVlICpqYnYsIGludDMyIGlk KTsKK3N0YXRpYyB2b2lkIEpzb25WYWx1ZUxpc3RDbGVhcihKc29uVmFsdWVMaXN0ICpqdmwp Owogc3RhdGljIHZvaWQgSnNvblZhbHVlTGlzdEFwcGVuZChKc29uVmFsdWVMaXN0ICpqdmws IEpzb25iVmFsdWUgKmpidik7CiBzdGF0aWMgaW50CUpzb25WYWx1ZUxpc3RMZW5ndGgoY29u c3QgSnNvblZhbHVlTGlzdCAqanZsKTsKIHN0YXRpYyBib29sIEpzb25WYWx1ZUxpc3RJc0Vt cHR5KEpzb25WYWx1ZUxpc3QgKmp2bCk7CkBAIC0yNjIsNiArMzE4LDEyIEBAIHN0YXRpYyBK c29uYlZhbHVlICp3cmFwSXRlbXNJbkFycmF5KGNvbnN0IEpzb25WYWx1ZUxpc3QgKml0ZW1z KTsKIHN0YXRpYyBpbnQJY29tcGFyZURhdGV0aW1lKERhdHVtIHZhbDEsIE9pZCB0eXBpZDEs IERhdHVtIHZhbDIsIE9pZCB0eXBpZDIsCiAJCQkJCQkJYm9vbCB1c2VUeiwgYm9vbCAqaGF2 ZV9lcnJvcik7CiAKKworc3RhdGljIEpzb25UYWJsZUpvaW5TdGF0ZSAqSnNvblRhYmxlSW5p dFBsYW5TdGF0ZShKc29uVGFibGVDb250ZXh0ICpjeHQsCisJCQkJCQkJCQlOb2RlICpwbGFu LCBKc29uVGFibGVTY2FuU3RhdGUgKnBhcmVudCk7CitzdGF0aWMgYm9vbCBKc29uVGFibGVO ZXh0Um93KEpzb25UYWJsZVNjYW5TdGF0ZSAqc2Nhbik7CisKKwogLyoqKioqKioqKioqKioq KioqKiBVc2VyIGludGVyZmFjZSB0byBKc29uUGF0aCBleGVjdXRvciAqKioqKioqKioqKioq KioqKioqKi8KIAogLyoKQEAgLTI0NTgsNiArMjUyMCwxMyBAQCBzZXRCYXNlT2JqZWN0KEpz b25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvbmJWYWx1ZSAqamJ2LCBpbnQzMiBpZCkKIAly ZXR1cm4gYmFzZU9iamVjdDsKIH0KIAorc3RhdGljIHZvaWQKK0pzb25WYWx1ZUxpc3RDbGVh cihKc29uVmFsdWVMaXN0ICpqdmwpCit7CisJanZsLT5zaW5nbGV0b24gPSBOVUxMOworCWp2 bC0+bGlzdCA9IE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkCiBKc29uVmFsdWVMaXN0QXBwZW5k KEpzb25WYWx1ZUxpc3QgKmp2bCwgSnNvbmJWYWx1ZSAqamJ2KQogewpAQCAtMzA2NywzICsz MTM2LDM3MCBAQCBKc29uSXRlbUZyb21EYXR1bShEYXR1bSB2YWwsIE9pZCB0eXBpZCwgaW50 MzIgdHlwbW9kLCBKc29uYlZhbHVlICpyZXMpCiAJCQkJCQkJImNhc3RlZCB0byBzdXBwb3J0 ZWQganNvbnBhdGggdHlwZXMuIikpKTsKIAl9CiB9CisKKy8qKioqKioqKioqKioqKioqKioq KioqKiogSlNPTl9UQUJMRSBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisvKgorICogUmV0dXJucyBwcml2YXRlIGRhdGEgZnJvbSBleGVjdXRvciBzdGF0ZS4g RW5zdXJlIHZhbGlkaXR5IGJ5IGNoZWNrIHdpdGgKKyAqIE1BR0lDIG51bWJlci4KKyAqLwor c3RhdGljIGlubGluZSBKc29uVGFibGVDb250ZXh0ICoKK0dldEpzb25UYWJsZUNvbnRleHQo VGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqZm5hbWUpCit7CisJSnNv blRhYmxlQ29udGV4dCAqcmVzdWx0OworCisJaWYgKCFJc0Eoc3RhdGUsIFRhYmxlRnVuY1Nj YW5TdGF0ZSkpCisJCWVsb2coRVJST1IsICIlcyBjYWxsZWQgd2l0aCBpbnZhbGlkIFRhYmxl RnVuY1NjYW5TdGF0ZSIsIGZuYW1lKTsKKwlyZXN1bHQgPSAoSnNvblRhYmxlQ29udGV4dCAq KSBzdGF0ZS0+b3BhcXVlOworCWlmIChyZXN1bHQtPm1hZ2ljICE9IEpTT05fVEFCTEVfQ09O VEVYVF9NQUdJQykKKwkJZWxvZyhFUlJPUiwgIiVzIGNhbGxlZCB3aXRoIGludmFsaWQgVGFi bGVGdW5jU2NhblN0YXRlIiwgZm5hbWUpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyog UmVjdXJzaXZlbHkgaW5pdGlhbGl6ZSBKU09OX1RBQkxFIHNjYW4gc3RhdGUgKi8KK3N0YXRp YyB2b2lkCitKc29uVGFibGVJbml0U2NhblN0YXRlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwg SnNvblRhYmxlU2NhblN0YXRlICpzY2FuLAorCQkJCQkgICBKc29uVGFibGVQYXJlbnROb2Rl ICpub2RlLCBKc29uVGFibGVTY2FuU3RhdGUgKnBhcmVudCwKKwkJCQkJICAgTGlzdCAqYXJn cywgTWVtb3J5Q29udGV4dCBtY3h0KQoreworCWludAkJCWk7CisKKwlzY2FuLT5wYXJlbnQg PSBwYXJlbnQ7CisJc2Nhbi0+ZXJyb3JPbkVycm9yID0gbm9kZS0+ZXJyb3JPbkVycm9yOwor CXNjYW4tPnBhdGggPSBEYXR1bUdldEpzb25QYXRoUChub2RlLT5wYXRoLT5jb25zdHZhbHVl KTsKKwlzY2FuLT5hcmdzID0gYXJnczsKKwlzY2FuLT5tY3h0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKG1jeHQsICJKc29uVGFibGVDb250ZXh0IiwKKwkJCQkJCQkJCSAgIEFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCXNjYW4tPm5lc3RlZCA9IG5vZGUtPmNoaWxkID8KKwkJSnNv blRhYmxlSW5pdFBsYW5TdGF0ZShjeHQsIG5vZGUtPmNoaWxkLCBzY2FuKSA6IE5VTEw7CisJ c2Nhbi0+Y3VycmVudCA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwlzY2FuLT5jdXJyZW50 SXNOdWxsID0gdHJ1ZTsKKworCWZvciAoaSA9IG5vZGUtPmNvbE1pbjsgaSA8PSBub2RlLT5j b2xNYXg7IGkrKykKKwkJY3h0LT5jb2xleHByc1tpXS5zY2FuID0gc2NhbjsKK30KKworLyog UmVjdXJzaXZlbHkgaW5pdGlhbGl6ZSBKU09OX1RBQkxFIHNjYW4gc3RhdGUgKi8KK3N0YXRp YyBKc29uVGFibGVKb2luU3RhdGUgKgorSnNvblRhYmxlSW5pdFBsYW5TdGF0ZShKc29uVGFi bGVDb250ZXh0ICpjeHQsIE5vZGUgKnBsYW4sCisJCQkJCSAgIEpzb25UYWJsZVNjYW5TdGF0 ZSAqcGFyZW50KQoreworCUpzb25UYWJsZUpvaW5TdGF0ZSAqc3RhdGUgPSBwYWxsb2MwKHNp emVvZigqc3RhdGUpKTsKKworCWlmIChJc0EocGxhbiwgSnNvblRhYmxlU2libGluZ05vZGUp KQorCXsKKwkJSnNvblRhYmxlU2libGluZ05vZGUgKmpvaW4gPSBjYXN0Tm9kZShKc29uVGFi bGVTaWJsaW5nTm9kZSwgcGxhbik7CisKKwkJc3RhdGUtPmlzX2pvaW4gPSB0cnVlOworCQlz dGF0ZS0+dS5qb2luLmxlZnQgPSBKc29uVGFibGVJbml0UGxhblN0YXRlKGN4dCwgam9pbi0+ bGFyZywgcGFyZW50KTsKKwkJc3RhdGUtPnUuam9pbi5yaWdodCA9IEpzb25UYWJsZUluaXRQ bGFuU3RhdGUoY3h0LCBqb2luLT5yYXJnLCBwYXJlbnQpOworCX0KKwllbHNlCisJeworCQlK c29uVGFibGVQYXJlbnROb2RlICpub2RlID0gY2FzdE5vZGUoSnNvblRhYmxlUGFyZW50Tm9k ZSwgcGxhbik7CisKKwkJc3RhdGUtPmlzX2pvaW4gPSBmYWxzZTsKKworCQlKc29uVGFibGVJ bml0U2NhblN0YXRlKGN4dCwgJnN0YXRlLT51LnNjYW4sIG5vZGUsIHBhcmVudCwKKwkJCQkJ CQkgICBwYXJlbnQtPmFyZ3MsIHBhcmVudC0+bWN4dCk7CisJfQorCisJcmV0dXJuIHN0YXRl OworfQorCisvKgorICogSnNvblRhYmxlSW5pdE9wYXF1ZQorICoJCUZpbGwgaW4gVGFibGVG dW5jU2NhblN0YXRlLT5vcGFxdWUgZm9yIEpzb25UYWJsZSBwcm9jZXNzb3IKKyAqLworc3Rh dGljIHZvaWQKK0pzb25UYWJsZUluaXRPcGFxdWUoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0 ZSwgaW50IG5hdHRzKQoreworCUpzb25UYWJsZUNvbnRleHQgKmN4dDsKKwlQbGFuU3RhdGUg ICpwcyA9ICZzdGF0ZS0+c3MucHM7CisJVGFibGVGdW5jU2NhbiAgKnRmcyA9IGNhc3ROb2Rl KFRhYmxlRnVuY1NjYW4sIHBzLT5wbGFuKTsKKwlUYWJsZUZ1bmMgICp0ZiA9IHRmcy0+dGFi bGVmdW5jOworCUpzb25FeHByICAgKmNpID0gY2FzdE5vZGUoSnNvbkV4cHIsIHRmLT5kb2Nl eHByKTsKKwlKc29uVGFibGVQYXJlbnROb2RlICpyb290ID0gY2FzdE5vZGUoSnNvblRhYmxl UGFyZW50Tm9kZSwgdGYtPnBsYW4pOworCUxpc3QJICAgKmFyZ3MgPSBOSUw7CisJTGlzdENl bGwgICAqbGM7CisJaW50CQkJaTsKKworCWN4dCA9IHBhbGxvYzAoc2l6ZW9mKEpzb25UYWJs ZUNvbnRleHQpKTsKKwljeHQtPm1hZ2ljID0gSlNPTl9UQUJMRV9DT05URVhUX01BR0lDOwor CisJaWYgKGNpLT5wYXNzaW5nX3ZhbHVlcykKKwl7CisJCUxpc3RDZWxsICAgKmV4cHJsYzsK KwkJTGlzdENlbGwgICAqbmFtZWxjOworCisJCWZvcmJvdGgoZXhwcmxjLCBjaS0+cGFzc2lu Z192YWx1ZXMsCisJCQkJbmFtZWxjLCBjaS0+cGFzc2luZ19uYW1lcykKKwkJeworCQkJRXhw cgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChleHBybGMpOworCQkJU3RyaW5nCSAgICpu YW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBuYW1lbGMpOworCQkJSnNvblBhdGhWYXJpYWJs ZUV2YWxDb250ZXh0ICp2YXIgPSBwYWxsb2Moc2l6ZW9mKCp2YXIpKTsKKworCQkJdmFyLT5u YW1lID0gcHN0cmR1cChuYW1lLT5zdmFsKTsKKwkJCXZhci0+dHlwaWQgPSBleHByVHlwZSgo Tm9kZSAqKSBleHByKTsKKwkJCXZhci0+dHlwbW9kID0gZXhwclR5cG1vZCgoTm9kZSAqKSBl eHByKTsKKwkJCXZhci0+ZXN0YXRlID0gRXhlY0luaXRFeHByKGV4cHIsIHBzKTsKKwkJCXZh ci0+ZWNvbnRleHQgPSBwcy0+cHNfRXhwckNvbnRleHQ7CisJCQl2YXItPm1jeHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKKwkJCXZhci0+ZXZhbHVhdGVkID0gZmFsc2U7CisJCQl2YXIt PnZhbHVlID0gKERhdHVtKSAwOworCQkJdmFyLT5pc251bGwgPSB0cnVlOworCisJCQlhcmdz ID0gbGFwcGVuZChhcmdzLCB2YXIpOworCQl9CisJfQorCisJY3h0LT5jb2xleHBycyA9IHBh bGxvYyhzaXplb2YoKmN4dC0+Y29sZXhwcnMpICoKKwkJCQkJCSAgIGxpc3RfbGVuZ3RoKHRm LT5jb2x2YWxleHBycykpOworCisJSnNvblRhYmxlSW5pdFNjYW5TdGF0ZShjeHQsICZjeHQt PnJvb3QsIHJvb3QsIE5VTEwsIGFyZ3MsCisJCQkJCQkgICBDdXJyZW50TWVtb3J5Q29udGV4 dCk7CisKKwlpID0gMDsKKworCWZvcmVhY2gobGMsIHRmLT5jb2x2YWxleHBycykKKwl7CisJ CUV4cHIJICAgKmV4cHIgPSBsZmlyc3QobGMpOworCisJCWN4dC0+Y29sZXhwcnNbaV0uZXhw ciA9CisJCQlFeGVjSW5pdEV4cHJXaXRoQ2FzZVZhbHVlKGV4cHIsIHBzLAorCQkJCQkJCQkJ ICAmY3h0LT5jb2xleHByc1tpXS5zY2FuLT5jdXJyZW50LAorCQkJCQkJCQkJICAmY3h0LT5j b2xleHByc1tpXS5zY2FuLT5jdXJyZW50SXNOdWxsKTsKKworCQlpKys7CisJfQorCisJc3Rh dGUtPm9wYXF1ZSA9IGN4dDsKK30KKworLyogUmVzZXQgc2NhbiBpdGVyYXRvciB0byB0aGUg YmVnaW5uaW5nIG9mIHRoZSBpdGVtIGxpc3QgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVS ZXNjYW4oSnNvblRhYmxlU2NhblN0YXRlICpzY2FuKQoreworCUpzb25WYWx1ZUxpc3RJbml0 SXRlcmF0b3IoJnNjYW4tPmZvdW5kLCAmc2Nhbi0+aXRlcik7CisJc2Nhbi0+Y3VycmVudCA9 IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwlzY2FuLT5jdXJyZW50SXNOdWxsID0gdHJ1ZTsK KwlzY2FuLT5hZHZhbmNlTmVzdGVkID0gZmFsc2U7CisJc2Nhbi0+b3JkaW5hbCA9IDA7Cit9 CisKKy8qIFJlc2V0IGNvbnRleHQgaXRlbSBvZiBhIHNjYW4sIGV4ZWN1dGUgSlNPTiBwYXRo IGFuZCByZXNldCBhIHNjYW4gKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVSZXNldENvbnRl eHRJdGVtKEpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbiwgRGF0dW0gaXRlbSkKK3sKKwlNZW1v cnlDb250ZXh0IG9sZGN4dDsKKwlKc29uUGF0aEV4ZWNSZXN1bHQgcmVzOworCUpzb25iCQkq anMgPSAoSnNvbmIgKikgRGF0dW1HZXRKc29uYlAoaXRlbSk7CisKKwlKc29uVmFsdWVMaXN0 Q2xlYXIoJnNjYW4tPmZvdW5kKTsKKworCU1lbW9yeUNvbnRleHRSZXNldE9ubHkoc2Nhbi0+ bWN4dCk7CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc2Nhbi0+bWN4dCk7 CisKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoc2Nhbi0+cGF0aCwgc2Nhbi0+YXJncywgRXZh bEpzb25QYXRoVmFyLCBqcywKKwkJCQkJCSAgc2Nhbi0+ZXJyb3JPbkVycm9yLCAmc2Nhbi0+ Zm91bmQsIGZhbHNlIC8qIEZJWE1FICovKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjeHQpOworCisJaWYgKGpwZXJJc0Vycm9yKHJlcykpCisJeworCQlBc3NlcnQoIXNjYW4t PmVycm9yT25FcnJvcik7CisJCUpzb25WYWx1ZUxpc3RDbGVhcigmc2Nhbi0+Zm91bmQpOwkv KiBFTVBUWSBPTiBFUlJPUiBjYXNlICovCisJfQorCisJSnNvblRhYmxlUmVzY2FuKHNjYW4p OworfQorCisvKgorICogSnNvblRhYmxlU2V0RG9jdW1lbnQKKyAqCQlJbnN0YWxsIHRoZSBp bnB1dCBkb2N1bWVudAorICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlU2V0RG9jdW1lbnQo VGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSwgRGF0dW0gdmFsdWUpCit7CisJSnNvblRhYmxl Q29udGV4dCAqY3h0ID0gR2V0SnNvblRhYmxlQ29udGV4dChzdGF0ZSwgIkpzb25UYWJsZVNl dERvY3VtZW50Iik7CisKKwlKc29uVGFibGVSZXNldENvbnRleHRJdGVtKCZjeHQtPnJvb3Qs IHZhbHVlKTsKK30KKworLyoKKyAqIEZldGNoIG5leHQgcm93IGZyb20gYSB1bmlvbiBqb2lu ZWQgc2Nhbi4KKyAqCisgKiBSZXR1cm5lZCBmYWxzZSBhdCB0aGUgZW5kIG9mIGEgc2Nhbiwg dHJ1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitKc29uVGFibGVOZXh0Sm9pblJv dyhKc29uVGFibGVKb2luU3RhdGUgKnN0YXRlKQoreworCWlmICghc3RhdGUtPmlzX2pvaW4p CisJCXJldHVybiBKc29uVGFibGVOZXh0Um93KCZzdGF0ZS0+dS5zY2FuKTsKKworCWlmICgh c3RhdGUtPnUuam9pbi5hZHZhbmNlUmlnaHQpCisJeworCQkvKiBmZXRjaCBuZXh0IG91dGVy IHJvdyAqLworCQlpZiAoSnNvblRhYmxlTmV4dEpvaW5Sb3coc3RhdGUtPnUuam9pbi5sZWZ0 KSkKKwkJCXJldHVybiB0cnVlOworCisJCXN0YXRlLT51LmpvaW4uYWR2YW5jZVJpZ2h0ID0g dHJ1ZTsJLyogbmV4dCBpbm5lciByb3cgKi8KKwl9CisKKwkvKiBmZXRjaCBuZXh0IGlubmVy IHJvdyAqLworCXJldHVybiBKc29uVGFibGVOZXh0Sm9pblJvdyhzdGF0ZS0+dS5qb2luLnJp Z2h0KTsKK30KKworLyogUmVjdXJzaXZlbHkgc2V0ICdyZXNldCcgZmxhZyBvZiBzY2FuIGFu ZCBpdHMgY2hpbGQgbm9kZXMgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVKb2luUmVzZXQo SnNvblRhYmxlSm9pblN0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPmlzX2pvaW4pCisJ eworCQlKc29uVGFibGVKb2luUmVzZXQoc3RhdGUtPnUuam9pbi5sZWZ0KTsKKwkJSnNvblRh YmxlSm9pblJlc2V0KHN0YXRlLT51LmpvaW4ucmlnaHQpOworCQlzdGF0ZS0+dS5qb2luLmFk dmFuY2VSaWdodCA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQlzdGF0ZS0+dS5zY2FuLnJl c2V0ID0gdHJ1ZTsKKwkJc3RhdGUtPnUuc2Nhbi5hZHZhbmNlTmVzdGVkID0gZmFsc2U7CisK KwkJaWYgKHN0YXRlLT51LnNjYW4ubmVzdGVkKQorCQkJSnNvblRhYmxlSm9pblJlc2V0KHN0 YXRlLT51LnNjYW4ubmVzdGVkKTsKKwl9Cit9CisKKy8qCisgKiBGZXRjaCBuZXh0IHJvdyBm cm9tIGEgc2ltcGxlIHNjYW4gd2l0aCBvdXRlciBqb2luZWQgbmVzdGVkIHN1YnNjYW5zLgor ICoKKyAqIFJldHVybmVkIGZhbHNlIGF0IHRoZSBlbmQgb2YgYSBzY2FuLCB0cnVlIG90aGVy d2lzZS4KKyAqLworc3RhdGljIGJvb2wKK0pzb25UYWJsZU5leHRSb3coSnNvblRhYmxlU2Nh blN0YXRlICpzY2FuKQoreworCUpzb25iVmFsdWUgKmpidjsKKwlNZW1vcnlDb250ZXh0IG9s ZGN4dDsKKworCS8qIHJlc2V0IGNvbnRleHQgaXRlbSBpZiByZXF1ZXN0ZWQgKi8KKwlpZiAo c2Nhbi0+cmVzZXQpCisJeworCQlBc3NlcnQoIXNjYW4tPnBhcmVudC0+Y3VycmVudElzTnVs bCk7CisJCUpzb25UYWJsZVJlc2V0Q29udGV4dEl0ZW0oc2Nhbiwgc2Nhbi0+cGFyZW50LT5j dXJyZW50KTsKKwkJc2Nhbi0+cmVzZXQgPSBmYWxzZTsKKwl9CisKKwlpZiAoc2Nhbi0+YWR2 YW5jZU5lc3RlZCkKKwl7CisJCS8qIGZldGNoIG5leHQgbmVzdGVkIHJvdyAqLworCQlpZiAo SnNvblRhYmxlTmV4dEpvaW5Sb3coc2Nhbi0+bmVzdGVkKSkKKwkJCXJldHVybiB0cnVlOwor CisJCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBmYWxzZTsKKwl9CisKKwkvKiBmZXRjaCBuZXh0 IHJvdyAqLworCWpidiA9IEpzb25WYWx1ZUxpc3ROZXh0KCZzY2FuLT5mb3VuZCwgJnNjYW4t Pml0ZXIpOworCisJaWYgKCFqYnYpCisJeworCQlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdl dERhdHVtKE5VTEwpOworCQlzY2FuLT5jdXJyZW50SXNOdWxsID0gdHJ1ZTsKKwkJcmV0dXJu IGZhbHNlOwkvKiBlbmQgb2Ygc2NhbiAqLworCX0KKworCS8qIHNldCBjdXJyZW50IHJvdyBp dGVtICovCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNjYW4tPm1jeHQpOwor CXNjYW4tPmN1cnJlbnQgPSBKc29uYlBHZXREYXR1bShKc29uYlZhbHVlVG9Kc29uYihqYnYp KTsKKwlzY2FuLT5jdXJyZW50SXNOdWxsID0gZmFsc2U7CisJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7CisKKwlzY2FuLT5vcmRpbmFsKys7CisKKwlpZiAoc2Nhbi0+bmVzdGVk KQorCXsKKwkJSnNvblRhYmxlSm9pblJlc2V0KHNjYW4tPm5lc3RlZCk7CisJCXNjYW4tPmFk dmFuY2VOZXN0ZWQgPSBKc29uVGFibGVOZXh0Sm9pblJvdyhzY2FuLT5uZXN0ZWQpOworCX0K KworCXJldHVybiB0cnVlOworfQorCisvKgorICogSnNvblRhYmxlRmV0Y2hSb3cKKyAqCQlQ cmVwYXJlIHRoZSBuZXh0ICJjdXJyZW50IiB0dXBsZSBmb3IgdXBjb21pbmcgR2V0VmFsdWUg Y2FsbHMuCisgKgkJUmV0dXJucyBGQUxTRSBpZiB0aGUgcm93LWZpbHRlciBleHByZXNzaW9u IHJldHVybmVkIG5vIG1vcmUgcm93cy4KKyAqLworc3RhdGljIGJvb2wKK0pzb25UYWJsZUZl dGNoUm93KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpCit7CisJSnNvblRhYmxlQ29udGV4 dCAqY3h0ID0gR2V0SnNvblRhYmxlQ29udGV4dChzdGF0ZSwgIkpzb25UYWJsZUZldGNoUm93 Iik7CisKKwlpZiAoY3h0LT5lbXB0eSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIEpz b25UYWJsZU5leHRSb3coJmN4dC0+cm9vdCk7Cit9CisKKy8qCisgKiBKc29uVGFibGVHZXRW YWx1ZQorICoJCVJldHVybiB0aGUgdmFsdWUgZm9yIGNvbHVtbiBudW1iZXIgJ2NvbG51bScg Zm9yIHRoZSBjdXJyZW50IHJvdy4KKyAqCisgKiBUaGlzIGxlYWtzIG1lbW9yeSwgc28gYmUg c3VyZSB0byByZXNldCBvZnRlbiB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzCisgKiBjYWxs ZWQuCisgKi8KK3N0YXRpYyBEYXR1bQorSnNvblRhYmxlR2V0VmFsdWUoVGFibGVGdW5jU2Nh blN0YXRlICpzdGF0ZSwgaW50IGNvbG51bSwKKwkJCQkgIE9pZCB0eXBpZCwgaW50MzIgdHlw bW9kLCBib29sICppc251bGwpCit7CisJSnNvblRhYmxlQ29udGV4dCAqY3h0ID0gR2V0SnNv blRhYmxlQ29udGV4dChzdGF0ZSwgIkpzb25UYWJsZUdldFZhbHVlIik7CisJRXhwckNvbnRl eHQgKmVjb250ZXh0ID0gc3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCUV4cHJTdGF0 ZSAgKmVzdGF0ZSA9IGN4dC0+Y29sZXhwcnNbY29sbnVtXS5leHByOworCUpzb25UYWJsZVNj YW5TdGF0ZSAqc2NhbiA9IGN4dC0+Y29sZXhwcnNbY29sbnVtXS5zY2FuOworCURhdHVtCQly ZXN1bHQ7CisKKwlpZiAoc2Nhbi0+Y3VycmVudElzTnVsbCkgLyogTlVMTCBmcm9tIG91dGVy L3VuaW9uIGpvaW4gKi8KKwl7CisJCXJlc3VsdCA9IChEYXR1bSkgMDsKKwkJKmlzbnVsbCA9 IHRydWU7CisJfQorCWVsc2UgaWYgKGVzdGF0ZSkJLyogcmVndWxhciBjb2x1bW4gKi8KKwl7 CisJCXJlc3VsdCA9IEV4ZWNFdmFsRXhwcihlc3RhdGUsIGVjb250ZXh0LCBpc251bGwpOwor CX0KKwllbHNlCisJeworCQlyZXN1bHQgPSBJbnQzMkdldERhdHVtKHNjYW4tPm9yZGluYWwp OwkvKiBvcmRpbmFsaXR5IGNvbHVtbiAqLworCQkqaXNudWxsID0gZmFsc2U7CisJfQorCisJ cmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEpzb25UYWJsZURlc3Ryb3lPcGFxdWUKKyAq Lworc3RhdGljIHZvaWQKK0pzb25UYWJsZURlc3Ryb3lPcGFxdWUoVGFibGVGdW5jU2NhblN0 YXRlICpzdGF0ZSkKK3sKKwlKc29uVGFibGVDb250ZXh0ICpjeHQgPSBHZXRKc29uVGFibGVD b250ZXh0KHN0YXRlLCAiSnNvblRhYmxlRGVzdHJveU9wYXF1ZSIpOworCisJLyogbm90IHZh bGlkIGFueW1vcmUgKi8KKwljeHQtPm1hZ2ljID0gMDsKKworCXN0YXRlLT5vcGFxdWUgPSBO VUxMOworfQorCitjb25zdCBUYWJsZUZ1bmNSb3V0aW5lIEpzb25iVGFibGVSb3V0aW5lID0K K3sKKwlKc29uVGFibGVJbml0T3BhcXVlLAorCUpzb25UYWJsZVNldERvY3VtZW50LAorCU5V TEwsCisJTlVMTCwKKwlOVUxMLAorCUpzb25UYWJsZUZldGNoUm93LAorCUpzb25UYWJsZUdl dFZhbHVlLAorCUpzb25UYWJsZURlc3Ryb3lPcGFxdWUKK307CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMKaW5kZXggYmM1YjU0NWZkMS4uNDYzNTY4YmJmZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNDk4LDYgKzQ5OCw4IEBAIHN0YXRpYyBjaGFyICpm bGF0dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIHN0YXRpYyB2b2lkIGdldF9yZWxvcHRp b25zKFN0cmluZ0luZm8gYnVmLCBEYXR1bSByZWxvcHRpb25zKTsKIHN0YXRpYyB2b2lkIGdl dF9qc29uX3BhdGhfc3BlYyhOb2RlICpwYXRoX3NwZWMsIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCwKIAkJCQkJCQkgICBib29sIHNob3dpbXBsaWNpdCk7CitzdGF0aWMgdm9pZCBnZXRf anNvbl90YWJsZV9jb2x1bW5zKFRhYmxlRnVuYyAqdGYsIEpzb25UYWJsZVBhcmVudE5vZGUg Km5vZGUsCisJCQkJCQkJCSAgIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93 aW1wbGljaXQpOwogCiAjZGVmaW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8g IiIgOiAiT05MWSAiKQogCkBAIC04NDc2LDcgKzg0NzgsOCBAQCBnZXRfanNvbl9iZWhhdmlv cihKc29uQmVoYXZpb3IgKmJlaGF2aW9yLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAv KgogICogZ2V0X2pzb25fZXhwcl9vcHRpb25zCiAgKgotICogUGFyc2UgYmFjayBjb21tb24g b3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMuCisgKiBQ YXJzZSBiYWNrIGNvbW1vbiBvcHRpb25zIGZvciBKU09OX1FVRVJZLCBKU09OX1ZBTFVFLCBK U09OX0VYSVNUUyBhbmQKKyAqIEpTT05fVEFCTEUgY29sdW1ucy4KICAqLwogc3RhdGljIHZv aWQKIGdldF9qc29uX2V4cHJfb3B0aW9ucyhKc29uRXhwciAqanNleHByLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQsCkBAIC05NzIzLDYgKzk3MjYsOSBAQCBnZXRfcnVsZV9leHByKE5v ZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJY2FzZSBJU19KU09O X0VYSVNUUzoKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9FWElT VFMoIik7CiAJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCWVsb2coRVJST1Is ICJ1bmV4cGVjdGVkIEpzb25FeHByIHR5cGU6ICVkIiwgamV4cHItPm9wKTsKKwkJCQkJCWJy ZWFrOwogCQkJCX0KIAogCQkJCWdldF9ydWxlX2V4cHIoamV4cHItPmZvcm1hdHRlZF9leHBy LCBjb250ZXh0LCBzaG93aW1wbGljaXQpOwpAQCAtMTA5OTcsMTYgKzExMDAzLDE0IEBAIGdl dF9zdWJsaW5rX2V4cHIoU3ViTGluayAqc3VibGluaywgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0KQogCiAKIC8qIC0tLS0tLS0tLS0KLSAqIGdldF90YWJsZWZ1bmMJCQktIFBhcnNlIGJh Y2sgYSB0YWJsZSBmdW5jdGlvbgorICogZ2V0X3htbHRhYmxlCQkJLSBQYXJzZSBiYWNrIGEg WE1MVEFCTEUgZnVuY3Rpb24KICAqIC0tLS0tLS0tLS0KICAqLwogc3RhdGljIHZvaWQKLWdl dF90YWJsZWZ1bmMoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBi b29sIHNob3dpbXBsaWNpdCkKK2dldF94bWx0YWJsZShUYWJsZUZ1bmMgKnRmLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQogewogCVN0cmluZ0luZm8J YnVmID0gY29udGV4dC0+YnVmOwogCi0JLyogWE1MVEFCTEUgaXMgdGhlIG9ubHkgZXhpc3Rp bmcgaW1wbGVtZW50YXRpb24uICAqLwotCiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICJYTUxUQUJMRSgiKTsKIAogCWlmICh0Zi0+bnNfdXJpcyAhPSBOSUwpCkBAIC0xMTA5Nyw2 ICsxMTEwMSwyMjAgQEAgZ2V0X3RhYmxlZnVuYyhUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQogCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJyknKTsKIH0KIAorLyoKKyAqIGdldF9qc29uX25lc3RlZF9jb2x1bW5zIC0g UGFyc2UgYmFjayBuZXN0ZWQgSlNPTl9UQUJMRSBjb2x1bW5zCisgKi8KK3N0YXRpYyB2b2lk CitnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBOb2RlICpu b2RlLAorCQkJCQkJCSAgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBs aWNpdCwKKwkJCQkJCQkgIGJvb2wgbmVlZGNvbW1hKQoreworCWlmIChJc0Eobm9kZSwgSnNv blRhYmxlU2libGluZ05vZGUpKQorCXsKKwkJSnNvblRhYmxlU2libGluZ05vZGUgKm4gPSAo SnNvblRhYmxlU2libGluZ05vZGUgKikgbm9kZTsKKworCQlnZXRfanNvbl90YWJsZV9uZXN0 ZWRfY29sdW1ucyh0Ziwgbi0+bGFyZywgY29udGV4dCwgc2hvd2ltcGxpY2l0LAorCQkJCQkJ CQkJICBuZWVkY29tbWEpOworCQlnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyh0Ziwg bi0+cmFyZywgY29udGV4dCwgc2hvd2ltcGxpY2l0LCB0cnVlKTsKKwl9CisJZWxzZQorCXsK KwkJIEpzb25UYWJsZVBhcmVudE5vZGUgKm4gPSBjYXN0Tm9kZShKc29uVGFibGVQYXJlbnRO b2RlLCBub2RlKTsKKworCQkgaWYgKG5lZWRjb21tYSkKKwkJCSBhcHBlbmRTdHJpbmdJbmZv Q2hhcihjb250ZXh0LT5idWYsICcsJyk7CisKKwkJIGFwcGVuZFN0cmluZ0luZm9DaGFyKGNv bnRleHQtPmJ1ZiwgJyAnKTsKKwkJIGFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICAi TkVTVEVEIFBBVEggIiwgMCwgMCwgMCk7CisJCSBnZXRfY29uc3RfZXhwcihuLT5wYXRoLCBj b250ZXh0LCAtMSk7CisJCSBnZXRfanNvbl90YWJsZV9jb2x1bW5zKHRmLCBuLCBjb250ZXh0 LCBzaG93aW1wbGljaXQpOworCX0KK30KKworLyoKKyAqIGdldF9qc29uX3RhYmxlX2NvbHVt bnMgLSBQYXJzZSBiYWNrIEpTT05fVEFCTEUgY29sdW1ucworICovCitzdGF0aWMgdm9pZAor Z2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFibGVQYXJlbnRO b2RlICpub2RlLAorCQkJCQkgICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hv d2ltcGxpY2l0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCUpzb25F eHByICAgKmpleHByID0gY2FzdE5vZGUoSnNvbkV4cHIsIHRmLT5kb2NleHByKTsKKwlMaXN0 Q2VsbCAgICpsY19jb2xuYW1lOworCUxpc3RDZWxsICAgKmxjX2NvbHR5cGU7CisJTGlzdENl bGwgICAqbGNfY29sdHlwbW9kOworCUxpc3RDZWxsICAgKmxjX2NvbHZhcmV4cHI7CisJaW50 CQkJY29sbnVtID0gMDsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwlh cHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiQ09MVU1OUyAoIiwgMCwgMCwgMCk7CisK KwlpZiAoUFJFVFRZX0lOREVOVChjb250ZXh0KSkKKwkJY29udGV4dC0+aW5kZW50TGV2ZWwg Kz0gUFJFVFRZSU5ERU5UX1ZBUjsKKworCWZvcmZvdXIobGNfY29sbmFtZSwgdGYtPmNvbG5h bWVzLAorCQkJbGNfY29sdHlwZSwgdGYtPmNvbHR5cGVzLAorCQkJbGNfY29sdHlwbW9kLCB0 Zi0+Y29sdHlwbW9kcywKKwkJCWxjX2NvbHZhcmV4cHIsIHRmLT5jb2x2YWxleHBycykKKwl7 CisJCWNoYXIJICAgKmNvbG5hbWUgPSBzdHJWYWwobGZpcnN0KGxjX2NvbG5hbWUpKTsKKwkJ SnNvbkV4cHIgICAqY29sZXhwcjsKKwkJT2lkCQkJdHlwaWQ7CisJCWludDMyCQl0eXBtb2Q7 CisJCWJvb2wJCW9yZGluYWxpdHk7CisJCUpzb25CZWhhdmlvclR5cGUgZGVmYXVsdF9iZWhh dmlvcjsKKworCQl0eXBpZCA9IGxmaXJzdF9vaWQobGNfY29sdHlwZSk7CisJCXR5cG1vZCA9 IGxmaXJzdF9pbnQobGNfY29sdHlwbW9kKTsKKwkJY29sZXhwciA9IGNhc3ROb2RlKEpzb25F eHByLCBsZmlyc3QobGNfY29sdmFyZXhwcikpOworCisJCWlmIChjb2xudW0gPCBub2RlLT5j b2xNaW4pCisJCXsKKwkJCWNvbG51bSsrOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAo Y29sbnVtID4gbm9kZS0+Y29sTWF4KQorCQkJYnJlYWs7CisKKwkJaWYgKGNvbG51bSA+IG5v ZGUtPmNvbE1pbikKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwor CQljb2xudW0rKzsKKworCQlvcmRpbmFsaXR5ID0gIWNvbGV4cHI7CisKKwkJYXBwZW5kQ29u dGV4dEtleXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDApOworCisJCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAiJXMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbG5hbWUpLAorCQkJCQkJIG9y ZGluYWxpdHkgPyAiRk9SIE9SRElOQUxJVFkiIDoKKwkJCQkJCSBmb3JtYXRfdHlwZV93aXRo X3R5cGVtb2QodHlwaWQsIHR5cG1vZCkpOworCQlpZiAob3JkaW5hbGl0eSkKKwkJCWNvbnRp bnVlOworCisJCWlmIChjb2xleHByLT5vcCA9PSBJU19KU09OX0VYSVNUUykKKwkJeworCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgRVhJU1RTIik7CisJCQlkZWZhdWx0X2Jl aGF2aW9yID0gSlNPTl9CRUhBVklPUl9GQUxTRTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlm IChjb2xleHByLT5vcCA9PSBJU19KU09OX1FVRVJZKQorCQkJeworCQkJCWNoYXIJCXR5cGNh dGVnb3J5OworCQkJCWJvb2wJCXR5cGlzcHJlZmVycmVkOworCisJCQkJZ2V0X3R5cGVfY2F0 ZWdvcnlfcHJlZmVycmVkKHR5cGlkLCAmdHlwY2F0ZWdvcnksICZ0eXBpc3ByZWZlcnJlZCk7 CisKKwkJCQlpZiAodHlwY2F0ZWdvcnkgPT0gVFlQQ0FURUdPUllfU1RSSU5HKQorCQkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKKwkJCQkJCQkJCQkgICBjb2xleHByLT5mb3Jt YXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9KU09OQiA/CisJCQkJCQkJCQkJICAgIiBG T1JNQVQgSlNPTkIiIDogIiBGT1JNQVQgSlNPTiIpOworCQkJfQorCisJCQlkZWZhdWx0X2Jl aGF2aW9yID0gSlNPTl9CRUhBVklPUl9OVUxMOworCQl9CisKKwkJaWYgKGpleHByLT5vbl9l cnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCWRlZmF1bHRfYmVoYXZp b3IgPSBKU09OX0JFSEFWSU9SX0VSUk9SOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLCAiIFBBVEggIik7CisKKwkJZ2V0X2pzb25fcGF0aF9zcGVjKGNvbGV4cHItPnBhdGhf c3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQlnZXRfanNvbl9leHByX29wdGlv bnMoY29sZXhwciwgY29udGV4dCwgZGVmYXVsdF9iZWhhdmlvcik7CisJfQorCisJaWYgKG5v ZGUtPmNoaWxkKQorCQlnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyh0Ziwgbm9kZS0+ Y2hpbGQsIGNvbnRleHQsIHNob3dpbXBsaWNpdCwKKwkJCQkJCQkJCSAgbm9kZS0+Y29sTWF4 ID49IG5vZGUtPmNvbE1pbik7CisKKwlpZiAoUFJFVFRZX0lOREVOVChjb250ZXh0KSkKKwkJ Y29udGV4dC0+aW5kZW50TGV2ZWwgLT0gUFJFVFRZSU5ERU5UX1ZBUjsKKworCWFwcGVuZENv bnRleHRLZXl3b3JkKGNvbnRleHQsICIpIiwgMCwgMCwgMCk7Cit9CisKKy8qIC0tLS0tLS0t LS0KKyAqIGdldF9qc29uX3RhYmxlCQkJLSBQYXJzZSBiYWNrIGEgSlNPTl9UQUJMRSBmdW5j dGlvbgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGUo VGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBs aWNpdCkKK3sKKwlTdHJpbmdJbmZvCWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKKwlKc29uRXhwciAg ICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCB0Zi0+ZG9jZXhwcik7CisJSnNvblRhYmxl UGFyZW50Tm9kZSAqcm9vdCA9IGNhc3ROb2RlKEpzb25UYWJsZVBhcmVudE5vZGUsIHRmLT5w bGFuKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9UQUJMRSgiKTsK KworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZl bCArPSBQUkVUVFlJTkRFTlRfVkFSOworCisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4 dCwgIiIsIDAsIDAsIDApOworCisJZ2V0X3J1bGVfZXhwcihqZXhwci0+Zm9ybWF0dGVkX2V4 cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KGJ1ZiwgIiwgIik7CisKKwlnZXRfY29uc3RfZXhwcihyb290LT5wYXRoLCBjb250ZXh0LCAt MSk7CisKKwlpZiAoamV4cHItPnBhc3NpbmdfdmFsdWVzKQorCXsKKwkJTGlzdENlbGwgICAq bGMxLCAqbGMyOworCQlib29sCQluZWVkY29tbWEgPSBmYWxzZTsKKworCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQs ICJQQVNTSU5HICIsIDAsIDAsIDApOworCisJCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQp KQorCQkJY29udGV4dC0+aW5kZW50TGV2ZWwgKz0gUFJFVFRZSU5ERU5UX1ZBUjsKKworCQlm b3Jib3RoKGxjMSwgamV4cHItPnBhc3NpbmdfbmFtZXMsCisJCQkJbGMyLCBqZXhwci0+cGFz c2luZ192YWx1ZXMpCisJCXsKKwkJCWlmIChuZWVkY29tbWEpCisJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICIsICIpOworCQkJbmVlZGNvbW1hID0gdHJ1ZTsKKworCQkJYXBw ZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDApOworCisJCQlnZXRfcnVs ZV9leHByKChOb2RlICopIGxmaXJzdChsYzIpLCBjb250ZXh0LCBmYWxzZSk7CisJCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIo KGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwpCisJCQkJKTsKKwkJfQorCisJCWlm IChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQkJY29udGV4dC0+aW5kZW50TGV2ZWwgLT0g UFJFVFRZSU5ERU5UX1ZBUjsKKwl9CisKKwlnZXRfanNvbl90YWJsZV9jb2x1bW5zKHRmLCBy b290LCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJaWYgKGpleHByLT5vbl9lcnJvci0+ YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9FTVBUWSkKKwkJZ2V0X2pzb25fYmVoYXZpb3IoamV4 cHItPm9uX2Vycm9yLCBjb250ZXh0LCAiRVJST1IiKTsKKworCWlmIChQUkVUVFlfSU5ERU5U KGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZlbCAtPSBQUkVUVFlJTkRFTlRfVkFS OworCisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIikiLCAwLCAwLCAwKTsKK30K KworLyogLS0tLS0tLS0tLQorICogZ2V0X3RhYmxlZnVuYwkJCS0gUGFyc2UgYmFjayBhIHRh YmxlIGZ1bmN0aW9uCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfdGFi bGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBz aG93aW1wbGljaXQpCit7CisJLyogWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHRoZSBv bmx5IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucy4gICovCisKKwlpZiAodGYtPmZ1bmN0eXBl ID09IFRGVF9YTUxUQUJMRSkKKwkJZ2V0X3htbHRhYmxlKHRmLCBjb250ZXh0LCBzaG93aW1w bGljaXQpOworCWVsc2UgaWYgKHRmLT5mdW5jdHlwZSA9PSBURlRfSlNPTl9UQUJMRSkKKwkJ Z2V0X2pzb25fdGFibGUodGYsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7Cit9CisKIC8qIC0t LS0tLS0tLS0KICAqIGdldF9mcm9tX2NsYXVzZQkJCS0gUGFyc2UgYmFjayBhIEZST00gY2xh dXNlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWp1bWJs ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5jCmluZGV4IDcxMjA4 MzZjNzAuLjJmZmEwMTQ2MTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cXVlcnlqdW1ibGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxl LmMKQEAgLTg3OCw5ICs4NzgsMTEgQEAgSnVtYmxlRXhwcihKdW1ibGVTdGF0ZSAqanN0YXRl LCBOb2RlICpub2RlKQogCQkJewogCQkJCVRhYmxlRnVuYyAgKnRhYmxlZnVuYyA9IChUYWJs ZUZ1bmMgKikgbm9kZTsKIAorCQkJCUFQUF9KVU1CKHRhYmxlZnVuYy0+ZnVuY3R5cGUpOwog CQkJCUp1bWJsZUV4cHIoanN0YXRlLCB0YWJsZWZ1bmMtPmRvY2V4cHIpOwogCQkJCUp1bWJs ZUV4cHIoanN0YXRlLCB0YWJsZWZ1bmMtPnJvd2V4cHIpOwogCQkJCUp1bWJsZUV4cHIoanN0 YXRlLCAoTm9kZSAqKSB0YWJsZWZ1bmMtPmNvbGV4cHJzKTsKKwkJCQlKdW1ibGVFeHByKGpz dGF0ZSwgKE5vZGUgKikgdGFibGVmdW5jLT5jb2x2YWxleHBycyk7CiAJCQl9CiAJCQlicmVh azsKIAkJY2FzZSBUX1RhYmxlU2FtcGxlQ2xhdXNlOgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmgKaW5kZXggOWNlOGRmMTdlNS4uOWRmNzBlNmYwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj RXhwci5oCkBAIC04NTAsNiArODUwLDEwIEBAIGV4dGVybiBEYXR1bSBFeGVjUHJlcGFyZUpz b25JdGVtQ29lcmNpb24oc3RydWN0IEpzb25iVmFsdWUgKml0ZW0sCiAJCQkJCQkJCQkJIHN0 cnVjdCBKc29uQ29lcmNpb25TdGF0ZSAqKnBqY3N0YXRlKTsKIGV4dGVybiBib29sIEV4ZWNF dmFsSnNvbk5lZWRzU3ViVHJhbnNhY3Rpb24oSnNvbkV4cHIgKmpzZXhwciwKIAkJCQkJCQkJ CQkJc3RydWN0IEpzb25Db2VyY2lvbnNTdGF0ZSAqKTsKK2V4dGVybiBEYXR1bSBFeGVjRXZh bEV4cHJQYXNzaW5nQ2FzZVZhbHVlKEV4cHJTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJCSAg RXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwsCisJCQkJCQkJCQkJICBEYXR1 bSBjYXNldmFsX2RhdHVtLAorCQkJCQkJCQkJCSAgYm9vbCBjYXNldmFsX2lzbnVsbCk7CiAK IGV4dGVybiB2b2lkIEV4ZWNBZ2dJbml0R3JvdXAoQWdnU3RhdGUgKmFnZ3N0YXRlLCBBZ2dT dGF0ZVBlclRyYW5zIHBlcnRyYW5zLCBBZ2dTdGF0ZVBlckdyb3VwIHBlcmdyb3VwLAogCQkJ CQkJCSBFeHByQ29udGV4dCAqYWdnY29udGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA5MGMx NDUxZTFjLi4xYmNmNjRmOWMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTIxMSw2ICsyMTEsOCBA QCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfSnNvbkV4cHIsCiAJVF9Kc29uQ29lcmNpb24s CiAJVF9Kc29uSXRlbUNvZXJjaW9ucywKKwlUX0pzb25UYWJsZVBhcmVudE5vZGUsCisJVF9K c29uVGFibGVTaWJsaW5nTm9kZSwKIAogCS8qCiAJICogVEFHUyBGT1IgRVhQUkVTU0lPTiBT VEFURSBOT0RFUyAoZXhlY25vZGVzLmgpCkBAIC01MTAsNiArNTEyLDkgQEAgdHlwZWRlZiBl bnVtIE5vZGVUYWcKIAlUX0pzb25GdW5jRXhwciwKIAlUX0pzb25Jc1ByZWRpY2F0ZSwKIAlU X0pzb25FeGlzdHNQcmVkaWNhdGUsCisJVF9Kc29uVGFibGUsCisJVF9Kc29uVGFibGVDb2x1 bW4sCisJVF9Kc29uVGFibGVQbGFuLAogCVRfSnNvbkNvbW1vbiwKIAlUX0pzb25Bcmd1bWVu dCwKIAlUX0pzb25LZXlWYWx1ZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBjZjE5 YTIyNWRiLi5hYWFmOGQ4YjNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNTY0 LDYgKzE1NjQsMTkgQEAgdHlwZWRlZiBlbnVtIEpzb25RdW90ZXMKIAlKU19RVU9URVNfT01J VAkJCQkvKiBPTUlUIFFVT1RFUyAqLwogfSBKc29uUXVvdGVzOwogCisvKgorICogSnNvblRh YmxlQ29sdW1uVHlwZSAtCisgKgkJZW51bWVyYXRpb24gb2YgSlNPTl9UQUJMRSBjb2x1bW4g dHlwZXMKKyAqLwordHlwZWRlZiBlbnVtCit7CisJSlRDX0ZPUl9PUkRJTkFMSVRZLAorCUpU Q19SRUdVTEFSLAorCUpUQ19FWElTVFMsCisJSlRDX0ZPUk1BVFRFRCwKKwlKVENfTkVTVEVE LAorfSBKc29uVGFibGVDb2x1bW5UeXBlOworCiAvKgogICogSnNvblBhdGhTcGVjIC0KICAq CQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIHBhdGggY29uc3RhbnQKQEAgLTE2MjMsNiArMTYz Niw0MSBAQCB0eXBlZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIKIAlpbnQJCQlsb2NhdGlvbjsJ CS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IEpzb25GdW5jRXhw cjsKIAorLyoKKyAqIEpzb25UYWJsZUNvbHVtbiAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXBy ZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFIGNvbHVtbgorICovCit0eXBlZGVmIHN0cnVjdCBK c29uVGFibGVDb2x1bW4KK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25UYWJsZUNvbHVtblR5 cGUgY29sdHlwZTsJLyogY29sdW1uIHR5cGUgKi8KKwljaGFyCSAgICpuYW1lOwkJCQkvKiBj b2x1bW4gbmFtZSAqLworCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJCS8qIGNvbHVtbiB0eXBl IG5hbWUgKi8KKwlKc29uUGF0aFNwZWMgcGF0aHNwZWM7CQkJLyogcGF0aCBzcGVjaWZpY2F0 aW9uLCBpZiBhbnkgKi8KKwlKc29uRm9ybWF0ICpmb3JtYXQ7CQkJCS8qIEpTT04gZm9ybWF0 IGNsYXVzZSwgaWYgc3BlY2lmaWVkICovCisJSnNvbldyYXBwZXIJd3JhcHBlcjsJCQkvKiBX UkFQUEVSIGJlaGF2aW9yIGZvciBmb3JtYXR0ZWQgY29sdW1ucyAqLworCWJvb2wJCW9taXRf cXVvdGVzOwkJLyogb21pdCBvciBrZWVwIHF1b3RlcyBvbiBzY2FsYXIgc3RyaW5ncz8gKi8K KwlMaXN0CSAgICpjb2x1bW5zOwkJCS8qIG5lc3RlZCBjb2x1bW5zICovCisJSnNvbkJlaGF2 aW9yICpvbl9lbXB0eTsJCQkvKiBPTiBFTVBUWSBiZWhhdmlvciAqLworCUpzb25CZWhhdmlv ciAqb25fZXJyb3I7CQkJLyogT04gRVJST1IgYmVoYXZpb3IgKi8KKwlpbnQJCQlsb2NhdGlv bjsJCQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uVGFi bGVDb2x1bW47CisKKy8qCisgKiBKc29uVGFibGUgLQorICoJCXVudHJhbnNmb3JtZWQgcmVw cmVzZW50YXRpb24gb2YgSlNPTl9UQUJMRQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFi bGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25Db21tb24gKmNvbW1vbjsJCQkJCS8qIGNv bW1vbiBKU09OIHBhdGggc3ludGF4IGZpZWxkcyAqLworCUxpc3QJICAgKmNvbHVtbnM7CQkJ CS8qIGxpc3Qgb2YgSnNvblRhYmxlQ29sdW1uICovCisJSnNvbkJlaGF2aW9yICpvbl9lcnJv cjsJCQkJLyogT04gRVJST1IgYmVoYXZpb3IsIGlmIHNwZWNpZmllZCAqLworCUFsaWFzCSAg ICphbGlhczsJCQkJCS8qIHRhYmxlIGFsaWFzIGluIEZST00gY2xhdXNlICovCisJYm9vbAkJ bGF0ZXJhbDsJCQkJLyogZG9lcyBpdCBoYXZlIExBVEVSQUwgcHJlZml4PyAqLworCWludAkJ CWxvY2F0aW9uOwkJCQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwor fSBKc29uVGFibGU7CisKIC8qCiAgKiBKc29uS2V5VmFsdWUgLQogICoJCXVudHJhbnNmb3Jt ZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTiBvYmplY3Qga2V5LXZhbHVlIHBhaXIgZm9yCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDkwMTA4YmVmZWIuLmRkZDBjMWE4ZTEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL3ByaW1ub2Rlcy5oCkBAIC03Myw4ICs3MywxNCBAQCB0eXBlZGVmIHN0cnVjdCBS YW5nZVZhcgogCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlm IHVua25vd24gKi8KIH0gUmFuZ2VWYXI7CiAKK3R5cGVkZWYgZW51bSBUYWJsZUZ1bmNUeXBl Cit7CisJVEZUX1hNTFRBQkxFLAorCVRGVF9KU09OX1RBQkxFCit9IFRhYmxlRnVuY1R5cGU7 CisKIC8qCi0gKiBUYWJsZUZ1bmMgLSBub2RlIGZvciBhIHRhYmxlIGZ1bmN0aW9uLCBzdWNo IGFzIFhNTFRBQkxFLgorICogVGFibGVGdW5jIC0gbm9kZSBmb3IgYSB0YWJsZSBmdW5jdGlv biwgc3VjaCBhcyBYTUxUQUJMRSBvciBKU09OX1RBQkxFLgogICoKICAqIEVudHJpZXMgaW4g dGhlIG5zX25hbWVzIGxpc3QgYXJlIGVpdGhlciBTdHJpbmcgbm9kZXMgY29udGFpbmluZwog ICogbGl0ZXJhbCBuYW1lc3BhY2UgbmFtZXMsIG9yIE5VTEwgcG9pbnRlcnMgdG8gcmVwcmVz ZW50IERFRkFVTFQuCkBAIC04Miw2ICs4OCw3IEBAIHR5cGVkZWYgc3RydWN0IFJhbmdlVmFy CiB0eXBlZGVmIHN0cnVjdCBUYWJsZUZ1bmMKIHsKIAlOb2RlVGFnCQl0eXBlOworCVRhYmxl RnVuY1R5cGUgZnVuY3R5cGU7CQkvKiBYTUxUQUJMRSBvciBKU09OX1RBQkxFICovCiAJTGlz dAkgICAqbnNfdXJpczsJCS8qIGxpc3Qgb2YgbmFtZXNwYWNlIFVSSSBleHByZXNzaW9ucyAq LwogCUxpc3QJICAgKm5zX25hbWVzOwkJLyogbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgb3Ig TlVMTCAqLwogCU5vZGUJICAgKmRvY2V4cHI7CQkvKiBpbnB1dCBkb2N1bWVudCBleHByZXNz aW9uICovCkBAIC05Miw3ICs5OSw5IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlRnVuYwogCUxp c3QJICAgKmNvbGNvbGxhdGlvbnM7CS8qIE9JRCBsaXN0IG9mIGNvbHVtbiBjb2xsYXRpb24g T0lEcyAqLwogCUxpc3QJICAgKmNvbGV4cHJzOwkJLyogbGlzdCBvZiBjb2x1bW4gZmlsdGVy IGV4cHJlc3Npb25zICovCiAJTGlzdAkgICAqY29sZGVmZXhwcnM7CS8qIGxpc3Qgb2YgY29s dW1uIGRlZmF1bHQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpjb2x2YWxleHByczsJLyog bGlzdCBvZiBjb2x1bW4gdmFsdWUgZXhwcmVzc2lvbnMgKi8KIAlCaXRtYXBzZXQgICpub3Ru dWxsczsJCS8qIG51bGxhYmlsaXR5IGZsYWcgZm9yIGVhY2ggb3V0cHV0IGNvbHVtbiAqLwor CU5vZGUJICAgKnBsYW47CQkJLyogSlNPTl9UQUJMRSBwbGFuICovCiAJaW50CQkJb3JkaW5h bGl0eWNvbDsJLyogY291bnRzIGZyb20gMDsgLTEgaWYgbm9uZSBzcGVjaWZpZWQgKi8KIAlp bnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICov CiB9IFRhYmxlRnVuYzsKQEAgLTEyNDMsNyArMTI1Miw4IEBAIHR5cGVkZWYgZW51bSBKc29u RXhwck9wCiB7CiAJSVNfSlNPTl9WQUxVRSwJCQkJLyogSlNPTl9WQUxVRSgpICovCiAJSVNf SlNPTl9RVUVSWSwJCQkJLyogSlNPTl9RVUVSWSgpICovCi0JSVNfSlNPTl9FWElTVFMJCQkJ LyogSlNPTl9FWElTVFMoKSAqLworCUlTX0pTT05fRVhJU1RTLAkJCQkvKiBKU09OX0VYSVNU UygpICovCisJSVNfSlNPTl9UQUJMRQkJCQkvKiBKU09OX1RBQkxFKCkgKi8KIH0gSnNvbkV4 cHJPcDsKIAogLyoKQEAgLTE0NTcsNiArMTQ2NywzMSBAQCB0eXBlZGVmIHN0cnVjdCBKc29u RXhwcgogCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVu a25vd24gKi8KIH0gSnNvbkV4cHI7CiAKKy8qCisgKiBKc29uVGFibGVQYXJlbnROb2RlIC0K KyAqCQl0cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBwYXJlbnQgSlNPTl9UQUJMRSBw bGFuIG5vZGUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlUGFyZW50Tm9kZQorewor CU5vZGVUYWcJCXR5cGU7CisJQ29uc3QJICAgKnBhdGg7CQkvKiBqc29ucGF0aCBjb25zdGFu dCAqLworCU5vZGUJICAgKmNoaWxkOwkJLyogbmVzdGVkIGNvbHVtbnMsIGlmIGFueSAqLwor CWludAkJCWNvbE1pbjsJCS8qIG1pbiBjb2x1bW4gaW5kZXggaW4gdGhlIHJlc3VsdGluZyBj b2x1bW4gbGlzdCAqLworCWludAkJCWNvbE1heDsJCS8qIG1heCBjb2x1bW4gaW5kZXggaW4g dGhlIHJlc3VsdGluZyBjb2x1bW4gbGlzdCAqLworCWJvb2wJCWVycm9yT25FcnJvcjsgLyog RVJST1IvRU1QVFkgT04gRVJST1IgYmVoYXZpb3IgKi8KK30gSnNvblRhYmxlUGFyZW50Tm9k ZTsKKworLyoKKyAqIEpzb25UYWJsZVNpYmxpbmdOb2RlIC0KKyAqCQl0cmFuc2Zvcm1lZCBy ZXByZXNlbnRhdGlvbiBvZiBqb2luZWQgc2libGluZyBKU09OX1RBQkxFIHBsYW4gbm9kZQor ICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVTaWJsaW5nTm9kZQoreworCU5vZGVUYWcJ CXR5cGU7CisJTm9kZQkgICAqbGFyZzsJCS8qIGxlZnQgam9pbiBub2RlICovCisJTm9kZQkg ICAqcmFyZzsJCS8qIHJpZ2h0IGpvaW4gbm9kZSAqLworfSBKc29uVGFibGVTaWJsaW5nTm9k ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogTnVsbFRlc3QKICAqCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKaW5kZXggYWIzZDhlMGI1Mi4uYzczNjU3MDZhMyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aApAQCAtMjQxLDYgKzI0MSw3IEBAIFBHX0tFWVdPUkQoImpzb25fb2JqZWN0YWdnIiwgSlNP Tl9PQkpFQ1RBR0csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJqc29uX3F1ZXJ5IiwgSlNPTl9RVUVSWSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImpzb25fc2NhbGFyIiwgSlNPTl9TQ0FMQVIsIENPTF9OQU1FX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX3NlcmlhbGl6ZSIsIEpTT05f U0VSSUFMSVpFLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi anNvbl90YWJsZSIsIEpTT05fVEFCTEUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJqc29uX3ZhbHVlIiwgSlNPTl9WQUxVRSwgQ09MX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImtlZXAiLCBLRUVQLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJrZXkiLCBLRVksIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTI4MSw2ICsyODIsNyBAQCBQR19LRVlXT1JEKCJu YW1lcyIsIE5BTUVTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJuYXRpb25hbCIsIE5BVElPTkFMLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgibmF0dXJhbCIsIE5BVFVSQUwsIFRZUEVfRlVOQ19OQU1FX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuY2hhciIsIE5DSEFSLCBDT0xfTkFNRV9L RVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgibmVzdGVkIiwgTkVTVEVELCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuZXciLCBORVcsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5leHQiLCBORVhU LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuZmMiLCBO RkMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTMzMCw2ICszMzIsNyBA QCBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lO RywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dv cmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfY2xhdXNlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmgKaW5kZXgg MjQ5NWMzMDAzNC4uZTg2YjAwMjM5MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX2NsYXVzZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2Uu aApAQCAtNTEsNCArNTEsNyBAQCBleHRlcm4gTGlzdCAqYWRkVGFyZ2V0VG9Tb3J0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsIFRhcmdldEVudHJ5ICp0bGUsCiBleHRlcm4gSW5kZXggYXNz aWduU29ydEdyb3VwUmVmKFRhcmdldEVudHJ5ICp0bGUsIExpc3QgKnRsaXN0KTsKIGV4dGVy biBib29sIHRhcmdldElzSW5Tb3J0TGlzdChUYXJnZXRFbnRyeSAqdGxlLCBPaWQgc29ydG9w LCBMaXN0ICpzb3J0TGlzdCk7CiAKKy8qIGZ1bmN0aW9ucyBpbiBwYXJzZV9qc29udGFibGUu YyAqLworZXh0ZXJuIFBhcnNlTmFtZXNwYWNlSXRlbSAqdHJhbnNmb3JtSnNvblRhYmxlKFBh cnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxlICpqdCk7CisKICNlbmRpZgkJCQkJCQkvKiBQ QVJTRV9DTEFVU0VfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBh dGguaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKaW5kZXggOThhNjFkN2Y3Mi4u MTg5N2RkZmZhNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCkBAIC0xNSw2ICsxNSw3IEBACiAj ZGVmaW5lIEpTT05QQVRIX0gKIAogI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJleGVj dXRvci90YWJsZWZ1bmMuaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCiAjaW5jbHVk ZSAibm9kZXMvcHJpbW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKQEAgLTI2 Myw2ICsyNjQsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uUGF0aFZhcmlhYmxlRXZhbENvbnRl eHQKIAlpbnQzMgkJdHlwbW9kOwogCXN0cnVjdCBFeHByQ29udGV4dCAqZWNvbnRleHQ7CiAJ c3RydWN0IEV4cHJTdGF0ZSAgKmVzdGF0ZTsKKwlNZW1vcnlDb250ZXh0IG1jeHQ7CQkvKiBt ZW1vcnkgY29udGV4dCBmb3IgY2FjaGVkIHZhbHVlICovCiAJRGF0dW0JCXZhbHVlOwogCWJv b2wJCWlzbnVsbDsKIAlib29sCQlldmFsdWF0ZWQ7CkBAIC0yODEsNCArMjgzLDYgQEAgZXh0 ZXJuIEpzb25iVmFsdWUgKkpzb25QYXRoVmFsdWUoRGF0dW0gamIsIEpzb25QYXRoICpqcCwg Ym9vbCAqZW1wdHksCiBleHRlcm4gaW50IEV2YWxKc29uUGF0aFZhcih2b2lkICp2YXJzLCBj aGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbiwKIAkJCQkJCSAgIEpzb25iVmFsdWUgKnZh bCwgSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCk7CiAKK2V4dGVybiBjb25zdCBUYWJsZUZ1bmNS b3V0aW5lIEpzb25iVGFibGVSb3V0aW5lOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dAppbmRleCBiYjYyNjM0MzE0Li4zMDk2YTVm OTFjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25fc3FsanNv bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0 CkBAIC0xMywzICsxMyw4IEBAIFNFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04s ICckJyk7CiBFUlJPUjogIEpTT05fUVVFUlkoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZv ciBqc29uIHR5cGUKIExJTkUgMTogU0VMRUNUIEpTT05fUVVFUlkoTlVMTCBGT1JNQVQgSlNP TiwgJyQnKTsKICAgICAgICAgICAgICAgIF4KKy0tIEpTT05fVEFCTEUKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09OLCAnJCcgQ09MVU1OUyAoZm9vIHRleHQp KTsKK0VSUk9SOiAgSlNPTl9UQUJMRSgpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGpz b24gdHlwZQorTElORSAxOiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCBGT1JNQVQg SlNPTiwgJyQnIENPTFVNTlMgKGZvbyAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJf c3FsanNvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24u b3V0CmluZGV4IDExMjZkN2NhZjUuLmM3NjZhNDQxYmUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dApAQCAtMTAxNiwzICsxMDE2LDU2NSBA QCBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpz LCAnJFsxLCAwIHRvICQuYSA/IChALmRhdGV0aQogRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5k ZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKIENSRUFURSBJTkRFWCBP TiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChA LmRhdGV0aW1lKCJISDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4 KSk7CiBEUk9QIFRBQkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKKy0tIEpTT05fVEFCTEUK Ky0tIFNob3VsZCBmYWlsIChKU09OX1RBQkxFIGNhbiBiZSB1c2VkIG9ubHkgaW4gRlJPTSBj bGF1c2UpCitTRUxFQ1QgSlNPTl9UQUJMRSgnW10nLCAnJCcpOworRVJST1I6ICBzeW50YXgg ZXJyb3IgYXQgb3IgbmVhciAiKCIKK0xJTkUgMTogU0VMRUNUIEpTT05fVEFCTEUoJ1tdJywg JyQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTaG91bGQgZmFpbCAobm8g Y29sdW1ucykKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMLCAnJCcgQ09MVU1OUyAo KSk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIpIgorTElORSAxOiBTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCwgJyQnIENPTFVNTlMgKCkpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5VTEwg PT4gZW1wdHkgdGFibGUKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMOjpqc29uYiwg JyQnIENPTFVNTlMgKGZvbyBpbnQpKSBiYXI7CisgZm9vIAorLS0tLS0KKygwIHJvd3MpCisK Ky0tCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEyMycsICckJworCUNPTFVN TlMgKGl0ZW0gaW50IFBBVEggJyQnLCBmb28gaW50KSkgYmFyOworIGl0ZW0gfCBmb28gCist LS0tLS0rLS0tLS0KKyAgMTIzIHwgICAgCisoMSByb3cpCisKKy0tIEpTT05fVEFCTEU6IGJh c2ljIGZ1bmN0aW9uYWxpdHkKK0NSRUFURSBET01BSU4ganNvbmJfdGVzdF9kb21haW4gQVMg dGV4dCBDSEVDSyAodmFsdWUgPD4gJ2ZvbycpOworU0VMRUNUICoKK0ZST00KKwkoVkFMVUVT CisJCSgnMScpLAorCQkoJ1tdJyksCisJCSgne30nKSwKKwkJKCdbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEs Ml0iLCAiXCJzdHJcIiJdJykKKwkpIHZhbHMoanMpCisJTEVGVCBPVVRFUiBKT0lOCistLSBK U09OX1RBQkxFIGlzIGltcGxpY2l0bHkgbGF0ZXJhbAorCUpTT05fVEFCTEUoCisJCXZhbHMu anM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJ VFksCisJCQlpZDIgRk9SIE9SRElOQUxJVFksIC0tIGFsbG93ZWQgYWRkaXRpb25hbCBvcmRp bmFsaXR5IGNvbHVtbnMKKwkJCSJpbnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0 IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFUSCAnJCcsCisJCQkiYm9vbCIg Ym9vbCBQQVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorCQkJImRv bWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisJCQlqcyBqc29uIFBBVEggJyQn LAorCQkJamIganNvbmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAg UEFUSCAnJCcsCisJCQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlq c3YgdmFyY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2IganNvbmIgRk9S TUFUIEpTT04gUEFUSCAnJCcsCisJCQlqc2JxIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQn IE9NSVQgUVVPVEVTLAorCQkJYWFhIGludCwgLS0gaW1wbGljaXQgcGF0aCAnJC4iYWFhIics CisJCQlhYWExIGludCBQQVRIICckLmFhYScsCisJCQlleGlzdHMxIGJvb2wgRVhJU1RTIFBB VEggJyQuYWFhJywKKwkJCWV4aXN0czIgaW50IEVYSVNUUyBQQVRIICckLmFhYScsCisJCQll eGlzdHMzIGludCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFhJyBVTktOT1dOIE9OIEVSUk9S LAorCQkJZXhpc3RzNCB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIEZBTFNFIE9O IEVSUk9SLAorCQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29uYiBQQVRIICck JyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywK KwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJamJh IGpzb25iW10gUEFUSCAnJCcKKwkJKQorCSkganQKKwlPTiB0cnVlOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBpZCB8IGlkMiB8IGludCB8ICB0ZXh0ICAgfCBjaGFy KDQpIHwgYm9vbCB8IG51bWVyaWMgfCBkb21haW4gIHwgICAgICBqcyAgICAgIHwgICAgICBq YiAgICAgIHwgICAgIGpzdCAgICAgIHwganNjICB8IGpzdiAgfCAgICAganNiICAgICAgfCAg ICAganNicSAgICAgfCBhYWEgfCBhYWExIHwgZXhpc3RzMSB8IGV4aXN0czIgfCBleGlzdHMz IHwgZXhpc3RzNCB8ICAgICBqczIgICAgICB8ICAgICBqc2IydyAgICAgIHwgICAganNiMnEg ICAgIHwgaWEgfCB0YSB8IGpiYSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLSst LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tKy0tLS0t CisgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxIHwgICAxIHwgICAxIHwg MSAgICAgICB8IDEgICAgICAgfCAgICAgIHwgICAgICAgMSB8IDEgICAgICAgfCAxICAgICAg ICAgICAgfCAxICAgICAgICAgICAgfCAxICAgICAgICAgICAgfCAxICAgIHwgMSAgICB8IDEg ICAgICAgICAgICB8IDEgICAgICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAg ICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgMSAgICAgICAgICAgIHwgWzFdICAgICAgICAg ICAgfCAxICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgW10gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIHwgICAgIHwgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAg IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICB8ICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAg IHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICB8 ICAgIHwgCisge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxIHwgICAxIHwg ICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7 fSAgICAgICAgICAgfCB7fSAgICAgICAgICAgfCB7fSAgICAgICAgICAgfCB7fSAgIHwge30g ICB8IHt9ICAgICAgICAgICB8IHt9ICAgICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAg IHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwge30gICAgICAgICAgIHwgW3t9XSAg ICAgICAgICAgfCB7fSAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwg ImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8ICAxIHwgICAxIHwgICAxIHwgMSAgICAgICB8IDEgICAgICAg fCAgICAgIHwgICAgICAgMSB8IDEgICAgICAgfCAxICAgICAgICAgICAgfCAxICAgICAgICAg ICAgfCAxICAgICAgICAgICAgfCAxICAgIHwgMSAgICB8IDEgICAgICAgICAgICB8IDEgICAg ICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBm YWxzZSAgIHwgMSAgICAgICAgICAgIHwgWzFdICAgICAgICAgICAgfCAxICAgICAgICAgICAg fCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwg ICAyIHwgICAxIHwgMS4yMyAgICB8IDEuMjMgICAgfCAgICAgIHwgICAgMS4yMyB8IDEuMjMg ICAgfCAxLjIzICAgICAgICAgfCAxLjIzICAgICAgICAgfCAxLjIzICAgICAgICAgfCAxLjIz IHwgMS4yMyB8IDEuMjMgICAgICAgICB8IDEuMjMgICAgICAgICB8ICAgICB8ICAgICAgfCBm ICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgMS4yMyAgICAgICAgIHwg WzEuMjNdICAgICAgICAgfCAxLjIzICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMs ICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIz fSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAzIHwgICAzIHwgICAyIHwgMiAgICAgICB8IDIg ICAgICAgfCAgICAgIHwgICAgICAgMiB8IDIgICAgICAgfCAiMiIgICAgICAgICAgfCAiMiIg ICAgICAgICAgfCAiMiIgICAgICAgICAgfCAiMiIgIHwgIjIiICB8ICIyIiAgICAgICAgICB8 IDIgICAgICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAg ICAgfCBmYWxzZSAgIHwgIjIiICAgICAgICAgIHwgWyIyIl0gICAgICAgICAgfCAyICAgICAg ICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwg bnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8 ICA0IHwgICA0IHwgICAgIHwgYWFhYWFhYSB8IGFhYWEgICAgfCAgICAgIHwgICAgICAgICB8 IGFhYWFhYWEgfCAiYWFhYWFhYSIgICAgfCAiYWFhYWFhYSIgICAgfCAiYWFhYWFhYSIgICAg fCAiYWFhIHwgImFhYSB8ICJhYWFhYWFhIiAgICB8ICAgICAgICAgICAgICB8ICAgICB8ICAg ICAgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgImFhYWFhYWEi ICAgIHwgWyJhYWFhYWFhIl0gICAgfCAgICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEs IDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFh IjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgICA1IHwgICAgIHwgZm9vICAg ICB8IGZvbyAgICAgfCAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAiZm9vIiAgICAgICAg fCAiZm9vIiAgICAgICAgfCAiZm9vIiAgICAgICAgfCAiZm9vIHwgImZvbyB8ICJmb28iICAg ICAgICB8ICAgICAgICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAgICAgMCB8 ICAgICAgICAgfCBmYWxzZSAgIHwgImZvbyIgICAgICAgIHwgWyJmb28iXSAgICAgICAgfCAg ICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAi Zm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3Ry XCIiXSB8ICA2IHwgICA2IHwgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgIHwgICAg ICAgICB8ICAgICAgICAgfCBudWxsICAgICAgICAgfCBudWxsICAgICAgICAgfCBudWxsICAg ICAgICAgfCBudWxsIHwgbnVsbCB8IG51bGwgICAgICAgICB8IG51bGwgICAgICAgICB8ICAg ICB8ICAgICAgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgbnVs bCAgICAgICAgIHwgW251bGxdICAgICAgICAgfCBudWxsICAgICAgICAgfCAgICB8ICAgIHwg CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUs IHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA3IHwgICA3IHwgICAwIHwg ZmFsc2UgICB8IGZhbHMgICAgfCBmICAgIHwgICAgICAgICB8IGZhbHNlICAgfCBmYWxzZSAg ICAgICAgfCBmYWxzZSAgICAgICAgfCBmYWxzZSAgICAgICAgfCBmYWxzIHwgZmFscyB8IGZh bHNlICAgICAgICB8IGZhbHNlICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAg ICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgZmFsc2UgICAgICAgIHwgW2ZhbHNlXSAgICAg ICAgfCBmYWxzZSAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFh YWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwg Ilwic3RyXCIiXSB8ICA4IHwgICA4IHwgICAxIHwgdHJ1ZSAgICB8IHRydWUgICAgfCB0ICAg IHwgICAgICAgICB8IHRydWUgICAgfCB0cnVlICAgICAgICAgfCB0cnVlICAgICAgICAgfCB0 cnVlICAgICAgICAgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgICAgICAgICB8IHRydWUgICAgICAg ICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAg IHwgdHJ1ZSAgICAgICAgIHwgW3RydWVdICAgICAgICAgfCB0cnVlICAgICAgICAgfCAgICB8 ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2Us IHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA5IHwgICA5IHwg ICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7 ImFhYSI6IDEyM30gfCB7ImFhYSI6IDEyM30gfCB7ImFhYSI6IDEyM30gfCB7ImFhIHwgeyJh YSB8IHsiYWFhIjogMTIzfSB8IHsiYWFhIjogMTIzfSB8IDEyMyB8ICAxMjMgfCB0ICAgICAg IHwgICAgICAgMSB8ICAgICAgIDEgfCB0cnVlICAgIHwgeyJhYWEiOiAxMjN9IHwgW3siYWFh IjogMTIzfV0gfCB7ImFhYSI6IDEyM30gfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwg ImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8IDEwIHwgIDEwIHwgICAgIHwgWzEsMl0gICB8IFsxLDIgICAg fCAgICAgIHwgICAgICAgICB8IFsxLDJdICAgfCAiWzEsMl0iICAgICAgfCAiWzEsMl0iICAg ICAgfCAiWzEsMl0iICAgICAgfCAiWzEsIHwgIlsxLCB8ICJbMSwyXSIgICAgICB8IFsxLCAy XSAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBm YWxzZSAgIHwgIlsxLDJdIiAgICAgIHwgWyJbMSwyXSJdICAgICAgfCBbMSwgMl0gICAgICAg fCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDExIHwg IDExIHwgICAgIHwgInN0ciIgICB8ICJzdHIgICAgfCAgICAgIHwgICAgICAgICB8ICJzdHIi ICAgfCAiXCJzdHJcIiIgICAgfCAiXCJzdHJcIiIgICAgfCAiXCJzdHJcIiIgICAgfCAiXCJz IHwgIlwicyB8ICJcInN0clwiIiAgICB8ICJzdHIiICAgICAgICB8ICAgICB8ICAgICAgfCBm ICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgIlwic3RyXCIiICAgIHwg WyJcInN0clwiIl0gICAgfCAic3RyIiAgICAgICAgfCAgICB8ICAgIHwgCisoMTQgcm93cykK KworLS0gSlNPTl9UQUJMRTogVGVzdCBiYWNrd2FyZCBwYXJzaW5nCitDUkVBVEUgVklFVyBq c29uYl90YWJsZV92aWV3IEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNv bmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyIn IEFTICJiIGMiCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlpZDIg Rk9SIE9SRElOQUxJVFksIC0tIGFsbG93ZWQgYWRkaXRpb25hbCBvcmRpbmFsaXR5IGNvbHVt bnMKKwkJCSJpbnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnLAor CQkJImNoYXIoNCkiIGNoYXIoNCkgUEFUSCAnJCcsCisJCQkiYm9vbCIgYm9vbCBQQVRIICck JywKKwkJCSJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorCQkJImRvbWFpbiIganNvbmJf dGVzdF9kb21haW4gUEFUSCAnJCcsCisJCQlqcyBqc29uIFBBVEggJyQnLAorCQkJamIganNv bmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJ CQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc3YgdmFyY2hhcig0 KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2IganNvbmIgICBGT1JNQVQgSlNPTiBQ QVRIICckJywKKwkJCWpzYnEganNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9U RVMsCisJCQlhYWEgaW50LCAtLSBpbXBsaWNpdCBwYXRoICckLiJhYWEiJywKKwkJCWFhYTEg aW50IFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEn LAorCQkJZXhpc3RzMiBpbnQgRVhJU1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAor CQkJZXhpc3RzMyB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04g RVJST1IsCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3IGpzb25iIFBBVEggJyQn IFdJVEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLAor CQkJaWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCisJCQlqYmEg anNvbmJbXSBQQVRIICckJywKKwkJCU5FU1RFRCBQQVRIICckWzFdJyBDT0xVTU5TICgKKwkJ CQlhMSBpbnQsCisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKAorCQkJCQlhMTEg dGV4dAorCQkJCSksCisJCQkJYjEgdGV4dAorCQkJKSwKKwkJCU5FU1RFRCBQQVRIICckWzJd JyBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQ09MVU1OUyAoCisJCQkJCWEy MSB0ZXh0CisJCQkJKSwKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQ09MVU1OUyAoCisJCQkJ CWEyMiB0ZXh0CisJCQkJKQorCQkJKQorCQkpCisJKTsKK1xzdiBqc29uYl90YWJsZV92aWV3 CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3IEFTCisg U0VMRUNUICJqc29uX3RhYmxlIi5pZCwKKyAgICAianNvbl90YWJsZSIuaWQyLAorICAgICJq c29uX3RhYmxlIi4iaW50IiwKKyAgICAianNvbl90YWJsZSIudGV4dCwKKyAgICAianNvbl90 YWJsZSIuImNoYXIoNCkiLAorICAgICJqc29uX3RhYmxlIi5ib29sLAorICAgICJqc29uX3Rh YmxlIi4ibnVtZXJpYyIsCisgICAgImpzb25fdGFibGUiLmRvbWFpbiwKKyAgICAianNvbl90 YWJsZSIuanMsCisgICAgImpzb25fdGFibGUiLmpiLAorICAgICJqc29uX3RhYmxlIi5qc3Qs CisgICAgImpzb25fdGFibGUiLmpzYywKKyAgICAianNvbl90YWJsZSIuanN2LAorICAgICJq c29uX3RhYmxlIi5qc2IsCisgICAgImpzb25fdGFibGUiLmpzYnEsCisgICAgImpzb25fdGFi bGUiLmFhYSwKKyAgICAianNvbl90YWJsZSIuYWFhMSwKKyAgICAianNvbl90YWJsZSIuZXhp c3RzMSwKKyAgICAianNvbl90YWJsZSIuZXhpc3RzMiwKKyAgICAianNvbl90YWJsZSIuZXhp c3RzMywKKyAgICAianNvbl90YWJsZSIuanMyLAorICAgICJqc29uX3RhYmxlIi5qc2IydywK KyAgICAianNvbl90YWJsZSIuanNiMnEsCisgICAgImpzb25fdGFibGUiLmlhLAorICAgICJq c29uX3RhYmxlIi50YSwKKyAgICAianNvbl90YWJsZSIuamJhLAorICAgICJqc29uX3RhYmxl Ii5hMSwKKyAgICAianNvbl90YWJsZSIuYjEsCisgICAgImpzb25fdGFibGUiLmExMSwKKyAg ICAianNvbl90YWJsZSIuYTIxLAorICAgICJqc29uX3RhYmxlIi5hMjIKKyAgIEZST00gSlNP Tl9UQUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJworICAgICAgICAg ICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisgICAgICAgICAgICAg ICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1OUyAoCisgICAg ICAgICAgICAgICAgaWQgRk9SIE9SRElOQUxJVFksCisgICAgICAgICAgICAgICAgaWQyIEZP UiBPUkRJTkFMSVRZLAorICAgICAgICAgICAgICAgICJpbnQiIGludGVnZXIgUEFUSCAnJCcs CisgICAgICAgICAgICAgICAgdGV4dCB0ZXh0IFBBVEggJyQnLAorICAgICAgICAgICAgICAg ICJjaGFyKDQpIiBjaGFyYWN0ZXIoNCkgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgYm9v bCBib29sZWFuIFBBVEggJyQnLAorICAgICAgICAgICAgICAgICJudW1lcmljIiBudW1lcmlj IFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGRvbWFpbiBqc29uYl90ZXN0X2RvbWFpbiBQ QVRIICckJywKKyAgICAgICAgICAgICAgICBqcyBqc29uIFBBVEggJyQnLAorICAgICAgICAg ICAgICAgIGpiIGpzb25iIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzdCB0ZXh0IEZP Uk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYyBjaGFyYWN0ZXIoNCkg Rk9STUFUIEpTT04gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganN2IGNoYXJhY3RlciB2 YXJ5aW5nKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYiBq c29uYiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc2JxIGpzb25iIFBBVEggJyQnIE9N SVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGFhYSBpbnRlZ2VyIFBBVEggJyQuImFhYSIn LAorICAgICAgICAgICAgICAgIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywKKyAgICAg ICAgICAgICAgICBleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEggJyQuImFhYSInLAorICAg ICAgICAgICAgICAgIGV4aXN0czIgaW50ZWdlciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJV RSBPTiBFUlJPUiwKKyAgICAgICAgICAgICAgICBleGlzdHMzIHRleHQgRVhJU1RTIFBBVEgg J3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLAorICAgICAgICAgICAgICAgIGpz MiBqc29uIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYjJ3IGpzb25iIFBBVEggJyQn IFdJVEggVU5DT05ESVRJT05BTCBXUkFQUEVSLAorICAgICAgICAgICAgICAgIGpzYjJxIGpz b25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGlhIGludGVnZXJb XSBQQVRIICckJywKKyAgICAgICAgICAgICAgICB0YSB0ZXh0W10gUEFUSCAnJCcsCisgICAg ICAgICAgICAgICAgamJhIGpzb25iW10gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgTkVT VEVEIFBBVEggJyRbMV0nCisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICAgICAgIGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywKKyAgICAgICAgICAgICAgICAg ICAgYjEgdGV4dCBQQVRIICckLiJiMSInLAorICAgICAgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJFsqXScKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICAgICAgICAgICBhMTEgdGV4dCBQQVRIICckLiJhMTEiJworICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBORVNURUQgUEFU SCAnJFsyXScKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyRbKl0nCisgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAor ICAgICAgICAgICAgICAgICAgICAgICAgYTIxIHRleHQgUEFUSCAnJC4iYTIxIicKKyAgICAg ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRb Kl0nCisgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAg ICAgICAgYTIyIHRleHQgUEFUSCAnJC4iYTIyIicKKyAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorRVhQTEFJTiAo Q09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAianNvbl90YWJsZSIKKyAgIE91dHB1dDog Impzb25fdGFibGUiLmlkLCAianNvbl90YWJsZSIuaWQyLCAianNvbl90YWJsZSIuImludCIs ICJqc29uX3RhYmxlIi50ZXh0LCAianNvbl90YWJsZSIuImNoYXIoNCkiLCAianNvbl90YWJs ZSIuYm9vbCwgImpzb25fdGFibGUiLiJudW1lcmljIiwgImpzb25fdGFibGUiLmRvbWFpbiwg Impzb25fdGFibGUiLmpzLCAianNvbl90YWJsZSIuamIsICJqc29uX3RhYmxlIi5qc3QsICJq c29uX3RhYmxlIi5qc2MsICJqc29uX3RhYmxlIi5qc3YsICJqc29uX3RhYmxlIi5qc2IsICJq c29uX3RhYmxlIi5qc2JxLCAianNvbl90YWJsZSIuYWFhLCAianNvbl90YWJsZSIuYWFhMSwg Impzb25fdGFibGUiLmV4aXN0czEsICJqc29uX3RhYmxlIi5leGlzdHMyLCAianNvbl90YWJs ZSIuZXhpc3RzMywgImpzb25fdGFibGUiLmpzMiwgImpzb25fdGFibGUiLmpzYjJ3LCAianNv bl90YWJsZSIuanNiMnEsICJqc29uX3RhYmxlIi5pYSwgImpzb25fdGFibGUiLnRhLCAianNv bl90YWJsZSIuamJhLCAianNvbl90YWJsZSIuYTEsICJqc29uX3RhYmxlIi5iMSwgImpzb25f dGFibGUiLmExMSwgImpzb25fdGFibGUiLmEyMSwgImpzb25fdGFibGUiLmEyMgorICAgVGFi bGUgRnVuY3Rpb24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6Ompzb25iLCAnJFsqXScgUEFT U0lORyAzIEFTIGEsICciZm9vIic6Ompzb25iIEFTICJiIGMiIENPTFVNTlMgKGlkIEZPUiBP UkRJTkFMSVRZLCBpZDIgRk9SIE9SRElOQUxJVFksICJpbnQiIGludGVnZXIgUEFUSCAnJCcs IHRleHQgdGV4dCBQQVRIICckJywgImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywg Ym9vbCBib29sZWFuIFBBVEggJyQnLCAibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9t YWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLCBqcyBqc29uIFBBVEggJyQnLCBqYiBq c29uYiBQQVRIICckJywganN0IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzYyBjaGFy YWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzdiBjaGFyYWN0ZXIgdmFyeWluZyg0 KSBGT1JNQVQgSlNPTiBQQVRIICckJywganNiIGpzb25iIFBBVEggJyQnLCBqc2JxIGpzb25i IFBBVEggJyQnIE9NSVQgUVVPVEVTLCBhYWEgaW50ZWdlciBQQVRIICckLiJhYWEiJywgYWFh MSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLCBleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEgg JyQuImFhYSInLCBleGlzdHMyIGludGVnZXIgRVhJU1RTIFBBVEggJyQuImFhYSInIFRSVUUg T04gRVJST1IsIGV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVO S05PV04gT04gRVJST1IsIGpzMiBqc29uIFBBVEggJyQnLCBqc2IydyBqc29uYiBQQVRIICck JyBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiwganNiMnEganNvbmIgUEFUSCAnJCcgT01J VCBRVU9URVMsIGlhIGludGVnZXJbXSBQQVRIICckJywgdGEgdGV4dFtdIFBBVEggJyQnLCBq YmEganNvbmJbXSBQQVRIICckJywgTkVTVEVEIFBBVEggJyRbMV0nIENPTFVNTlMgKGExIGlu dGVnZXIgUEFUSCAnJC4iYTEiJywgYjEgdGV4dCBQQVRIICckLiJiMSInLCBORVNURUQgUEFU SCAnJFsqXScgQ09MVU1OUyAoYTExIHRleHQgUEFUSCAnJC4iYTExIicpKSwgTkVTVEVEIFBB VEggJyRbMl0nIENPTFVNTlMgKCBORVNURUQgUEFUSCAnJFsqXScgQ09MVU1OUyAoYTIxIHRl eHQgUEFUSCAnJC4iYTIxIicpLCBORVNURUQgUEFUSCAnJFsqXScgQ09MVU1OUyAoYTIyIHRl eHQgUEFUSCAnJC4iYTIyIicpKSkpCisoMyByb3dzKQorCitEUk9QIFZJRVcganNvbmJfdGFi bGVfdmlldzsKK0RST1AgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluOworLS0gSlNPTl9UQUJM RTogT04gRU1QVFkvT04gRVJST1IgYmVoYXZpb3IKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVF UyAoJzEnKSwgKCciZXJyIicpKSB2YWxzKGpzKSwKKwlKU09OX1RBQkxFKHZhbHMuanM6Ompz b25iLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcpKSBqdDsKKyAganMgICB8IGEgCist LS0tLS0tKy0tLQorIDEgICAgIHwgMQorICJlcnIiIHwgIAorKDIgcm93cykKKworU0VMRUNU ICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpCisJCUxFRlQg T1VURVIgSk9JTgorCUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChh IGludCBQQVRIICckJykgRVJST1IgT04gRVJST1IpIGp0CisJCU9OIHRydWU7CitFUlJPUjog IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJlcnIiCitTRUxFQ1Qg KgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVGVCBP VVRFUiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEg aW50IFBBVEggJyQnIEVSUk9SIE9OIEVSUk9SKSkganQKKwkJT04gdHJ1ZTsKK0VSUk9SOiAg aW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVyciIKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICck LmEnIEVSUk9SIE9OIEVNUFRZKSkganQ7CisgYSAKKy0tLQorICAKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBFUlJPUikganQ7CitF UlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3NvciBjYW4gb25seSBiZSBhcHBsaWVkIHRv IGFuIG9iamVjdAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENP TFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBF UlJPUikganQ7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnICAgREVG QVVMVCAxIE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0OworIGEgCistLS0KKyAy CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQn IENPTFVNTlMgKGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBE RUZBVUxUIDIgT04gRVJST1IpKSBqdDsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICdsYXggJC5hJyBERUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkg anQ7CisgYSAKKy0tLQorIDEKKygxIHJvdykKKworLS0gSlNPTl9UQUJMRTogRVhJU1RTIFBB VEggdHlwZXMKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENP TFVNTlMgKGEgaW50NCBFWElTVFMgUEFUSCAnJC5hJykpOworIGEgCistLS0KKyAwCisoMSBy b3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgaW50MiBFWElTVFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0 eXBlIGJvb2xlYW4gdG8gc21hbGxpbnQKK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDIgRVhJLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAo YSBpbnQ4IEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUg Ym9vbGVhbiB0byBiaWdpbnQKK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBmbG9h dDQgRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29s ZWFuIHRvIHJlYWwKK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJhIicsICckJyBDT0xVTU5TIChhIGZsb2F0NCBFLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBjaGFyKDMpIEVY SVNUUyBQQVRIICckLmEnKSk7CisgIGEgIAorLS0tLS0KKyBmYWwKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBqc29u IEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVh biB0byBqc29uCitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICci YSInLCAnJCcgQ09MVU1OUyAoYSBqc29uIEVYSS4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbmIgRVhJU1RT IFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIGpz b25iCitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAn JCcgQ09MVU1OUyAoYSBqc29uYiBFWC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEpTT05fVEFCTEU6IG5l c3RlZCBwYXRocyBhbmQgcGxhbnMKKy0tIFNob3VsZCBmYWlsIChjb2x1bW4gbmFtZXMgbXVz dCBiZSBkaXN0aW5jdCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10n LCAnJCcKKwlDT0xVTU5TICgKKwkJYSBpbnQsCisJCWIgdGV4dCwKKwkJYSBqc29uYgorCSkK KykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiBhCitI SU5UOiAgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5jdCBmcm9tIG9u ZSBhbm90aGVyCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQn CisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAo CisJCQljIGludCwKKwkJCWIgdGV4dAorCQkpCisJKQorKSBqdDsKK0VSUk9SOiAgZHVwbGlj YXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6IGIKK0hJTlQ6ICBKU09OX1RBQkxFIGNvbHVt biBuYW1lcyBtdXN0IGJlIGRpc3RpbmN0IGZyb20gb25lIGFub3RoZXIKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcKKwlDT0xVTU5TICgKKwkJTkVTVEVE IFBBVEggJyQnCisJCUNPTFVNTlMgKAorCQkJYiBpbnQKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnCisJCUNPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnCisJCQlDT0xVTU5TICgKKwkJ CQljIGludCwKKwkJCQliIHRleHQKKwkJCSkKKwkJKQorCSkKKykganQ7CitFUlJPUjogIGR1 cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiBiCitISU5UOiAgSlNPTl9UQUJMRSBj b2x1bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5jdCBmcm9tIG9uZSBhbm90aGVyCistLSBKU09O X1RBQkxFOiBwbGFuIGV4ZWN1dGlvbgorQ1JFQVRFIFRFTVAgVEFCTEUganNvbmJfdGFibGVf dGVzdCAoanMganNvbmIpOworSU5TRVJUIElOVE8ganNvbmJfdGFibGVfdGVzdAorVkFMVUVT ICgKKwknWworCQl7ImEiOiAgMSwgICJiIjogW10sICJjIjogW119LAorCQl7ImEiOiAgMiwg ICJiIjogWzEsIDIsIDNdLCAiYyI6IFsxMCwgbnVsbCwgMjBdfSwKKwkJeyJhIjogIDMsICAi YiI6IFsxLCAyXSwgImMiOiBbXX0sCisJCXsieCI6ICI0IiwgImIiOiBbMSwgMl0sICJjIjog MTIzfQorCSBdJworKTsKKy0tIHVuc3BlY2lmaWVkIHBsYW4gKG91dGVyLCB1bmlvbikKK3Nl bGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxl ICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRp bmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQg cGF0aCAnJCcgKQorCQkpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSst LS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8 IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8 ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAgMyB8 IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDExIHJvd3Mp CisKKy0tIFNob3VsZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHJv b3QgYW5kIG5lc3RlZCBwYXRocykKK1NFTEVDVCAqCitGUk9NCisJZ2VuZXJhdGVfc2VyaWVz KDEsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIHksCisJSlNPTl9UQUJMRShqc29u YgorCQknW1sxLDIsM10sWzIsMyw0LDVdLFszLDQsNSw2XV0nLAorCQknc3RyaWN0ICRbKl0g PyAoQFsqXSA8ICR4KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlDT0xVTU5TICgK KwkJCXkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCU5FU1RFRCBQQVRIICdzdHJp Y3QgJFsqXSA/IChAID49ICR5KScKKwkJCUNPTFVNTlMgKAorCQkJCXogaW50IFBBVEggJyQn CisJCQkpCisJCSkKKwkpIGp0OworIHggfCB5IHwgICAgICB5ICAgICAgIHwgeiAKKy0tLSst LS0rLS0tLS0tLS0tLS0tLS0rLS0tCisgMiB8IDEgfCBbMSwgMiwgM10gICAgfCAxCisgMiB8 IDEgfCBbMSwgMiwgM10gICAgfCAyCisgMiB8IDEgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8 IDEgfCBbMSwgMiwgM10gICAgfCAxCisgMyB8IDEgfCBbMSwgMiwgM10gICAgfCAyCisgMyB8 IDEgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDEgfCBbMiwgMywgNCwgNV0gfCAyCisgMyB8 IDEgfCBbMiwgMywgNCwgNV0gfCAzCisgMyB8IDEgfCBbMiwgMywgNCwgNV0gfCA0CisgMyB8 IDEgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDEgfCBbMSwgMiwgM10gICAgfCAxCisgNCB8 IDEgfCBbMSwgMiwgM10gICAgfCAyCisgNCB8IDEgfCBbMSwgMiwgM10gICAgfCAzCisgNCB8 IDEgfCBbMiwgMywgNCwgNV0gfCAyCisgNCB8IDEgfCBbMiwgMywgNCwgNV0gfCAzCisgNCB8 IDEgfCBbMiwgMywgNCwgNV0gfCA0CisgNCB8IDEgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8 IDEgfCBbMywgNCwgNSwgNl0gfCAzCisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCA0CisgNCB8 IDEgfCBbMywgNCwgNSwgNl0gfCA1CisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCA2CisgMiB8 IDIgfCBbMSwgMiwgM10gICAgfCAyCisgMiB8IDIgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8 IDIgfCBbMSwgMiwgM10gICAgfCAyCisgMyB8IDIgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8 IDIgfCBbMiwgMywgNCwgNV0gfCAyCisgMyB8IDIgfCBbMiwgMywgNCwgNV0gfCAzCisgMyB8 IDIgfCBbMiwgMywgNCwgNV0gfCA0CisgMyB8IDIgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8 IDIgfCBbMSwgMiwgM10gICAgfCAyCisgNCB8IDIgfCBbMSwgMiwgM10gICAgfCAzCisgNCB8 IDIgfCBbMiwgMywgNCwgNV0gfCAyCisgNCB8IDIgfCBbMiwgMywgNCwgNV0gfCAzCisgNCB8 IDIgfCBbMiwgMywgNCwgNV0gfCA0CisgNCB8IDIgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8 IDIgfCBbMywgNCwgNSwgNl0gfCAzCisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA0CisgNCB8 IDIgfCBbMywgNCwgNSwgNl0gfCA1CisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA2CisgMiB8 IDMgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDMgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8 IDMgfCBbMiwgMywgNCwgNV0gfCAzCisgMyB8IDMgfCBbMiwgMywgNCwgNV0gfCA0CisgMyB8 IDMgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDMgfCBbMSwgMiwgM10gICAgfCAzCisgNCB8 IDMgfCBbMiwgMywgNCwgNV0gfCAzCisgNCB8IDMgfCBbMiwgMywgNCwgNV0gfCA0CisgNCB8 IDMgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDMgfCBbMywgNCwgNSwgNl0gfCAzCisgNCB8 IDMgfCBbMywgNCwgNSwgNl0gfCA0CisgNCB8IDMgfCBbMywgNCwgNSwgNl0gfCA1CisgNCB8 IDMgfCBbMywgNCwgNSwgNl0gfCA2CisoNTIgcm93cykKKworLS0gU2hvdWxkIGZhaWwgKEpT T04gYXJndW1lbnRzIGFyZSBub3QgcGFzc2VkIHRvIGNvbHVtbiBwYXRocykKK1NFTEVDVCAq CitGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1sxLDIsM10nLAorCSckWypdID8gKEAgPCAk eCknCisJCVBBU1NJTkcgMTAgQVMgeAorCQlDT0xVTU5TICh5IHRleHQgRk9STUFUIEpTT04g UEFUSCAnJCA/IChAIDwgJHgpJykKKwkpIGp0OworRVJST1I6ICBjb3VsZCBub3QgZmluZCBq c29ucGF0aCB2YXJpYWJsZSAieCIKKy0tIEV4dGVuc2lvbjogbm9uLWNvbnN0YW50IEpTT04g cGF0aAorU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcu JyB8fCAnYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8 ICdhJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEyMworKDEgcm93KQorCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2In IERFRkFVTFQgJ2ZvbycgT04gRU1QVFkpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyBmb28KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30n LCAnJCcgfHwgJy4nIHx8ICdhJyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIDEy MworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMTIzfScsICck JyB8fCAnLicgfHwgJ2EnIFdJVEggV1JBUFBFUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0t LS0tLQorIFsxMjNdCisoMSByb3cpCisKKy0tIFNob3VsZCBmYWlsIChpbnZhbGlkIHBhdGgp CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMTIzfScsICdlcnJvcicgfHwgJyAn IHx8ICdlcnJvcicpOworRVJST1I6ICBzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgSURFTlRf UCBhdCBvciBuZWFyICIgIiBvZiBqc29ucGF0aCBpbnB1dAorLS0gU2hvdWxkIGZhaWwgKG5v dCBzdXBwb3J0ZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJ3siYSI6IDEy M30nLCAnJCcgfHwgJy4nIHx8ICdhJyBDT0xVTU5TIChmb28gaW50KSk7CitFUlJPUjogIG9u bHkgc3RyaW5nIGNvbnN0YW50cyBzdXBwb3J0ZWQgaW4gSlNPTl9UQUJMRSBwYXRoIHNwZWNp ZmljYXRpb24KK0xJTkUgMTogU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICd7ImEi OiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFRlc3QgcGFyYWxsZWwgSlNPTl9W QUxVRSgpCitDUkVBVEUgVEFCTEUgdGVzdF9wYXJhbGxlbF9qc29uYl92YWx1ZSBBUworU0VM RUNUIGk6OnRleHQ6Ompzb25iIEFTIGpzCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAw MDAwKSBpOworLS0gU2hvdWxkIGJlIG5vbi1wYXJhbGxlbCBkdWUgdG8gc3VidHJhbnNhY3Rp b25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgc3VtKEpTT05fVkFMVUUoanMsICck JyBSRVRVUk5JTkcgbnVtZXJpYykpIEZST00gdGVzdF9wYXJhbGxlbF9qc29uYl92YWx1ZTsK KyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgU2VxIFNjYW4gb24gdGVzdF9wYXJhbGxlbF9qc29uYl92YWx1ZQorKDIgcm93cykK KworU0VMRUNUIHN1bShKU09OX1ZBTFVFKGpzLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMpKSBG Uk9NIHRlc3RfcGFyYWxsZWxfanNvbmJfdmFsdWU7CisgICAgIHN1bSAgICAgIAorLS0tLS0t LS0tLS0tLS0KKyA1MDAwMDA1MDAwMDAKKygxIHJvdykKKworLS0gU2hvdWxkIGJlIHBhcmFs bGVsCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgc3VtKEpTT05fVkFMVUUoanMsICck JyBSRVRVUk5JTkcgbnVtZXJpYyBFUlJPUiBPTiBFUlJPUikpIEZST00gdGVzdF9wYXJhbGxl bF9qc29uYl92YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUg QWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIK KyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIFNlcSBTY2FuIG9uIHRlc3RfcGFyYWxsZWxfanNvbmJfdmFsdWUKKyg1IHJvd3Mp CisKK1NFTEVDVCBzdW0oSlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyBudW1lcmljIEVS Uk9SIE9OIEVSUk9SKSkgRlJPTSB0ZXN0X3BhcmFsbGVsX2pzb25iX3ZhbHVlOworICAgICBz dW0gICAgICAKKy0tLS0tLS0tLS0tLS0tCisgNTAwMDAwNTAwMDAwCisoMSByb3cpCisKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25fc3FsanNvbi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3FsCmluZGV4IDRmMzBmYTQ2YjkuLmRm NGE0MzBkODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25fc3FsanNv bi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9zcWxqc29uLnNxbApAQCAt OSwzICs5LDcgQEAgU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsK IC0tIEpTT05fUVVFUlkKIAogU0VMRUNUIEpTT05fUVVFUlkoTlVMTCBGT1JNQVQgSlNPTiwg JyQnKTsKKworLS0gSlNPTl9UQUJMRQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVM TCBGT1JNQVQgSlNPTiwgJyQnIENPTFVNTlMgKGZvbyB0ZXh0KSk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCmluZGV4IDAwYTA2N2EwNmEuLjhiODEzYTNjMmUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCkBAIC0zMTUsMyAr MzE1LDI4NyBAQCBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgpCiBDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRvICQuYSA/ IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsK IENSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckWzEsICQuYSA/IChALmRhdGV0aW1lKCJISDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEy OjM0Jzo6dGltZSBBUyB4KSk7CiBEUk9QIFRBQkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsK KworLS0gSlNPTl9UQUJMRQorCistLSBTaG91bGQgZmFpbCAoSlNPTl9UQUJMRSBjYW4gYmUg dXNlZCBvbmx5IGluIEZST00gY2xhdXNlKQorU0VMRUNUIEpTT05fVEFCTEUoJ1tdJywgJyQn KTsKKworLS0gU2hvdWxkIGZhaWwgKG5vIGNvbHVtbnMpCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoTlVMTCwgJyQnIENPTFVNTlMgKCkpOworCistLSBOVUxMID0+IGVtcHR5IHRhYmxl CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTDo6anNvbmIsICckJyBDT0xVTU5TIChm b28gaW50KSkgYmFyOworCistLQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcx MjMnLCAnJCcKKwlDT0xVTU5TIChpdGVtIGludCBQQVRIICckJywgZm9vIGludCkpIGJhcjsK KworLS0gSlNPTl9UQUJMRTogYmFzaWMgZnVuY3Rpb25hbGl0eQorQ1JFQVRFIERPTUFJTiBq c29uYl90ZXN0X2RvbWFpbiBBUyB0ZXh0IENIRUNLICh2YWx1ZSA8PiAnZm9vJyk7CisKK1NF TEVDVCAqCitGUk9NCisJKFZBTFVFUworCQkoJzEnKSwKKwkJKCdbXScpLAorCQkoJ3t9Jyks CisJCSgnWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRy dWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXScpCisJKSB2YWxzKGpzKQor CUxFRlQgT1VURVIgSk9JTgorLS0gSlNPTl9UQUJMRSBpcyBpbXBsaWNpdGx5IGxhdGVyYWwK KwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5T ICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJaWQyIEZPUiBPUkRJTkFMSVRZLCAtLSBh bGxvd2VkIGFkZGl0aW9uYWwgb3JkaW5hbGl0eSBjb2x1bW5zCisJCQkiaW50IiBpbnQgUEFU SCAnJCcsCisJCQkidGV4dCIgdGV4dCBQQVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQp IFBBVEggJyQnLAorCQkJImJvb2wiIGJvb2wgUEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVt ZXJpYyBQQVRIICckJywKKwkJCSJkb21haW4iIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQn LAorCQkJanMganNvbiBQQVRIICckJywKKwkJCWpiIGpzb25iIFBBVEggJyQnLAorCQkJanN0 IHRleHQgICAgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFU IEpTT04gIFBBVEggJyQnLAorCQkJanN2IHZhcmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEgg JyQnLAorCQkJanNiIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJanNicSBqc29u YiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWFhYSBpbnQsIC0tIGlt cGxpY2l0IHBhdGggJyQuImFhYSInLAorCQkJYWFhMSBpbnQgUEFUSCAnJC5hYWEnLAorCQkJ ZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMyIGludCBFWElT VFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMyBpbnQgRVhJU1RTIFBBVEggJ3N0cmljdCAk LmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKwkJCWV4aXN0czQgdGV4dCBFWElTVFMgUEFUSCAn c3RyaWN0ICQuYWFhJyBGQUxTRSBPTiBFUlJPUiwKKworCQkJanMyIGpzb24gUEFUSCAnJCcs CisJCQlqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29u YiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEg dGV4dFtdIFBBVEggJyQnLAorCQkJamJhIGpzb25iW10gUEFUSCAnJCcKKwkJKQorCSkganQK KwlPTiB0cnVlOworCistLSBKU09OX1RBQkxFOiBUZXN0IGJhY2t3YXJkIHBhcnNpbmcKKwor Q1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldyBBUworU0VMRUNUICogRlJPTQorCUpTT05f VEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEs IGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFM SVRZLAorCQkJaWQyIEZPUiBPUkRJTkFMSVRZLCAtLSBhbGxvd2VkIGFkZGl0aW9uYWwgb3Jk aW5hbGl0eSBjb2x1bW5zCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQkidGV4dCIgdGV4 dCBQQVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEggJyQnLAorCQkJImJvb2wi IGJvb2wgUEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKwkJCSJk b21haW4iIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJanMganNvbiBQQVRIICck JywKKwkJCWpiIGpzb25iIFBBVEggJyQnLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpTT04g IFBBVEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJ anN2IHZhcmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNiIGpzb25iICAg Rk9STUFUIEpTT04gUEFUSCAnJCcsCisJCQlqc2JxIGpzb25iIEZPUk1BVCBKU09OIFBBVEgg JyQnIE9NSVQgUVVPVEVTLAorCQkJYWFhIGludCwgLS0gaW1wbGljaXQgcGF0aCAnJC4iYWFh IicsCisJCQlhYWExIGludCBQQVRIICckLmFhYScsCisJCQlleGlzdHMxIGJvb2wgRVhJU1RT IFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czIgaW50IEVYSVNUUyBQQVRIICckLmFhYScgVFJV RSBPTiBFUlJPUiwKKwkJCWV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFh JyBVTktOT1dOIE9OIEVSUk9SLAorCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3 IGpzb25iIFBBVEggJyQnIFdJVEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQn IE9NSVQgUVVPVEVTLAorCQkJaWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFU SCAnJCcsCisJCQlqYmEganNvbmJbXSBQQVRIICckJywKKworCQkJTkVTVEVEIFBBVEggJyRb MV0nIENPTFVNTlMgKAorCQkJCWExIGludCwKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQ09M VU1OUyAoCisJCQkJCWExMSB0ZXh0CisJCQkJKSwKKwkJCQliMSB0ZXh0CisJCQkpLAorCQkJ TkVTVEVEIFBBVEggJyRbMl0nIENPTFVNTlMgKAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBD T0xVTU5TICgKKwkJCQkJYTIxIHRleHQKKwkJCQkpLAorCQkJCU5FU1RFRCBQQVRIICckWypd JyBDT0xVTU5TICgKKwkJCQkJYTIyIHRleHQKKwkJCQkpCisJCQkpCisJCSkKKwkpOworCitc c3YganNvbmJfdGFibGVfdmlldworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNF TEVDVCAqIEZST00ganNvbmJfdGFibGVfdmlldzsKKworRFJPUCBWSUVXIGpzb25iX3RhYmxl X3ZpZXc7CitEUk9QIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbjsKKworLS0gSlNPTl9UQUJM RTogT04gRU1QVFkvT04gRVJST1IgYmVoYXZpb3IKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVF UyAoJzEnKSwgKCciZXJyIicpKSB2YWxzKGpzKSwKKwlKU09OX1RBQkxFKHZhbHMuanM6Ompz b25iLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcpKSBqdDsKKworU0VMRUNUICoKK0ZS T00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIg Sk9JTgorCUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICckJykgRVJST1IgT04gRVJST1IpIGp0CisJCU9OIHRydWU7CisKK1NFTEVDVCAqCitG Uk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicpKSB2YWxzKGpzKQorCQlMRUZUIE9VVEVS IEpPSU4KKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25iLCAnJCcgQ09MVU1OUyAoYSBpbnQg UEFUSCAnJCcgRVJST1IgT04gRVJST1IpKSBqdAorCQlPTiB0cnVlOworCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJC5h JyBFUlJPUiBPTiBFTVBUWSkpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVN UFRZKSBFUlJPUiBPTiBFUlJPUikganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnbGF4ICQuYScgRVJST1IgT04gRU1Q VFkpIEVSUk9SIE9OIEVSUk9SKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpz b25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcgICBERUZBVUxUIDEgT04g RU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3QgJC5hJyBE RUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICds YXggJC5hJyBERUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CisK Ky0tIEpTT05fVEFCTEU6IEVYSVNUUyBQQVRIIHR5cGVzCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDQgRVhJU1RTIFBBVEggJyQu YScpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgaW50MiBFWElTVFMgUEFUSCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQ4IEVYSVNUUyBQQVRIICckLmEn KSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5T IChhIGZsb2F0NCBFWElTVFMgUEFUSCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBjaGFyKDMpIEVYSVNUUyBQQVRIICck LmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xV TU5TIChhIGpzb24gRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbmIgRVhJU1RTIFBBVEggJyQu YScpKTsKKworLS0gSlNPTl9UQUJMRTogbmVzdGVkIHBhdGhzIGFuZCBwbGFucworCistLSBT aG91bGQgZmFpbCAoY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QpCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCWEgaW50 LAorCQliIHRleHQsCisJCWEganNvbmIKKwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlO RVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQljIGludCwKKwkJCWIgdGV4dAorCQkp CisJKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScs ICckJworCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQli IGludAorCQkpLAorCQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcKKwkJCUNPTFVNTlMgKAorCQkJCWMgaW50LAorCQkJCWIgdGV4dAorCQkJKQor CQkpCisJKQorKSBqdDsKKworLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRpb24KKworQ1JF QVRFIFRFTVAgVEFCTEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIpOworCitJTlNFUlQg SU5UTyBqc29uYl90YWJsZV90ZXN0CitWQUxVRVMgKAorCSdbCisJCXsiYSI6ICAxLCAgImIi OiBbXSwgImMiOiBbXX0sCisJCXsiYSI6ICAyLCAgImIiOiBbMSwgMiwgM10sICJjIjogWzEw LCBudWxsLCAyMF19LAorCQl7ImEiOiAgMywgICJiIjogWzEsIDJdLCAiYyI6IFtdfSwKKwkJ eyJ4IjogIjQiLCAiYiI6IFsxLCAyXSwgImMiOiAxMjN9CisJIF0nCispOworCistLSB1bnNw ZWNpZmllZCBwbGFuIChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNv bmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRb Kl0nCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGgg J2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAn c3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCSkganQ7 CisKKy0tIFNob3VsZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHJv b3QgYW5kIG5lc3RlZCBwYXRocykKK1NFTEVDVCAqCitGUk9NCisJZ2VuZXJhdGVfc2VyaWVz KDEsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIHksCisJSlNPTl9UQUJMRShqc29u YgorCQknW1sxLDIsM10sWzIsMyw0LDVdLFszLDQsNSw2XV0nLAorCQknc3RyaWN0ICRbKl0g PyAoQFsqXSA8ICR4KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlDT0xVTU5TICgK KwkJCXkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCU5FU1RFRCBQQVRIICdzdHJp Y3QgJFsqXSA/IChAID49ICR5KScKKwkJCUNPTFVNTlMgKAorCQkJCXogaW50IFBBVEggJyQn CisJCQkpCisJCSkKKwkpIGp0OworCistLSBTaG91bGQgZmFpbCAoSlNPTiBhcmd1bWVudHMg YXJlIG5vdCBwYXNzZWQgdG8gY29sdW1uIHBhdGhzKQorU0VMRUNUICoKK0ZST00gSlNPTl9U QUJMRSgKKwlqc29uYiAnWzEsMiwzXScsCisJJyRbKl0gPyAoQCA8ICR4KScKKwkJUEFTU0lO RyAxMCBBUyB4CisJCUNPTFVNTlMgKHkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckID8gKEAg PCAkeCknKQorCSkganQ7CisKKy0tIEV4dGVuc2lvbjogbm9uLWNvbnN0YW50IEpTT04gcGF0 aAorU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8 fCAnYScpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwg Jy4nIHx8ICdhJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAneyJhIjogMTIzfScsICck JyB8fCAnLicgfHwgJ2InIERFRkFVTFQgJ2ZvbycgT04gRU1QVFkpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7CitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnIFdJVEgg V1JBUFBFUik7CistLSBTaG91bGQgZmFpbCAoaW52YWxpZCBwYXRoKQorU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnZXJyb3InIHx8ICcgJyB8fCAnZXJyb3InKTsK Ky0tIFNob3VsZCBmYWlsIChub3Qgc3VwcG9ydGVkKQorU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScgQ09MVU1OUyAoZm9v IGludCkpOworCistLSBUZXN0IHBhcmFsbGVsIEpTT05fVkFMVUUoKQorQ1JFQVRFIFRBQkxF IHRlc3RfcGFyYWxsZWxfanNvbmJfdmFsdWUgQVMKK1NFTEVDVCBpOjp0ZXh0Ojpqc29uYiBB UyBqcworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDAwMCkgaTsKKworLS0gU2hvdWxk IGJlIG5vbi1wYXJhbGxlbCBkdWUgdG8gc3VidHJhbnNhY3Rpb25zCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1Qgc3VtKEpTT05fVkFMVUUoanMsICckJyBSRVRVUk5JTkcgbnVtZXJp YykpIEZST00gdGVzdF9wYXJhbGxlbF9qc29uYl92YWx1ZTsKK1NFTEVDVCBzdW0oSlNPTl9W QUxVRShqcywgJyQnIFJFVFVSTklORyBudW1lcmljKSkgRlJPTSB0ZXN0X3BhcmFsbGVsX2pz b25iX3ZhbHVlOworCistLSBTaG91bGQgYmUgcGFyYWxsZWwKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBzdW0oSlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyBudW1lcmljIEVS Uk9SIE9OIEVSUk9SKSkgRlJPTSB0ZXN0X3BhcmFsbGVsX2pzb25iX3ZhbHVlOworU0VMRUNU IHN1bShKU09OX1ZBTFVFKGpzLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMgRVJST1IgT04gRVJS T1IpKSBGUk9NIHRlc3RfcGFyYWxsZWxfanNvbmJfdmFsdWU7CmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CmluZGV4IGQ5YjgzZjc0NGYuLjZjODQxMmY1NTAgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CkBAIC0xMjM1LDYgKzEyMzUsMTQgQEAgSnNvblBhdGhQYXJzZVJl c3VsdAogSnNvblBhdGhQcmVkaWNhdGVDYWxsYmFjawogSnNvblBhdGhTdHJpbmcKIEpzb25T ZW1BY3Rpb24KK0pzb25UYWJsZQorSnNvblRhYmxlQ29sdW1uCitKc29uVGFibGVDb2x1bW5U eXBlCitKc29uVGFibGVDb250ZXh0CitKc29uVGFibGVKb2luU3RhdGUKK0pzb25UYWJsZVBh cmVudE5vZGUKK0pzb25UYWJsZVNjYW5TdGF0ZQorSnNvblRhYmxlU2libGluZ05vZGUKIEpz b25Ub2tlblR5cGUKIEpzb25UcmFuc2Zvcm1TdHJpbmdWYWx1ZXNBY3Rpb24KIEpzb25UeXBl Q2F0ZWdvcnkKQEAgLTI2MzMsNiArMjY0MSw3IEBAIFRhYmxlRnVuYwogVGFibGVGdW5jUm91 dGluZQogVGFibGVGdW5jU2NhbgogVGFibGVGdW5jU2NhblN0YXRlCitUYWJsZUZ1bmNUeXBl CiBUYWJsZUluZm8KIFRhYmxlTGlrZUNsYXVzZQogVGFibGVTYW1wbGVDbGF1c2UKLS0gCjIu MjUuMQoK --------------UNwjJjMgF1laO8cZ5D0bETkV Content-Type: text/x-patch; charset=UTF-8; name="0003-JSON_TABLE-PLAN-DEFAULT-clause-v57.patch" Content-Disposition: attachment; filename="0003-JSON_TABLE-PLAN-DEFAULT-clause-v57.patch" Content-Transfer-Encoding: base64 RnJvbSA3YTk0NmNmMmNmYTQ5ZGE1ZWNiOWYwYjAzN2M2OGQ3YTY2MGNiMjAyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogU2F0LCA1IE1hciAyMDIyIDA5OjAyOjIyIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCAzLzRdIEpTT05fVEFCTEUgUExBTiBERUZBVUxUIGNsYXVzZQoKLS0tCiBkb2Mvc3Jj L3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgMTE4ICsrKysrKysrKysr KysrKystLS0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICAg fCAgIDQgKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgICAgICAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgICAgIHwg ICAzICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICB8ICA0 MSArKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMgICAgICAg IHwgIDEzICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAgICAg ICB8IDEyMCArKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jICAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICB8ICAxMyArKysKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iX3NxbGpzb24ub3V0IHwgMTE4ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsICAgICAgfCAgNjUgKysrKysrKysrKysK IHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgIDEgKwog MTUgZmlsZXMgY2hhbmdlZCwgNDYyIGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVu Yy5zZ21sCmluZGV4IGMwZTVkYjhhOTkuLjUyNTMwZjU5ODcgMTAwNjQ0Ci0tLSBhL2RvYy9z 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 aWxkIGFuZCBwYXJlbnQgY29sdW1ucyBmb3IgYWxsIG1pc3NpbmcgdmFsdWVzLgotICAgICA8 L3BhcmE+Ci0KICAgICA8L3NlY3Q1PgogICAgIDxzZWN0NT4KICAgICAgPHRpdGxlPlBhcmFt ZXRlcnM8L3RpdGxlPgpAQCAtMTk1NzYsNiArMTk1NjUsMTAgQEAgd2hlcmUgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4g aXM6CiAgICAgIDxmdW5jdGlvbj5KU09OX1RBQkxFPC9mdW5jdGlvbj4gZXhwcmVzc2lvbnMg aW4gYW4gU1FMIHN0YXRlbWVudC4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAg WW91IGNhbiB1c2UgdGhlIDxsaXRlcmFsPlBMQU4gREVGQVVMVDwvbGl0ZXJhbD4gY2xhdXNl IHRvIGRlZmluZSBob3cKKyAgICAgdG8gam9pbiB0aGUgY29sdW1ucyByZXR1cm5lZCBieSA8 cmVwbGFjZWFibGU+TkVTVEVEIFBBVEg8L3JlcGxhY2VhYmxlPiBjbGF1c2VzLgorICAgIDwv cGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTE5NTk4 LDggKzE5NTkxLDk5IEBAIHdoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5q c29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IGlzOgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAg ICAgPGxpdGVyYWw+UExBTiBERUZBVUxUICggPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFj ZWFibGU+IDxvcHRpb25hbD4sIC4uLiA8L29wdGlvbmFsPiApPC9saXRlcmFsPgorICAgIDwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRGVmaW5lcyBob3cg dG8gam9pbiB0aGUgZGF0YSByZXR1cm5lZCBieSA8cmVwbGFjZWFibGU+TkVTVEVEIFBBVEg8 L3JlcGxhY2VhYmxlPgorICAgICAgY2xhdXNlcyB0byB0aGUgY29uc3RydWN0ZWQgdmlldy4g VGhlIDxsaXRlcmFsPklOTkVSPC9saXRlcmFsPiBhbmQKKyAgICAgIDxsaXRlcmFsPk9VVEVS PC9saXRlcmFsPiBvcHRpb25zIGRlZmluZSB0aGUgam9pbmluZyBwbGFuIGZvciBwYXJlbnQv Y2hpbGQKKyAgICAgIGNvbHVtbnMsIHdoaWxlIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+Q1JPU1M8L2xpdGVyYWw+CisgICAgICBhZmZlY3QgdGhlIHNpYmxpbmcg Y29sdW1ucy4gWW91IGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdCBwbGFucyBmb3IgYWxsCisg ICAgICBjb2x1bW5zIGF0IG9uY2UuCisgICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAg ICBUbyBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwLCB5b3Ug Y2FuIHVzZToKKyAgICA8L3BhcmE+CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4KKyAgICA8 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIFVzZSA8bGl0ZXJh bD5JTk5FUiBKT0lOPC9saXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50IHJvdworICAgICBp cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dCBpZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBjaGls ZCByb3dzCisgICAgIGFmdGVyIGpvaW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVy YWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ CisgICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxsaXRlcmFsPkxFRlQgT1VURVIgSk9J TjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cKKyAgICAgaXMgYWx3YXlzIGlu Y2x1ZGVkIGludG8gdGhlIG91dHB1dCBldmVuIGlmIGl0IGRvZXMgbm90IGhhdmUgYW55IGNo aWxkIHJvd3MKKyAgICAgYWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1cm5lZCBieSA8bGl0 ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMKKyAgICAgaW5z ZXJ0ZWQgaW50byB0aGUgY2hpbGQgY29sdW1ucyBpZiB0aGUgY29ycmVzcG9uZGluZworICAg ICB2YWx1ZXMgYXJlIG1pc3NpbmcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBU aGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBmb3Igam9pbmluZyBjb2x1bW5zIHdpdGggcGFy ZW50L2NoaWxkIHJlbGF0aW9uc2hpcC4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICAgICA8cGFyYT4K KyAgICAgVG8gam9pbiBzaWJsaW5nIGNvbHVtbnMsIHlvdSBjYW4gdXNlOgorICAgIDwvcGFy YT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4K KyAgICAgPGxpdGVyYWw+VU5JT048L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKworICAgIDxwYXJhPgorICAgICBVc2UgPGxpdGVyYWw+RlVMTCBPVVRFUiBKT0lO IE9OIEZBTFNFPC9saXRlcmFsPiwgc28gdGhhdCBib3RoIHBhcmVudCBhbmQgY2hpbGQKKyAg ICAgcm93cyBhcmUgaW5jbHVkZWQgaW50byB0aGUgb3V0cHV0LCB3aXRoIE5VTEwgdmFsdWVz IGluc2VydGVkCisgICAgIGludG8gYm90aCBjaGlsZCBhbmQgcGFycmVudCBjb2x1bW5zIGZv ciBhbGwgbWlzc2luZyB2YWx1ZXMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBU aGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBmb3Igam9pbmluZyBzaWJsaW5nIGNvbHVtbnMu CisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+Q1JPU1M8L2xp dGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAg ICBVc2UgPGxpdGVyYWw+Q1JPU1MgSk9JTjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIG91dHB1 dCBpbmNsdWRlcyAKKyAgICAgYSByb3cgZm9yIGV2ZXJ5IHBvc3NpYmxlIGNvbWJpbmF0aW9u IG9mIHJvd3MgZnJvbSB0aGUgbGVmdC1oYW5kCisgICAgIGFuZCB0aGUgcmlnaHQtaGFuZCBj b2x1bW5zLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgPC92YXJpYWJsZWxpc3Q+CiAKKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDU+CiAKICAgICA8c2Vj dDU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDgxYmRhNTQwNDIuLmU2ZGI1NzcxMmYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0yNjgwLDYgKzI2ODAsNyBAQCBfY29weUpz b25UYWJsZShjb25zdCBKc29uVGFibGUgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKGNvbHVt bnMpOwogCUNPUFlfTk9ERV9GSUVMRChvbl9lcnJvcik7CiAJQ09QWV9OT0RFX0ZJRUxEKGFs aWFzKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChqb2luX3R5cGUpOwogCUNPUFlfU0NBTEFSX0ZJ RUxEKGxvY2F0aW9uKTsKIAogCXJldHVybiBuZXdub2RlOwpAQCAtMjcxOCw2ICsyNzE5LDgg QEAgX2NvcHlKc29uVGFibGVQYXJlbnROb2RlKGNvbnN0IEpzb25UYWJsZVBhcmVudE5vZGUg KmZyb20pCiAKIAlDT1BZX05PREVfRklFTEQocGF0aCk7CiAJQ09QWV9OT0RFX0ZJRUxEKGNo aWxkKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChvdXRlckpvaW4pOworCUNPUFlfU0NBTEFSX0ZJ RUxEKHVuaW9uSm9pbik7CiAJQ09QWV9TQ0FMQVJfRklFTEQoY29sTWluKTsKIAlDT1BZX1ND QUxBUl9GSUVMRChjb2xNYXgpOwogCkBAIC0yNzM0LDYgKzI3MzcsNyBAQCBfY29weUpzb25U YWJsZVNpYmxpbmdOb2RlKGNvbnN0IEpzb25UYWJsZVNpYmxpbmdOb2RlICpmcm9tKQogCiAJ Q09QWV9OT0RFX0ZJRUxEKGxhcmcpOwogCUNPUFlfTk9ERV9GSUVMRChyYXJnKTsKKwlDT1BZ X1NDQUxBUl9GSUVMRChjcm9zcyk7CiAKIAlyZXR1cm4gbmV3bm9kZTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYwppbmRleCA5OTg1NjgwMGJkLi4xYzRhNDc1ZjU5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvZXF1YWxmdW5jcy5jCkBAIC0xNTIsNiArMTUyLDggQEAgX2VxdWFsSnNvblRhYmxlUGFy ZW50Tm9kZShjb25zdCBKc29uVGFibGVQYXJlbnROb2RlICphLCBjb25zdCBKc29uVGFibGVQ YXJlbnROb2QKIHsKIAlDT01QQVJFX05PREVfRklFTEQocGF0aCk7CiAJQ09NUEFSRV9OT0RF X0ZJRUxEKGNoaWxkKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChvdXRlckpvaW4pOworCUNP TVBBUkVfU0NBTEFSX0ZJRUxEKHVuaW9uSm9pbik7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQo Y29sTWluKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChjb2xNYXgpOwogCkBAIC0xNjMsNiAr MTY1LDcgQEAgX2VxdWFsSnNvblRhYmxlU2libGluZ05vZGUoY29uc3QgSnNvblRhYmxlU2li bGluZ05vZGUgKmEsIGNvbnN0IEpzb25UYWJsZVNpYmxpbmcKIHsKIAlDT01QQVJFX05PREVf RklFTEQobGFyZyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHJhcmcpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGNyb3NzKTsKIAogCXJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKaW5kZXggMzI5MGQyODA2NC4uYTE3ZWEyZThmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5j CkBAIC0xODc1LDYgKzE4NzUsOCBAQCBfb3V0SnNvblRhYmxlUGFyZW50Tm9kZShTdHJpbmdJ bmZvIHN0ciwgY29uc3QgSnNvblRhYmxlUGFyZW50Tm9kZSAqbm9kZSkKIAogCVdSSVRFX05P REVfRklFTEQocGF0aCk7CiAJV1JJVEVfTk9ERV9GSUVMRChjaGlsZCk7CisJV1JJVEVfQk9P TF9GSUVMRChvdXRlckpvaW4pOworCVdSSVRFX0JPT0xfRklFTEQodW5pb25Kb2luKTsKIAlX UklURV9JTlRfRklFTEQoY29sTWluKTsKIAlXUklURV9JTlRfRklFTEQoY29sTWF4KTsKIH0K QEAgLTE4ODYsNiArMTg4OCw3IEBAIF9vdXRKc29uVGFibGVTaWJsaW5nTm9kZShTdHJpbmdJ bmZvIHN0ciwgY29uc3QgSnNvblRhYmxlU2libGluZ05vZGUgKm5vZGUpCiAKIAlXUklURV9O T0RFX0ZJRUxEKGxhcmcpOwogCVdSSVRFX05PREVfRklFTEQocmFyZyk7CisJV1JJVEVfQk9P TF9GSUVMRChjcm9zcyk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYwppbmRleCBkODJmYzIyY2Q2Li4yNjcxMzdmY2UyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYwpAQCAtMTUwNCw2ICsxNTA0LDggQEAgX3JlYWRKc29uVGFibGVQYXJl bnROb2RlKHZvaWQpCiAKIAlSRUFEX05PREVfRklFTEQocGF0aCk7CiAJUkVBRF9OT0RFX0ZJ RUxEKGNoaWxkKTsKKwlSRUFEX0JPT0xfRklFTEQob3V0ZXJKb2luKTsKKwlSRUFEX0JPT0xf RklFTEQodW5pb25Kb2luKTsKIAlSRUFEX0lOVF9GSUVMRChjb2xNaW4pOwogCVJFQURfSU5U X0ZJRUxEKGNvbE1heCk7CiAKQEAgLTE1MTcsNiArMTUxOSw3IEBAIF9yZWFkSnNvblRhYmxl U2libGluZ05vZGUodm9pZCkKIAogCVJFQURfTk9ERV9GSUVMRChsYXJnKTsKIAlSRUFEX05P REVfRklFTEQocmFyZyk7CisJUkVBRF9CT09MX0ZJRUxEKGNyb3NzKTsKIAogCVJFQURfRE9O RSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNzAyYzgwMmU2OS4uZjIzYzkwMzQzMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC02OTEsNiArNjkxLDExIEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAKICV0eXBlIDxpdmFsPgkJanNvbl9lbmNvZGluZwogCQkJCQlqc29uX2VuY29k aW5nX2NsYXVzZV9vcHQKKwkJCQkJanNvbl90YWJsZV9wbGFuX2NsYXVzZV9vcHQKKwkJCQkJ anNvbl90YWJsZV9kZWZhdWx0X3BsYW4KKwkJCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5f Y2hvaWNlcworCQkJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlcgorCQkJ CQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91bmlvbl9jcm9zcwogCQkJCQlqc29uX3dyYXBw ZXJfY2xhdXNlX29wdAogCQkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKIAkJCQkJanNvbl9j b25kaXRpb25hbF9vcl91bmNvbmRpdGlvbmFsX29wdApAQCAtODA0LDcgKzgwOSw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VU X1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9X TkVSCiAKLQlQQVJBTExFTCBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNT V09SRCBQQVRIIFBMQUNJTkcgUExBTlMgUE9MSUNZCisJUEFSQUxMRUwgUEFSU0VSIFBBUlRJ QUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUEFUSCBQTEFDSU5HIFBMQU4gUExBTlMg UE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJF IFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VE VVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCkBAIC0xNTcxNSwxMyArMTU3 MjAsMTUgQEAganNvbl90YWJsZToKIAkJCUpTT05fVEFCTEUgJygnCiAJCQkJanNvbl9hcGlf Y29tbW9uX3N5bnRheAogCQkJCWpzb25fdGFibGVfY29sdW1uc19jbGF1c2UKKwkJCQlqc29u X3RhYmxlX3BsYW5fY2xhdXNlX29wdAogCQkJCWpzb25fdGFibGVfZXJyb3JfY2xhdXNlX29w dAogCQkJJyknCiAJCQkJewogCQkJCQlKc29uVGFibGUgKm4gPSBtYWtlTm9kZShKc29uVGFi bGUpOwogCQkJCQluLT5jb21tb24gPSAoSnNvbkNvbW1vbiAqKSAkMzsKIAkJCQkJbi0+Y29s dW1ucyA9ICQ0OwotCQkJCQluLT5vbl9lcnJvciA9ICQ1OworCQkJCQluLT5qb2luX3R5cGUg PSAkNTsKKwkJCQkJbi0+b25fZXJyb3IgPSAkNjsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsK IAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTE1ODU4LDYgKzE1ODY1LDM0IEBA IHBhdGhfb3B0OgogCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7IH0KIAkJOwogCitqc29uX3Rh YmxlX3BsYW5fY2xhdXNlX29wdDoKKwkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuCQkJCQl7 ICQkID0gJDE7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IEpTVFBKX09VVEVS IHwgSlNUUEpfVU5JT047IH0KKwkJOworCitqc29uX3RhYmxlX2RlZmF1bHRfcGxhbjoKKwkJ CVBMQU4gREVGQVVMVCAnKCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fY2hvaWNlcyAnKScg eyAkJCA9ICQ0OyB9CisJCTsKKworanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fY2hvaWNlczoK KwkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVyCQkJeyAkJCA9ICQxIHwg SlNUUEpfVU5JT047IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0 ZXIgJywnCisJCQkgIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Nyb3NzCQl7ICQk ID0gJDEgfCAkMzsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91bmlvbl9jcm9z cwkJeyAkJCA9ICQxIHwgSlNUUEpfT1VURVI7IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0 X3BsYW5fdW5pb25fY3Jvc3MgJywnCisJCQkgIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lu bmVyX291dGVyCQl7ICQkID0gJDEgfCAkMzsgfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVs dF9wbGFuX2lubmVyX291dGVyOgorCQkJSU5ORVJfUAkJCQkJCQkJCQl7ICQkID0gSlNUUEpf SU5ORVI7IH0KKwkJCXwgT1VURVJfUAkJCQkJCQkJCXsgJCQgPSBKU1RQSl9PVVRFUjsgfQor CQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Nyb3NzOgorCQkJVU5JT04J CQkJCQkJCQkJeyAkJCA9IEpTVFBKX1VOSU9OOyB9CisJCQl8IENST1NTCQkJCQkJCQkJCXsg JCQgPSBKU1RQSl9DUk9TUzsgfQorCQk7CisKIGpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQ6 CiAJCQlSRVRVUk5JTkcgVHlwZW5hbWUKIAkJCQl7CkBAIC0xNjczNiw2ICsxNjc3MSw3IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJ fCBQQVRICisJCQl8IFBMQU4KIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCiAJCQl8IFBSRUNF RElORwpAQCAtMTczNTEsNiArMTczODcsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8 IFBBU1NXT1JECiAJCQl8IFBBVEgKIAkJCXwgUExBQ0lORworCQkJfCBQTEFOCiAJCQl8IFBM QU5TCiAJCQl8IFBPTElDWQogCQkJfCBQT1NJVElPTgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2pzb250YWJsZS5jCmluZGV4IDRmNTgxOTQwZWYuLjdhYWE3MWI0OWQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKQEAgLTE3MiwxMiArMTcyLDEzIEBAIHRyYW5z Zm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihKc29uVGFibGVDb250ZXh0ICpjeHQsIEpzb25U YWJsZUNvbHVtbiAqanRjKQogfQogCiBzdGF0aWMgTm9kZSAqCi1tYWtlSnNvblRhYmxlU2li bGluZ0pvaW4oTm9kZSAqbG5vZGUsIE5vZGUgKnJub2RlKQorbWFrZUpzb25UYWJsZVNpYmxp bmdKb2luKGJvb2wgY3Jvc3MsIE5vZGUgKmxub2RlLCBOb2RlICpybm9kZSkKIHsKIAlKc29u VGFibGVTaWJsaW5nTm9kZSAqam9pbiA9IG1ha2VOb2RlKEpzb25UYWJsZVNpYmxpbmdOb2Rl KTsKIAogCWpvaW4tPmxhcmcgPSBsbm9kZTsKIAlqb2luLT5yYXJnID0gcm5vZGU7CisJam9p bi0+Y3Jvc3MgPSBjcm9zczsKIAogCXJldHVybiAoTm9kZSAqKSBqb2luOwogfQpAQCAtMTg1 LDcgKzE4Niw3IEBAIG1ha2VKc29uVGFibGVTaWJsaW5nSm9pbihOb2RlICpsbm9kZSwgTm9k ZSAqcm5vZGUpCiAvKgogICogUmVjdXJzaXZlbHkgdHJhbnNmb3JtIGNoaWxkIChuZXN0ZWQp IEpTT05fVEFCTEUgY29sdW1ucy4KICAqCi0gKiBDaGlsZCBjb2x1bW5zIGFyZSB0cmFuc2Zv cm1lZCBpbnRvIGEgYmluYXJ5IHRyZWUgb2YgdW5pb24tam9pbmVkCisgKiBDaGlsZCBjb2x1 bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIGEgYmluYXJ5IHRyZWUgb2YgdW5pb24vY3Jvc3Mt am9pbmVkCiAgKiBKc29uVGFibGVTaWJsaW5nTm9kZXMuCiAgKi8KIHN0YXRpYyBOb2RlICoK QEAgLTE5Myw4ICsxOTQsOSBAQCB0cmFuc2Zvcm1Kc29uVGFibGVDaGlsZENvbHVtbnMoSnNv blRhYmxlQ29udGV4dCAqY3h0LCBMaXN0ICpjb2x1bW5zKQogewogCU5vZGUJICAgKnJlcyA9 IE5VTEw7CiAJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJY3Jvc3MgPSBjeHQtPnRhYmxlLT5q b2luX3R5cGUgJiBKU1RQSl9DUk9TUzsKIAotCS8qIHRyYW5zZm9ybSBhbGwgbmVzdGVkIGNv bHVtbnMgaW50byB1bmlvbiBqb2luICovCisJLyogdHJhbnNmb3JtIGFsbCBuZXN0ZWQgY29s dW1ucyBpbnRvIHVuaW9uL2Nyb3Mgam9pbiAqLwogCWZvcmVhY2gobGMsIGNvbHVtbnMpCiAJ ewogCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwg bGZpcnN0KGxjKSk7CkBAIC0yMDYsNyArMjA4LDcgQEAgdHJhbnNmb3JtSnNvblRhYmxlQ2hp bGRDb2x1bW5zKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgTGlzdCAqY29sdW1ucykKIAkJbm9k ZSA9IHRyYW5zZm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihjeHQsIGp0Yyk7CiAKIAkJLyog am9pbiB0cmFuc2Zvcm1lZCBub2RlIHdpdGggcHJldmlvdXMgc2libGluZyBub2RlcyAqLwot CQlyZXMgPSByZXMgPyBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4ocmVzLCBub2RlKSA6IG5v ZGU7CisJCXJlcyA9IHJlcyA/IG1ha2VKc29uVGFibGVTaWJsaW5nSm9pbihjcm9zcywgcmVz LCBub2RlKSA6IG5vZGU7CiAJfQogCiAJcmV0dXJuIHJlczsKQEAgLTM4NCw2ICszODYsOSBA QCB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgTGlz dCAqY29sdW1ucywgY2hhciAqcGF0aFNwZWMsCiAJLyogdHJhbnNmb3JtIHJlY3Vyc2l2ZWx5 IG5lc3RlZCBjb2x1bW5zICovCiAJbm9kZS0+Y2hpbGQgPSB0cmFuc2Zvcm1Kc29uVGFibGVD aGlsZENvbHVtbnMoY3h0LCBjb2x1bW5zKTsKIAorCW5vZGUtPm91dGVySm9pbiA9IGN4dC0+ dGFibGUtPmpvaW5fdHlwZSAmIEpTVFBKX09VVEVSOworCW5vZGUtPnVuaW9uSm9pbiA9IGN4 dC0+dGFibGUtPmpvaW5fdHlwZSAmIEpTVFBKX1VOSU9OOworCiAJcmV0dXJuIG5vZGU7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCmluZGV4IGYwMDc4Yjc4 NzQuLmY4NTAzOTJhYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMu YwpAQCAtMTc1LDYgKzE3NSw3IEBAIHN0cnVjdCBKc29uVGFibGVTY2FuU3RhdGUKIAlEYXR1 bQkJY3VycmVudDsKIAlpbnQJCQlvcmRpbmFsOwogCWJvb2wJCWN1cnJlbnRJc051bGw7CisJ Ym9vbAkJb3V0ZXJKb2luOwogCWJvb2wJCWVycm9yT25FcnJvcjsKIAlib29sCQlhZHZhbmNl TmVzdGVkOwogCWJvb2wJCXJlc2V0OwpAQCAtMTg4LDYgKzE4OSw3IEBAIHN0cnVjdCBKc29u VGFibGVKb2luU3RhdGUKIAkJewogCQkJSnNvblRhYmxlSm9pblN0YXRlICpsZWZ0OwogCQkJ SnNvblRhYmxlSm9pblN0YXRlICpyaWdodDsKKwkJCWJvb2wJCWNyb3NzOwogCQkJYm9vbAkJ YWR2YW5jZVJpZ2h0OwogCQl9CQkJam9pbjsKIAkJSnNvblRhYmxlU2NhblN0YXRlIHNjYW47 CkBAIC0zMTY2LDYgKzMxNjgsNyBAQCBKc29uVGFibGVJbml0U2NhblN0YXRlKEpzb25UYWJs ZUNvbnRleHQgKmN4dCwgSnNvblRhYmxlU2NhblN0YXRlICpzY2FuLAogCWludAkJCWk7CiAK IAlzY2FuLT5wYXJlbnQgPSBwYXJlbnQ7CisJc2Nhbi0+b3V0ZXJKb2luID0gbm9kZS0+b3V0 ZXJKb2luOwogCXNjYW4tPmVycm9yT25FcnJvciA9IG5vZGUtPmVycm9yT25FcnJvcjsKIAlz Y2FuLT5wYXRoID0gRGF0dW1HZXRKc29uUGF0aFAobm9kZS0+cGF0aC0+Y29uc3R2YWx1ZSk7 CiAJc2Nhbi0+YXJncyA9IGFyZ3M7CkBAIC0zMTkyLDYgKzMxOTUsNyBAQCBKc29uVGFibGVJ bml0UGxhblN0YXRlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgTm9kZSAqcGxhbiwKIAkJSnNv blRhYmxlU2libGluZ05vZGUgKmpvaW4gPSBjYXN0Tm9kZShKc29uVGFibGVTaWJsaW5nTm9k ZSwgcGxhbik7CiAKIAkJc3RhdGUtPmlzX2pvaW4gPSB0cnVlOworCQlzdGF0ZS0+dS5qb2lu LmNyb3NzID0gam9pbi0+Y3Jvc3M7CiAJCXN0YXRlLT51LmpvaW4ubGVmdCA9IEpzb25UYWJs ZUluaXRQbGFuU3RhdGUoY3h0LCBqb2luLT5sYXJnLCBwYXJlbnQpOwogCQlzdGF0ZS0+dS5q b2luLnJpZ2h0ID0gSnNvblRhYmxlSW5pdFBsYW5TdGF0ZShjeHQsIGpvaW4tPnJhcmcsIHBh cmVudCk7CiAJfQpAQCAtMzMyOCw4ICszMzMyLDI2IEBAIEpzb25UYWJsZVNldERvY3VtZW50 KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIERhdHVtIHZhbHVlKQogCUpzb25UYWJsZVJl c2V0Q29udGV4dEl0ZW0oJmN4dC0+cm9vdCwgdmFsdWUpOwogfQogCisvKiBSZWN1cnNpdmVs eSByZXNldCBzY2FuIGFuZCBpdHMgY2hpbGQgbm9kZXMgKi8KK3N0YXRpYyB2b2lkCitKc29u VGFibGVSZXNjYW5SZWN1cnNpdmUoSnNvblRhYmxlSm9pblN0YXRlICpzdGF0ZSkKK3sKKwlp ZiAoc3RhdGUtPmlzX2pvaW4pCisJeworCQlKc29uVGFibGVSZXNjYW5SZWN1cnNpdmUoc3Rh dGUtPnUuam9pbi5sZWZ0KTsKKwkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZlKHN0YXRlLT51 LmpvaW4ucmlnaHQpOworCQlzdGF0ZS0+dS5qb2luLmFkdmFuY2VSaWdodCA9IGZhbHNlOwor CX0KKwllbHNlCisJeworCQlKc29uVGFibGVSZXNjYW4oJnN0YXRlLT51LnNjYW4pOworCQlp ZiAoc3RhdGUtPnUuc2Nhbi5uZXN0ZWQpCisJCQlKc29uVGFibGVSZXNjYW5SZWN1cnNpdmUo c3RhdGUtPnUuc2Nhbi5uZXN0ZWQpOworCX0KK30KKwogLyoKLSAqIEZldGNoIG5leHQgcm93 IGZyb20gYSB1bmlvbiBqb2luZWQgc2Nhbi4KKyAqIEZldGNoIG5leHQgcm93IGZyb20gYSBj cm9zcy91bmlvbiBqb2luZWQgc2Nhbi4KICAqCiAgKiBSZXR1cm5lZCBmYWxzZSBhdCB0aGUg ZW5kIG9mIGEgc2NhbiwgdHJ1ZSBvdGhlcndpc2UuCiAgKi8KQEAgLTMzMzksMTcgKzMzNjEs NDggQEAgSnNvblRhYmxlTmV4dEpvaW5Sb3coSnNvblRhYmxlSm9pblN0YXRlICpzdGF0ZSkK IAlpZiAoIXN0YXRlLT5pc19qb2luKQogCQlyZXR1cm4gSnNvblRhYmxlTmV4dFJvdygmc3Rh dGUtPnUuc2Nhbik7CiAKLQlpZiAoIXN0YXRlLT51LmpvaW4uYWR2YW5jZVJpZ2h0KQorCWlm IChzdGF0ZS0+dS5qb2luLmFkdmFuY2VSaWdodCkKIAl7Ci0JCS8qIGZldGNoIG5leHQgb3V0 ZXIgcm93ICovCi0JCWlmIChKc29uVGFibGVOZXh0Sm9pblJvdyhzdGF0ZS0+dS5qb2luLmxl ZnQpKQorCQkvKiBmZXRjaCBuZXh0IGlubmVyIHJvdyAqLworCQlpZiAoSnNvblRhYmxlTmV4 dEpvaW5Sb3coc3RhdGUtPnUuam9pbi5yaWdodCkpCiAJCQlyZXR1cm4gdHJ1ZTsKIAotCQlz dGF0ZS0+dS5qb2luLmFkdmFuY2VSaWdodCA9IHRydWU7CS8qIG5leHQgaW5uZXIgcm93ICov CisJCS8qIGlubmVyIHJvd3MgYXJlIGV4aGF1c3RlZCAqLworCQlpZiAoc3RhdGUtPnUuam9p bi5jcm9zcykKKwkJCXN0YXRlLT51LmpvaW4uYWR2YW5jZVJpZ2h0ID0gZmFsc2U7CS8qIG5l eHQgb3V0ZXIgcm93ICovCisJCWVsc2UKKwkJCXJldHVybiBmYWxzZTsJLyogZW5kIG9mIHNj YW4gKi8KIAl9CiAKLQkvKiBmZXRjaCBuZXh0IGlubmVyIHJvdyAqLwotCXJldHVybiBKc29u VGFibGVOZXh0Sm9pblJvdyhzdGF0ZS0+dS5qb2luLnJpZ2h0KTsKKwl3aGlsZSAoIXN0YXRl LT51LmpvaW4uYWR2YW5jZVJpZ2h0KQorCXsKKwkJLyogZmV0Y2ggbmV4dCBvdXRlciByb3cg Ki8KKwkJYm9vbAkJbGVmdCA9IEpzb25UYWJsZU5leHRKb2luUm93KHN0YXRlLT51LmpvaW4u bGVmdCk7CisKKwkJaWYgKHN0YXRlLT51LmpvaW4uY3Jvc3MpCisJCXsKKwkJCWlmICghbGVm dCkKKwkJCQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCisKKwkJCUpzb25UYWJs ZVJlc2NhblJlY3Vyc2l2ZShzdGF0ZS0+dS5qb2luLnJpZ2h0KTsKKworCQkJaWYgKCFKc29u VGFibGVOZXh0Sm9pblJvdyhzdGF0ZS0+dS5qb2luLnJpZ2h0KSkKKwkJCQljb250aW51ZTsJ LyogbmV4dCBvdXRlciByb3cgKi8KKworCQkJc3RhdGUtPnUuam9pbi5hZHZhbmNlUmlnaHQg PSB0cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAqLworCQl9CisJCWVsc2UgaWYgKCFsZWZ0KQor CQl7CisJCQlpZiAoIUpzb25UYWJsZU5leHRKb2luUm93KHN0YXRlLT51LmpvaW4ucmlnaHQp KQorCQkJCXJldHVybiBmYWxzZTsJLyogZW5kIG9mIHNjYW4gKi8KKworCQkJc3RhdGUtPnUu am9pbi5hZHZhbmNlUmlnaHQgPSB0cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAqLworCQl9CisK KwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHRydWU7CiB9CiAKIC8qIFJlY3Vyc2l2ZWx5IHNl dCAncmVzZXQnIGZsYWcgb2Ygc2NhbiBhbmQgaXRzIGNoaWxkIG5vZGVzICovCkBAIC0zMzcz LDE2ICszNDI2LDEzIEBAIEpzb25UYWJsZUpvaW5SZXNldChKc29uVGFibGVKb2luU3RhdGUg KnN0YXRlKQogfQogCiAvKgotICogRmV0Y2ggbmV4dCByb3cgZnJvbSBhIHNpbXBsZSBzY2Fu IHdpdGggb3V0ZXIgam9pbmVkIG5lc3RlZCBzdWJzY2Fucy4KKyAqIEZldGNoIG5leHQgcm93 IGZyb20gYSBzaW1wbGUgc2NhbiB3aXRoIG91dGVyL2lubmVyIGpvaW5lZCBuZXN0ZWQgc3Vi c2NhbnMuCiAgKgogICogUmV0dXJuZWQgZmFsc2UgYXQgdGhlIGVuZCBvZiBhIHNjYW4sIHRy dWUgb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogSnNvblRhYmxlTmV4dFJvdyhKc29u VGFibGVTY2FuU3RhdGUgKnNjYW4pCiB7Ci0JSnNvbmJWYWx1ZSAqamJ2OwotCU1lbW9yeUNv bnRleHQgb2xkY3h0OwotCiAJLyogcmVzZXQgY29udGV4dCBpdGVtIGlmIHJlcXVlc3RlZCAq LwogCWlmIChzY2FuLT5yZXNldCkKIAl7CkBAIC0zMzk0LDM0ICszNDQ0LDQ0IEBAIEpzb25U YWJsZU5leHRSb3coSnNvblRhYmxlU2NhblN0YXRlICpzY2FuKQogCWlmIChzY2FuLT5hZHZh bmNlTmVzdGVkKQogCXsKIAkJLyogZmV0Y2ggbmV4dCBuZXN0ZWQgcm93ICovCi0JCWlmIChK c29uVGFibGVOZXh0Sm9pblJvdyhzY2FuLT5uZXN0ZWQpKQotCQkJcmV0dXJuIHRydWU7CisJ CXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBKc29uVGFibGVOZXh0Sm9pblJvdyhzY2FuLT5uZXN0 ZWQpOwogCi0JCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBmYWxzZTsKKwkJaWYgKHNjYW4tPmFk dmFuY2VOZXN0ZWQpCisJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKLQkvKiBmZXRjaCBuZXh0IHJv dyAqLwotCWpidiA9IEpzb25WYWx1ZUxpc3ROZXh0KCZzY2FuLT5mb3VuZCwgJnNjYW4tPml0 ZXIpOwotCi0JaWYgKCFqYnYpCisJZm9yICg7OykKIAl7Ci0JCXNjYW4tPmN1cnJlbnQgPSBQ b2ludGVyR2V0RGF0dW0oTlVMTCk7Ci0JCXNjYW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOwot CQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCi0JfQorCQkvKiBmZXRjaCBuZXh0 IHJvdyAqLworCQlKc29uYlZhbHVlICpqYnYgPSBKc29uVmFsdWVMaXN0TmV4dCgmc2Nhbi0+ Zm91bmQsICZzY2FuLT5pdGVyKTsKKwkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKLQkvKiBz ZXQgY3VycmVudCByb3cgaXRlbSAqLwotCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhzY2FuLT5tY3h0KTsKLQlzY2FuLT5jdXJyZW50ID0gSnNvbmJQR2V0RGF0dW0oSnNvbmJW YWx1ZVRvSnNvbmIoamJ2KSk7Ci0Jc2Nhbi0+Y3VycmVudElzTnVsbCA9IGZhbHNlOwotCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCQlpZiAoIWpidikKKwkJeworCQkJc2Nh bi0+Y3VycmVudCA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwkJCXNjYW4tPmN1cnJlbnRJ c051bGwgPSB0cnVlOworCQkJcmV0dXJuIGZhbHNlOwkvKiBlbmQgb2Ygc2NhbiAqLworCQl9 CiAKLQlzY2FuLT5vcmRpbmFsKys7CisJCS8qIHNldCBjdXJyZW50IHJvdyBpdGVtICovCisJ CW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzY2FuLT5tY3h0KTsKKwkJc2Nhbi0+ Y3VycmVudCA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGpidikpOworCQlz Y2FuLT5jdXJyZW50SXNOdWxsID0gZmFsc2U7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjeHQpOworCisJCXNjYW4tPm9yZGluYWwrKzsKKworCQlpZiAoIXNjYW4tPm5lc3RlZCkK KwkJCWJyZWFrOwogCi0JaWYgKHNjYW4tPm5lc3RlZCkKLQl7CiAJCUpzb25UYWJsZUpvaW5S ZXNldChzY2FuLT5uZXN0ZWQpOworCiAJCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBKc29uVGFi bGVOZXh0Sm9pblJvdyhzY2FuLT5uZXN0ZWQpOworCisJCWlmIChzY2FuLT5hZHZhbmNlTmVz dGVkIHx8IHNjYW4tPm91dGVySm9pbikKKwkJCWJyZWFrOworCisJCS8qIHN0YXRlLT5vcmRp bmFsLS07ICovCS8qIHNraXAgY3VycmVudCBvdXRlciByb3csIHJlc2V0IGNvdW50ZXIgKi8K IAl9CiAKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRl eCA0NjM1NjhiYmZkLi4yODIyOTJmMGY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCkBAIC0xMTI5MSw2ICsxMTI5MSwxNSBAQCBnZXRfanNvbl90YWJsZShUYWJsZUZ1bmMg KnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQogCiAJ Z2V0X2pzb25fdGFibGVfY29sdW1ucyh0Ziwgcm9vdCwgY29udGV4dCwgc2hvd2ltcGxpY2l0 KTsKIAorCWlmICghcm9vdC0+b3V0ZXJKb2luIHx8ICFyb290LT51bmlvbkpvaW4pCisJewor CQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFwcGVuZENvbnRleHRLZXl3 b3JkKGNvbnRleHQsICJQTEFOIERFRkFVTFQiLCAwLCAwLCAwKTsKKwkJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIoJXMsICVzKSIsCisJCQkJCQkgcm9vdC0+b3V0ZXJKb2luID8gIk9VVEVS IiA6ICJJTk5FUiIsCisJCQkJCQkgcm9vdC0+dW5pb25Kb2luID8gIlVOSU9OIiA6ICJDUk9T UyIpOworCX0KKwogCWlmIChqZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJ T1JfRU1QVFkpCiAJCWdldF9qc29uX2JlaGF2aW9yKGpleHByLT5vbl9lcnJvciwgY29udGV4 dCwgIkVSUk9SIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBhYWFmOGQ4YjNi Li41N2Y5NGM1NTZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNjU2LDYgKzE2 NTYsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29sdW1uCiAJaW50CQkJbG9jYXRp b247CQkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gSnNvblRh YmxlQ29sdW1uOwogCisvKgorICogSnNvblRhYmxlUGxhbkpvaW5UeXBlIC0KKyAqCQlmbGFn cyBmb3IgSlNPTl9UQUJMRSBqb2luIHR5cGVzIHJlcHJlc2VudGF0aW9uCisgKi8KK3R5cGVk ZWYgZW51bSBKc29uVGFibGVQbGFuSm9pblR5cGUKK3sKKwlKU1RQSl9JTk5FUiA9IDB4MDEs CisJSlNUUEpfT1VURVIgPSAweDAyLAorCUpTVFBKX0NST1NTID0gMHgwNCwKKwlKU1RQSl9V TklPTiA9IDB4MDgsCit9IEpzb25UYWJsZVBsYW5Kb2luVHlwZTsKKwogLyoKICAqIEpzb25U YWJsZSAtCiAgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxF CkBAIC0xNjY1LDYgKzE2NzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVGFibGUKIAlOb2Rl VGFnCQl0eXBlOwogCUpzb25Db21tb24gKmNvbW1vbjsJCQkJCS8qIGNvbW1vbiBKU09OIHBh dGggc3ludGF4IGZpZWxkcyAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkJCS8qIGxpc3Qgb2Yg SnNvblRhYmxlQ29sdW1uICovCisJSnNvblRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZTsJ LyogREVGQVVMVCBQTEFOIGpvaW4gdHlwZSAqLwogCUpzb25CZWhhdmlvciAqb25fZXJyb3I7 CQkJCS8qIE9OIEVSUk9SIGJlaGF2aW9yLCBpZiBzcGVjaWZpZWQgKi8KIAlBbGlhcwkgICAq YWxpYXM7CQkJCQkvKiB0YWJsZSBhbGlhcyBpbiBGUk9NIGNsYXVzZSAqLwogCWJvb2wJCWxh dGVyYWw7CQkJCS8qIGRvZXMgaXQgaGF2ZSBMQVRFUkFMIHByZWZpeD8gKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKaW5kZXggZGRkMGMxYThlMS4uOGM5MDgzOTJmNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKQEAgLTE0NzYsNiArMTQ3Niw4IEBAIHR5cGVkZWYgc3RydWN0IEpzb25U YWJsZVBhcmVudE5vZGUKIAlOb2RlVGFnCQl0eXBlOwogCUNvbnN0CSAgICpwYXRoOwkJLyog anNvbnBhdGggY29uc3RhbnQgKi8KIAlOb2RlCSAgICpjaGlsZDsJCS8qIG5lc3RlZCBjb2x1 bW5zLCBpZiBhbnkgKi8KKwlib29sCQlvdXRlckpvaW47CS8qIG91dGVyIG9yIGlubmVyIGpv aW4gZm9yIG5lc3RlZCBjb2x1bW5zPyAqLworCWJvb2wJCXVuaW9uSm9pbjsJLyogdW5pb24g b3IgY3Jvc3Mgam9pbiBmb3IgbmVzdGVkIGNvbHVtbnM/ICovCiAJaW50CQkJY29sTWluOwkJ LyogbWluIGNvbHVtbiBpbmRleCBpbiB0aGUgcmVzdWx0aW5nIGNvbHVtbiBsaXN0ICovCiAJ aW50CQkJY29sTWF4OwkJLyogbWF4IGNvbHVtbiBpbmRleCBpbiB0aGUgcmVzdWx0aW5nIGNv bHVtbiBsaXN0ICovCiAJYm9vbAkJZXJyb3JPbkVycm9yOyAvKiBFUlJPUi9FTVBUWSBPTiBF UlJPUiBiZWhhdmlvciAqLwpAQCAtMTQ5MCw2ICsxNDkyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg SnNvblRhYmxlU2libGluZ05vZGUKIAlOb2RlVGFnCQl0eXBlOwogCU5vZGUJICAgKmxhcmc7 CQkvKiBsZWZ0IGpvaW4gbm9kZSAqLwogCU5vZGUJICAgKnJhcmc7CQkvKiByaWdodCBqb2lu IG5vZGUgKi8KKwlib29sCQljcm9zczsJCS8qIGNyb3NzIG9yIHVuaW9uIGpvaW4/ICovCiB9 IEpzb25UYWJsZVNpYmxpbmdOb2RlOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmgKaW5kZXggYzczNjU3MDZhMy4uYWMxNzg4OTUxNyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaApAQCAtMzM0LDYgKzMzNCw3IEBAIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5H LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29y ZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJwYXRoIiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCitQR19LRVlXT1JEKCJwbGFuIiwgUExBTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9O LCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKaW5kZXggYzc2NmE0NDFiZS4uMGQ4YzVkNmFk ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0 CkBAIC0xNDIwLDYgKzE0MjAsMTI0IEBAIGZyb20KICA0IHwgLTEgfCAyIHwgICAKICgxMSBy b3dzKQogCistLSBkZWZhdWx0IHBsYW4gKG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioK K2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0Lmpz LCdzdHJpY3QgJFsqXScKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJ YSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQor CQkpCisJCXBsYW4gZGVmYXVsdCAob3V0ZXIsIHVuaW9uKQorCSkganQ7CisgbiB8IGEgIHwg YiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIg fCAxIHwgICAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIg fCAgIHwgMTAKKyAyIHwgIDIgfCAgIHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMg fCAxIHwgICAKKyAzIHwgIDMgfCAyIHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEg fCAyIHwgICAKKygxMSByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCB1bmlvbikK K3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3Rh YmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScKKwkJY29sdW1ucyAoCisJCQluIGZvciBv cmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0 eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0 aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBp bnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoaW5uZXIpCisJKSBqdDsKKyBu IHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDIgfCAgMiB8IDEgfCAgIAor IDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAor IDIgfCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAor IDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAor KDEwIHJvd3MpCisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2VsZWN0CisJ anQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlq dHQuanMsJ3N0cmljdCAkWypdJworCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHks CisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGNvbHVtbnMgKCBjIGludCBwYXRoICck JyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChjcm9zcywgaW5uZXIpCisJKSBqdDsKKyBuIHwg YSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAyIHwgMiB8IDEgfCAxMAorIDIgfCAy IHwgMSB8ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAyIHwgMiB8IDIgfCAxMAorIDIgfCAyIHwg MiB8ICAgCisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8IDMgfCAxMAorIDIgfCAyIHwgMyB8 ICAgCisgMiB8IDIgfCAzIHwgMjAKKyg5IHJvd3MpCisKKy0tIGRlZmF1bHQgcGxhbiAob3V0 ZXIsIGNyb3NzKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQljb2x1bW5zICgK KwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0 IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGNvbHVtbnMg KCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGNv bHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChvdXRlciwg Y3Jvc3MpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQor IDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAxMAorIDIgfCAgMiB8IDEgfCAgIAor IDIgfCAgMiB8IDEgfCAyMAorIDIgfCAgMiB8IDIgfCAxMAorIDIgfCAgMiB8IDIgfCAgIAor IDIgfCAgMiB8IDIgfCAyMAorIDIgfCAgMiB8IDMgfCAxMAorIDIgfCAgMiB8IDMgfCAgIAor IDIgfCAgMiB8IDMgfCAyMAorIDMgfCAgMyB8ICAgfCAgIAorIDQgfCAtMSB8ICAgfCAgIAor KDEyIHJvd3MpCisKIC0tIFNob3VsZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50cyBhcmUgcGFz c2VkIHRvIHJvb3QgYW5kIG5lc3RlZCBwYXRocykKIFNFTEVDVCAqCiBGUk9NCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCmluZGV4IDhiODEzYTNjMmUuLjlhZDEw NDc0ODUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24u c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCkBAIC01 NDcsNiArNTQ3LDcxIEBAIGZyb20KIAkJKQogCSkganQ7CiAKKy0tIGRlZmF1bHQgcGxhbiAo b3V0ZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3Qg anR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQljb2x1bW5z ICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGNvbHVt bnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChvdXRl ciwgdW5pb24pCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFuIChpbm5lciwgdW5pb24pCitz ZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJs ZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3Jk aW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHks CisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGgg JyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGlubmVyKQorCSkganQ7CisKKy0t IGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpz b25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAk WypdJworCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRo ICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmJbKl0nIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGgg J3N0cmljdCAkLmNbKl0nIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxh biBkZWZhdWx0IChjcm9zcywgaW5uZXIpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFuIChv dXRlciwgY3Jvc3MpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBq dHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1 bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg Y29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKG91dGVy LCBjcm9zcykKKwkpIGp0OworCisKIC0tIFNob3VsZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50 cyBhcmUgcGFzc2VkIHRvIHJvb3QgYW5kIG5lc3RlZCBwYXRocykKIFNFTEVDVCAqCiBGUk9N CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDZjODQxMmY1NTAuLjY4NTZlZWM4 ZDAgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjQxLDYgKzEyNDEsNyBA QCBKc29uVGFibGVDb2x1bW5UeXBlCiBKc29uVGFibGVDb250ZXh0CiBKc29uVGFibGVKb2lu U3RhdGUKIEpzb25UYWJsZVBhcmVudE5vZGUKK0pzb25UYWJsZVBsYW5Kb2luVHlwZQogSnNv blRhYmxlU2NhblN0YXRlCiBKc29uVGFibGVTaWJsaW5nTm9kZQogSnNvblRva2VuVHlwZQot LSAKMi4yNS4xCgo= --------------UNwjJjMgF1laO8cZ5D0bETkV Content-Type: text/x-patch; charset=UTF-8; name="0004-JSON_TABLE-PLAN-clause-v57.patch" Content-Disposition: attachment; filename="0004-JSON_TABLE-PLAN-clause-v57.patch" Content-Transfer-Encoding: base64 RnJvbSA1OWQxMDg3ZmUwNTVjMDliYjg1NzYzNzdiNGU5ZTBhYmRhMGVkYjJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogU2F0LCA1IE1hciAyMDIyIDA5OjAzOjIwIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCA0LzRdIEpTT05fVEFCTEUgUExBTiBjbGF1c2UKCi0tLQogZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICA5NyArKystCiBzcmMvYmFja2VuZC9u b2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9u b2Rlcy9tYWtlZnVuY3MuYyAgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL25v ZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgfCAxMDEgKysrLQogc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2pzb250YWJsZS5jICAgICAgICB8IDMxOCArKysrKysrKysrLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgfCAgNTcgKystCiBz cmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgfCAgMzEgKy0KIHNy Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQgfCA1MDYgKysrKysr KysrKysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3Fs ICAgICAgfCAzNTUgKysrKysrKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgfCAgIDIgKwogMTUgZmlsZXMgY2hhbmdlZCwgMTM4NSBpbnNl cnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggNTI1MzBmNTk4Ny4u NGQ4MjI3NGQ2ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xOTMxMyw5ICsxOTMxMywxMCBAQCBGUk9NCiAK IDxzeW5vcHNpcz4KIEpTT05fVEFCTEUgKAotICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVt PC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2Vh YmxlPiA8b3B0aW9uYWw+IFBBU1NJTkcgeyA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2Vh YmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFs PiwgLi4uPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgPHJlcGxhY2VhYmxlPmNvbnRleHRf aXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBs YWNlYWJsZT4gPG9wdGlvbmFsPiBBUyA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3Jl cGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8b3B0aW9uYWw+IFBBU1NJTkcgeyA8cmVwbGFjZWFi bGU+dmFsdWU8L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFj ZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KICAgQ09M VU1OUyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVt bjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ICkKICAgPG9wdGlv bmFsPgorICAgIFBMQU4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90 YWJsZV9wbGFuPC9yZXBsYWNlYWJsZT4gKSB8CiAgICAgUExBTiBERUZBVUxUICggeyBJTk5F UiB8IE9VVEVSIH0gPG9wdGlvbmFsPiAsIHsgQ1JPU1MgfCBVTklPTiB9IDwvb3B0aW9uYWw+ CiAgICAgICAgICAgICAgICAgIHwgeyBDUk9TUyB8IFVOSU9OIH0gPG9wdGlvbmFsPiAsIHsg SU5ORVIgfCBPVVRFUiB9IDwvb3B0aW9uYWw+ICkKICAgPC9vcHRpb25hbD4KQEAgLTE5MzM5 LDYgKzE5MzQwLDE2IEBAIHdoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5q c29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IGlzOgogICB8IE5FU1RFRCBQQVRIIDxy ZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxvcHRp b25hbD4gQVMgPHJlcGxhY2VhYmxlPnBhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9u YWw+CiAgICAgICAgIENPTFVNTlMgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48 L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCiAgIHwgPHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBGT1IgT1JESU5BTElUWQorPHBocmFzZT4KKzxy ZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxlPiBpczoKKzwvcGhyYXNl PgorICAgIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDxvcHRp b25hbD4geyBPVVRFUiB8IElOTkVSIH0gPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9w cmltYXJ5PC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgfCA8cmVwbGFjZWFibGU+anNv bl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB7IFVOSU9OIDxyZXBsYWNlYWJs ZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPi4u Ljwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5 PC9yZXBsYWNlYWJsZT4geyBDUk9TUyA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3By aW1hcnk8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4uLi48L29wdGlvbmFsPgorPHBocmFz ZT4KKzxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFjZWFibGU+ IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBs YWNlYWJsZT4gfCAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxl PiApCiAKIDwvc3lub3BzaXM+CiAKQEAgLTE5MzgxLDcgKzE5MzkyLDcgQEAgd2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNl YWJsZT4gaXM6CiAgICAgICBqb2luZWQgdG8gdGhlIHJvdyB0aGF0IGdlbmVyYXRlZCB0aGVt LCBzbyB5b3UgZG8gbm90IGhhdmUgdG8gZXhwbGljaXRseSBqb2luCiAgICAgICB0aGUgY29u c3RydWN0ZWQgdmlldyB3aXRoIHRoZSBvcmlnaW5hbCB0YWJsZSBob2xkaW5nIDxhY3Jvbnlt PkpTT048L2Fjcm9ueW0+CiAgICAgICBkYXRhLiBPcHRpb25hbGx5LCB5b3UgY2FuIHNwZWNp ZnkgaG93IHRvIGpvaW4gdGhlIGNvbHVtbnMgcmV0dXJuZWQKLSAgICAgIGJ5IDxsaXRlcmFs Pk5FU1RFRCBQQVRIPC9saXRlcmFsPiB1c2luZyB0aGUgPGxpdGVyYWw+UExBTiBERUZBVUxU PC9saXRlcmFsPiBjbGF1c2UuCisgICAgICBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0 ZXJhbD4gdXNpbmcgdGhlIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+IGNsYXVzZS4KICAgICAg PC9wYXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTk1NjYsNyArMTk1NzcsNyBAQCB3aGVyZSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJsZV9jb2x1bW48L3JlcGxh Y2VhYmxlPiBpczoKICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgWW91IGNhbiB1 c2UgdGhlIDxsaXRlcmFsPlBMQU4gREVGQVVMVDwvbGl0ZXJhbD4gY2xhdXNlIHRvIGRlZmlu ZSBob3cKKyAgICAgWW91IGNhbiB1c2UgdGhlIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+IGNs YXVzZSB0byBkZWZpbmUgaG93CiAgICAgIHRvIGpvaW4gdGhlIGNvbHVtbnMgcmV0dXJuZWQg YnkgPHJlcGxhY2VhYmxlPk5FU1RFRCBQQVRIPC9yZXBsYWNlYWJsZT4gY2xhdXNlcy4KICAg ICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KQEAgLTE5NTkzLDE4ICsxOTYwNCwzMSBAQCB3 aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJsZV9jb2x1bW48 L3JlcGxhY2VhYmxlPiBpczoKIAogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT4KLSAg ICAgPGxpdGVyYWw+UExBTiBERUZBVUxUICggPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFj ZWFibGU+IDxvcHRpb25hbD4sIC4uLiA8L29wdGlvbmFsPiApPC9saXRlcmFsPgorICAgICA8 bGl0ZXJhbD5BUyA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPjwv bGl0ZXJhbD4KICAgICA8L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgotICAgICA8cGFyYT4KLSAg ICAgIERlZmluZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEgcmV0dXJuZWQgYnkgPHJlcGxhY2Vh YmxlPk5FU1RFRCBQQVRIPC9yZXBsYWNlYWJsZT4KLSAgICAgIGNsYXVzZXMgdG8gdGhlIGNv bnN0cnVjdGVkIHZpZXcuIFRoZSA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4gYW5kCi0gICAg ICA8bGl0ZXJhbD5PVVRFUjwvbGl0ZXJhbD4gb3B0aW9ucyBkZWZpbmUgdGhlIGpvaW5pbmcg cGxhbiBmb3IgcGFyZW50L2NoaWxkCi0gICAgICBjb2x1bW5zLCB3aGlsZSA8bGl0ZXJhbD5V TklPTjwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkNST1NTPC9saXRlcmFsPgotICAgICAgYWZm ZWN0IHRoZSBzaWJsaW5nIGNvbHVtbnMuIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQg cGxhbnMgZm9yIGFsbAotICAgICAgY29sdW1ucyBhdCBvbmNlLgotICAgICA8L3BhcmE+CiAK KyAgICA8cGFyYT4KKyAgICAgVGhlIG9wdGlvbmFsIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhf bmFtZTwvcmVwbGFjZWFibGU+IHNlcnZlcyBhcyBhbgorICAgICBpZGVudGlmaWVyIG9mIHRo ZSBwcm92aWRlZCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxh Y2VhYmxlPi4KKyAgICAgVGhlIHBhdGggbmFtZSBtdXN0IGJlIHVuaXF1ZSBhbmQgY2Fubm90 IGNvaW5jaWRlIHdpdGggY29sdW1uIG5hbWVzLgorICAgICBXaGVuIHVzaW5nIHRoZSA8bGl0 ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIG5hbWVz CisgICAgIGZvciBhbGwgdGhlIHBhdGhzLCBpbmNsdWRpbmcgdGhlIHJvdyBwYXR0ZXJuLiBF YWNoIHBhdGggbmFtZSBjYW4gYXBwZWFyIGluCisgICAgIHRoZSA8bGl0ZXJhbD5QTEFOPC9s aXRlcmFsPiBjbGF1c2Ugb25seSBvbmNlLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ CisgICAgIDxsaXRlcmFsPlBMQU4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJsZT4gKTwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIERlZmluZXMgaG93IHRvIGpv aW4gdGhlIGRhdGEgcmV0dXJuZWQgYnkgPHJlcGxhY2VhYmxlPk5FU1RFRCBQQVRIPC9yZXBs YWNlYWJsZT4KKyAgICAgY2xhdXNlcyB0byB0aGUgY29uc3RydWN0ZWQgdmlldy4KKyAgICA8 L3BhcmE+CiAgICAgPHBhcmE+CiAgICAgIFRvIGpvaW4gY29sdW1ucyB3aXRoIHBhcmVudC9j aGlsZCByZWxhdGlvbnNoaXAsIHlvdSBjYW4gdXNlOgogICAgIDwvcGFyYT4KQEAgLTE5Njgz LDYgKzE5NzA3LDIzIEBAIHdoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5q c29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IGlzOgogCiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgor ICAgICA8bGl0ZXJhbD5QTEFOIERFRkFVTFQgKCA8cmVwbGFjZWFibGU+b3B0aW9uPC9yZXBs YWNlYWJsZT4gPG9wdGlvbmFsPiwgLi4uIDwvb3B0aW9uYWw+ICk8L2xpdGVyYWw+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBPdmVycmlkZXMg dGhlIGRlZmF1bHQgam9pbmluZyBwbGFucy4gVGhlIDxsaXRlcmFsPklOTkVSPC9saXRlcmFs PiBhbmQKKyAgICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPiBvcHRpb25zIGRlZmluZSB0 aGUgam9pbmluZyBwbGFuIGZvciBwYXJlbnQvY2hpbGQKKyAgICAgIGNvbHVtbnMsIHdoaWxl IDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+Q1JPU1M8L2xpdGVyYWw+ CisgICAgICBhZmZlY3QgdGhlIHNpYmxpbmcgY29sdW1ucy4gWW91IGNhbiBvdmVycmlkZSB0 aGUgZGVmYXVsdCBwbGFucyBmb3IgYWxsIGNvbHVtbnMgYXQgb25jZS4KKyAgICAgIEV2ZW4g dGhvdWdoIHRoZSBwYXRoIG5hbWVzIGFyZSBub3QgaW5jbHVkZWQgaW50byB0aGUgPGxpdGVy YWw+UExBTiBERUZBVUxUPC9saXRlcmFsPgorICAgICAgY2xhdXNlLCB0aGV5IG11c3QgYmUg cHJvdmlkZWQgZm9yIGFsbCB0aGUgcGF0aHMgdG8gY29uZm9ybSB0bworICAgICAgdGhlIFNR TC9KU09OIHN0YW5kYXJkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3Q1PgogCkBAIC0x OTcxNCw5ICsxOTc1NSwzNSBAQCBTRUxFQ1QganQuKiBGUk9NCiA8L3NjcmVlbj4KICAgICAg PC9wYXJhPgogCi0gICA8L3NlY3Q1PgotICA8L3NlY3Q0PgotCisgICAgIDxwYXJhPgorICAg ICAgRmluZCBhIGRpcmVjdG9yIHRoYXQgaGFzIGRvbmUgZmlsbXMgaW4gdHdvIGRpZmZlcmVu dCBnZW5yZXM6Cis8c2NyZWVuPgorU0VMRUNUCisgIGRpcmVjdG9yMSBBUyBkaXJlY3Rvciwg dGl0bGUxLCBraW5kMSwgdGl0bGUyLCBraW5kMgorRlJPTQorICBteV9maWxtcywKKyAgSlNP Tl9UQUJMRSAoIGpzLCAnJC5mYXZvcml0ZXMnIEFTIGZhdnMgQ09MVU1OUyAoCisgICAgTkVT VEVEIFBBVEggJyRbKl0nIEFTIGZpbG1zMSBDT0xVTU5TICgKKyAgICAgIGtpbmQxIHRleHQg UEFUSCAnJC5raW5kJywKKyAgICAgIE5FU1RFRCBQQVRIICckLmZpbG1zWypdJyBBUyBmaWxt MSBDT0xVTU5TICgKKyAgICAgICAgdGl0bGUxIHRleHQgUEFUSCAnJC50aXRsZScsCisgICAg ICAgIGRpcmVjdG9yMSB0ZXh0IFBBVEggJyQuZGlyZWN0b3InKQorICAgICksCisgICAgTkVT VEVEIFBBVEggJyRbKl0nIEFTIGZpbG1zMiBDT0xVTU5TICgKKyAgICAgIGtpbmQyIHRleHQg UEFUSCAnJC5raW5kJywKKyAgICAgIE5FU1RFRCBQQVRIICckLmZpbG1zWypdJyBBUyBmaWxt MiBDT0xVTU5TICgKKyAgICAgICAgdGl0bGUyIHRleHQgUEFUSCAnJC50aXRsZScsCisgICAg ICAgIGRpcmVjdG9yMiB0ZXh0IFBBVEggJyQuZGlyZWN0b3InCisgICAgICApCisgICAgKQor ICAgKQorICAgUExBTiAoZmF2cyBPVVRFUiAoKGZpbG1zMSBJTk5FUiBmaWxtMSkgQ1JPU1Mg KGZpbG1zMiBJTk5FUiBmaWxtMikpKQorICApIEFTIGp0CisgV0hFUkUga2luZDEgPiBraW5k MiBBTkQgZGlyZWN0b3IxID0gZGlyZWN0b3IyOworPC9zY3JlZW4+CisgICAgIDwvcGFyYT4K KyAgICA8L3NlY3Q1PgorICAgPC9zZWN0ND4KICAgPC9zZWN0Mz4KIAogICA8c2VjdDMgaWQ9 ImZ1bmN0aW9ucy1zcWxqc29uLXNlcmlhbGl6aW5nIj4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMK aW5kZXggZTZkYjU3NzEyZi4uZTljNGU4ZGI4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMK QEAgLTI2NzgsOSArMjY3OCw5IEBAIF9jb3B5SnNvblRhYmxlKGNvbnN0IEpzb25UYWJsZSAq ZnJvbSkKIAogCUNPUFlfTk9ERV9GSUVMRChjb21tb24pOwogCUNPUFlfTk9ERV9GSUVMRChj b2x1bW5zKTsKKwlDT1BZX05PREVfRklFTEQocGxhbik7CiAJQ09QWV9OT0RFX0ZJRUxEKG9u X2Vycm9yKTsKIAlDT1BZX05PREVfRklFTEQoYWxpYXMpOwotCUNPUFlfU0NBTEFSX0ZJRUxE KGpvaW5fdHlwZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQobG9jYXRpb24pOwogCiAJcmV0dXJu IG5ld25vZGU7CkBAIC0yNjk4LDYgKzI2OTgsNyBAQCBfY29weUpzb25UYWJsZUNvbHVtbihj b25zdCBKc29uVGFibGVDb2x1bW4gKmZyb20pCiAJQ09QWV9TVFJJTkdfRklFTEQobmFtZSk7 CiAJQ09QWV9OT0RFX0ZJRUxEKHR5cGVOYW1lKTsKIAlDT1BZX1NUUklOR19GSUVMRChwYXRo c3BlYyk7CisJQ09QWV9TVFJJTkdfRklFTEQocGF0aG5hbWUpOwogCUNPUFlfU0NBTEFSX0ZJ RUxEKGZvcm1hdCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQod3JhcHBlcik7CiAJQ09QWV9TQ0FM QVJfRklFTEQob21pdF9xdW90ZXMpOwpAQCAtMjcwOSw2ICsyNzEwLDI0IEBAIF9jb3B5SnNv blRhYmxlQ29sdW1uKGNvbnN0IEpzb25UYWJsZUNvbHVtbiAqZnJvbSkKIAlyZXR1cm4gbmV3 bm9kZTsKIH0KIAorLyoKKyAqIF9jb3B5SnNvblRhYmxlUGxhbgorICovCitzdGF0aWMgSnNv blRhYmxlUGxhbiAqCitfY29weUpzb25UYWJsZVBsYW4oY29uc3QgSnNvblRhYmxlUGxhbiAq ZnJvbSkKK3sKKwlKc29uVGFibGVQbGFuICpuZXdub2RlID0gbWFrZU5vZGUoSnNvblRhYmxl UGxhbik7CisKKwlDT1BZX1NDQUxBUl9GSUVMRChwbGFuX3R5cGUpOworCUNPUFlfU0NBTEFS X0ZJRUxEKGpvaW5fdHlwZSk7CisJQ09QWV9TVFJJTkdfRklFTEQocGF0aG5hbWUpOworCUNP UFlfTk9ERV9GSUVMRChwbGFuMSk7CisJQ09QWV9OT0RFX0ZJRUxEKHBsYW4yKTsKKwlDT1BZ X1NDQUxBUl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwogLyoK ICAqIF9jb3B5SnNvblRhYmxlUGFyZW50Tm9kZQogICovCkBAIC0yNzE4LDkgKzI3MzcsOSBA QCBfY29weUpzb25UYWJsZVBhcmVudE5vZGUoY29uc3QgSnNvblRhYmxlUGFyZW50Tm9kZSAq ZnJvbSkKIAlKc29uVGFibGVQYXJlbnROb2RlICpuZXdub2RlID0gbWFrZU5vZGUoSnNvblRh YmxlUGFyZW50Tm9kZSk7CiAKIAlDT1BZX05PREVfRklFTEQocGF0aCk7CisJQ09QWV9TVFJJ TkdfRklFTEQobmFtZSk7CiAJQ09QWV9OT0RFX0ZJRUxEKGNoaWxkKTsKIAlDT1BZX1NDQUxB Ul9GSUVMRChvdXRlckpvaW4pOwotCUNPUFlfU0NBTEFSX0ZJRUxEKHVuaW9uSm9pbik7CiAJ Q09QWV9TQ0FMQVJfRklFTEQoY29sTWluKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChjb2xNYXgp OwogCkBAIC01ODY2LDYgKzU4ODUsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpm cm9tKQogCQljYXNlIFRfSnNvblRhYmxlQ29sdW1uOgogCQkJcmV0dmFsID0gX2NvcHlKc29u VGFibGVDb2x1bW4oZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25UYWJsZVBsYW46 CisJCQlyZXR2YWwgPSBfY29weUpzb25UYWJsZVBsYW4oZnJvbSk7CisJCQlicmVhazsKIAkJ Y2FzZSBUX0pzb25UYWJsZVBhcmVudE5vZGU6CiAJCQlyZXR2YWwgPSBfY29weUpzb25UYWJs ZVBhcmVudE5vZGUoZnJvbSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpp bmRleCAxYzRhNDc1ZjU5Li4xMGE0YzJlYjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5j CkBAIC0xNTEsOSArMTUxLDkgQEAgc3RhdGljIGJvb2wKIF9lcXVhbEpzb25UYWJsZVBhcmVu dE5vZGUoY29uc3QgSnNvblRhYmxlUGFyZW50Tm9kZSAqYSwgY29uc3QgSnNvblRhYmxlUGFy ZW50Tm9kZSAqYikKIHsKIAlDT01QQVJFX05PREVfRklFTEQocGF0aCk7CisJQ09NUEFSRV9T VFJJTkdfRklFTEQobmFtZSk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGNoaWxkKTsKIAlDT01Q QVJFX1NDQUxBUl9GSUVMRChvdXRlckpvaW4pOwotCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHVu aW9uSm9pbik7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY29sTWluKTsKIAlDT01QQVJFX1ND QUxBUl9GSUVMRChjb2xNYXgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGNkNmMz MDBlN2IuLjQxZTI2YTBmZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2Vm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04NjcsNiAr ODY3LDI1IEBAIG1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2Rl ICpkZWZhdWx0X2V4cHIpCiAJcmV0dXJuIGJlaGF2aW9yOwogfQogCisvKgorICogbWFrZUpz b25UYWJsZUpvaW5lZFBsYW4gLQorICoJICAgY3JlYXRlcyBhIGpvaW5lZCBKc29uVGFibGVQ bGFuIG5vZGUKKyAqLworTm9kZSAqCittYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFi bGVQbGFuSm9pblR5cGUgdHlwZSwgTm9kZSAqcGxhbjEsIE5vZGUgKnBsYW4yLAorCQkJCQkJ aW50IGxvY2F0aW9uKQoreworCUpzb25UYWJsZVBsYW4gKm4gPSBtYWtlTm9kZShKc29uVGFi bGVQbGFuKTsKKworCW4tPnBsYW5fdHlwZSA9IEpTVFBfSk9JTkVEOworCW4tPmpvaW5fdHlw ZSA9IHR5cGU7CisJbi0+cGxhbjEgPSBjYXN0Tm9kZShKc29uVGFibGVQbGFuLCBwbGFuMSk7 CisJbi0+cGxhbjIgPSBjYXN0Tm9kZShKc29uVGFibGVQbGFuLCBwbGFuMik7CisJbi0+bG9j YXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBuOworfQorCiAvKgogICog bWFrZUpzb25FbmNvZGluZyAtCiAgKgkgIGNvbnZlcnRzIEpTT04gZW5jb2RpbmcgbmFtZSB0 byBlbnVtIEpzb25FbmNvZGluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggYTE3ZWEyZThm OS4uMTVlZmFkNGJmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0xODc0LDkgKzE4NzQs OSBAQCBfb3V0SnNvblRhYmxlUGFyZW50Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3QgSnNv blRhYmxlUGFyZW50Tm9kZSAqbm9kZSkKIAlXUklURV9OT0RFX1RZUEUoIkpTT05UQUJQTk9E RSIpOwogCiAJV1JJVEVfTk9ERV9GSUVMRChwYXRoKTsKKwlXUklURV9TVFJJTkdfRklFTEQo bmFtZSk7CiAJV1JJVEVfTk9ERV9GSUVMRChjaGlsZCk7CiAJV1JJVEVfQk9PTF9GSUVMRChv dXRlckpvaW4pOwotCVdSSVRFX0JPT0xfRklFTEQodW5pb25Kb2luKTsKIAlXUklURV9JTlRf RklFTEQoY29sTWluKTsKIAlXUklURV9JTlRfRklFTEQoY29sTWF4KTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv cmVhZGZ1bmNzLmMKaW5kZXggMjY3MTM3ZmNlMi4uN2E5YTFkMDRiZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv cmVhZGZ1bmNzLmMKQEAgLTE1MDMsOSArMTUwMyw5IEBAIF9yZWFkSnNvblRhYmxlUGFyZW50 Tm9kZSh2b2lkKQogCVJFQURfTE9DQUxTKEpzb25UYWJsZVBhcmVudE5vZGUpOwogCiAJUkVB RF9OT0RFX0ZJRUxEKHBhdGgpOworCVJFQURfU1RSSU5HX0ZJRUxEKG5hbWUpOwogCVJFQURf Tk9ERV9GSUVMRChjaGlsZCk7CiAJUkVBRF9CT09MX0ZJRUxEKG91dGVySm9pbik7Ci0JUkVB RF9CT09MX0ZJRUxEKHVuaW9uSm9pbik7CiAJUkVBRF9JTlRfRklFTEQoY29sTWluKTsKIAlS RUFEX0lOVF9GSUVMRChjb2xNYXgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmMjNjOTAzNDMw Li5iNmMyNzU0ZDhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTY3Niw2ICs2NzYsMTggQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQkJanNvbl90YWJsZV9mb3JtYXR0ZWRfY29s dW1uX2RlZmluaXRpb24KIAkJCQkJanNvbl90YWJsZV9leGlzdHNfY29sdW1uX2RlZmluaXRp b24KIAkJCQkJanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucworCQkJCQlqc29uX3RhYmxlX3Bs YW5fY2xhdXNlX29wdAorCQkJCQlqc29uX3RhYmxlX3NwZWNpZmljX3BsYW4KKwkJCQkJanNv bl90YWJsZV9wbGFuCisJCQkJCWpzb25fdGFibGVfcGxhbl9zaW1wbGUKKwkJCQkJanNvbl90 YWJsZV9wbGFuX3BhcmVudF9jaGlsZAorCQkJCQlqc29uX3RhYmxlX3BsYW5fb3V0ZXIKKwkJ CQkJanNvbl90YWJsZV9wbGFuX2lubmVyCisJCQkJCWpzb25fdGFibGVfcGxhbl9zaWJsaW5n CisJCQkJCWpzb25fdGFibGVfcGxhbl91bmlvbgorCQkJCQlqc29uX3RhYmxlX3BsYW5fY3Jv c3MKKwkJCQkJanNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQkJanNvbl90YWJsZV9kZWZh dWx0X3BsYW4KIAogJXR5cGUgPGxpc3Q+CQlqc29uX25hbWVfYW5kX3ZhbHVlX2xpc3QKIAkJ CQkJanNvbl92YWx1ZV9leHByX2xpc3QKQEAgLTY5MSw4ICs3MDMsNiBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpOwogCiAldHlwZSA8aXZhbD4JCWpzb25fZW5jb2RpbmcKIAkJCQkJ anNvbl9lbmNvZGluZ19jbGF1c2Vfb3B0Ci0JCQkJCWpzb25fdGFibGVfcGxhbl9jbGF1c2Vf b3B0Ci0JCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuCiAJCQkJCWpzb25fdGFibGVfZGVm YXVsdF9wbGFuX2Nob2ljZXMKIAkJCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJf b3V0ZXIKIAkJCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jvc3MKQEAgLTE1 NzI3LDcgKzE1NzM3LDcgQEAganNvbl90YWJsZToKIAkJCQkJSnNvblRhYmxlICpuID0gbWFr ZU5vZGUoSnNvblRhYmxlKTsKIAkJCQkJbi0+Y29tbW9uID0gKEpzb25Db21tb24gKikgJDM7 CiAJCQkJCW4tPmNvbHVtbnMgPSAkNDsKLQkJCQkJbi0+am9pbl90eXBlID0gJDU7CisJCQkJ CW4tPnBsYW4gPSAoSnNvblRhYmxlUGxhbiAqKSAkNTsKIAkJCQkJbi0+b25fZXJyb3IgPSAk NjsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAt MTU4NDksMTIgKzE1ODU5LDE1IEBAIGpzb25fdGFibGVfZm9ybWF0dGVkX2NvbHVtbl9kZWZp bml0aW9uOgogCQk7CiAKIGpzb25fdGFibGVfbmVzdGVkX2NvbHVtbnM6Ci0JCQlORVNURUQg cGF0aF9vcHQgU2NvbnN0IGpzb25fdGFibGVfY29sdW1uc19jbGF1c2UKKwkJCU5FU1RFRCBw YXRoX29wdCBTY29uc3QKKwkJCQkJCQlqc29uX2FzX3BhdGhfbmFtZV9jbGF1c2Vfb3B0CisJ CQkJCQkJanNvbl90YWJsZV9jb2x1bW5zX2NsYXVzZQogCQkJCXsKIAkJCQkJSnNvblRhYmxl Q29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKIAkJCQkJbi0+Y29sdHlw ZSA9IEpUQ19ORVNURUQ7CiAJCQkJCW4tPnBhdGhzcGVjID0gJDM7Ci0JCQkJCW4tPmNvbHVt bnMgPSAkNDsKKwkJCQkJbi0+cGF0aG5hbWUgPSAkNDsKKwkJCQkJbi0+Y29sdW1ucyA9ICQ1 OwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJ fQpAQCAtMTU4NjYsMTIgKzE1ODc5LDg0IEBAIHBhdGhfb3B0OgogCQk7CiAKIGpzb25fdGFi bGVfcGxhbl9jbGF1c2Vfb3B0OgotCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW4JCQkJCXsg JCQgPSAkMTsgfQotCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gSlNUUEpfT1VURVIg fCBKU1RQSl9VTklPTjsgfQorCQkJanNvbl90YWJsZV9zcGVjaWZpY19wbGFuCQkJCXsgJCQg PSAkMTsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbgkJCQl7ICQkID0gJDE7IH0K KwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCitqc29uX3Rh YmxlX3NwZWNpZmljX3BsYW46CisJCQlQTEFOICcoJyBqc29uX3RhYmxlX3BsYW4gJyknCQkJ eyAkJCA9ICQzOyB9CisJCTsKKworanNvbl90YWJsZV9wbGFuOgorCQkJanNvbl90YWJsZV9w bGFuX3NpbXBsZQorCQkJfCBqc29uX3RhYmxlX3BsYW5fcGFyZW50X2NoaWxkCisJCQl8IGpz b25fdGFibGVfcGxhbl9zaWJsaW5nCisJCTsKKworanNvbl90YWJsZV9wbGFuX3NpbXBsZToK KwkJCWpzb25fdGFibGVfcGF0aF9uYW1lCisJCQkJeworCQkJCQlKc29uVGFibGVQbGFuICpu ID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhbik7CisJCQkJCW4tPnBsYW5fdHlwZSA9IEpTVFBf U0lNUExFOworCQkJCQluLT5wYXRobmFtZSA9ICQxOworCQkJCQluLT5sb2NhdGlvbiA9IEAx OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfcGxh bl9wYXJlbnRfY2hpbGQ6CisJCQlqc29uX3RhYmxlX3BsYW5fb3V0ZXIKKwkJCXwganNvbl90 YWJsZV9wbGFuX2lubmVyCisJCTsKKworanNvbl90YWJsZV9wbGFuX291dGVyOgorCQkJanNv bl90YWJsZV9wbGFuX3NpbXBsZSBPVVRFUl9QIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJ CQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBKX09VVEVSLCAkMSwgJDMs IEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9pbm5lcjoKKwkJCWpzb25fdGFibGVf cGxhbl9zaW1wbGUgSU5ORVJfUCBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQg PSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQSl9JTk5FUiwgJDEsICQzLCBAMSk7IH0K KwkJOworCitqc29uX3RhYmxlX3BsYW5fc2libGluZzoKKwkJCWpzb25fdGFibGVfcGxhbl91 bmlvbgorCQkJfCBqc29uX3RhYmxlX3BsYW5fY3Jvc3MKKwkJOworCitqc29uX3RhYmxlX3Bs YW5fdW5pb246CisJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeSBVTklPTiBqc29uX3RhYmxl X3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQ Sl9VTklPTiwgJDEsICQzLCBAMSk7IH0KKwkJCXwganNvbl90YWJsZV9wbGFuX3VuaW9uIFVO SU9OIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVK b2luZWRQbGFuKEpTVFBKX1VOSU9OLCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pzb25fdGFi bGVfcGxhbl9jcm9zczoKKwkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5IENST1NTIGpzb25f dGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFu KEpTVFBKX0NST1NTLCAkMSwgJDMsIEAxKTsgfQorCQkJfCBqc29uX3RhYmxlX3BsYW5fY3Jv c3MgQ1JPU1MganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25U YWJsZUpvaW5lZFBsYW4oSlNUUEpfQ1JPU1MsICQxLCAkMywgQDEpOyB9CisJCTsKKworanNv bl90YWJsZV9wbGFuX3ByaW1hcnk6CisJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlCQkJCQkJ eyAkJCA9ICQxOyB9CisJCQl8ICcoJyBqc29uX3RhYmxlX3BsYW4gJyknCisJCQkJeworCQkJ CQljYXN0Tm9kZShKc29uVGFibGVQbGFuLCAkMiktPmxvY2F0aW9uID0gQDE7CisJCQkJCSQk ID0gJDI7CisJCQkJfQogCQk7CiAKIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuOgotCQkJUExB TiBERUZBVUxUICcoJyBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9jaG9pY2VzICcpJyB7ICQk ID0gJDQ7IH0KKwkJCVBMQU4gREVGQVVMVCAnKCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5f Y2hvaWNlcyAnKScKKwkJCXsKKwkJCQlKc29uVGFibGVQbGFuICpuID0gbWFrZU5vZGUoSnNv blRhYmxlUGxhbik7CisJCQkJbi0+cGxhbl90eXBlID0gSlNUUF9ERUZBVUxUOworCQkJCW4t PmpvaW5fdHlwZSA9ICQ0OworCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJJCQgPSAoTm9k ZSAqKSBuOworCQkJfQogCQk7CiAKIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXM6 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKaW5kZXggN2FhYTcxYjQ5ZC4u YWIzODdkNGUzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250 YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwpAQCAt MzcsMTIgKzM3LDE1IEBAIHR5cGVkZWYgc3RydWN0IEpzb25UYWJsZUNvbnRleHQKIAlKc29u VGFibGUgICp0YWJsZTsJCQkJLyogdW50cmFuc2Zvcm1lZCBub2RlICovCiAJVGFibGVGdW5j ICAqdGFibGVmdW5jOwkJCS8qIHRyYW5zZm9ybWVkIG5vZGUJKi8KIAlMaXN0CSAgICpwYXRo TmFtZXM7CQkJLyogbGlzdCBvZiBhbGwgcGF0aCBhbmQgY29sdW1ucyBuYW1lcyAqLworCWlu dAkJCXBhdGhOYW1lSWQ7CQkJLyogcGF0aCBuYW1lIGlkIGNvdW50ZXIgKi8KIAlPaWQJCQlj b250ZXh0SXRlbVR5cGlkOwkvKiB0eXBlIG9pZCBvZiBjb250ZXh0IGl0ZW0gKGpzb24vanNv bmIpICovCiB9IEpzb25UYWJsZUNvbnRleHQ7CiAKIHN0YXRpYyBKc29uVGFibGVQYXJlbnRO b2RlICogdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVDb250ZXh0ICpjeHQs CisJCQkJCQkJCQkJCQkJICAgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAkJCQkJCQkJCQkJCQkg ICBMaXN0ICpjb2x1bW5zLAogCQkJCQkJCQkJCQkJCSAgIGNoYXIgKnBhdGhTcGVjLAorCQkJ CQkJCQkJCQkJCSAgIGNoYXIgKipwYXRoTmFtZSwKIAkJCQkJCQkJCQkJCQkgICBpbnQgbG9j YXRpb24pOwogCiBzdGF0aWMgTm9kZSAqCkBAIC0xNTQsMTkgKzE1NywxNTAgQEAgcmVnaXN0 ZXJBbGxKc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgTGlzdCAqY29s dW1ucykKIAkJSnNvblRhYmxlQ29sdW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1 bW4sIGxmaXJzdChsYykpOwogCiAJCWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX05FU1RFRCkK KwkJeworCQkJaWYgKGp0Yy0+cGF0aG5hbWUpCisJCQkJcmVnaXN0ZXJKc29uVGFibGVDb2x1 bW4oY3h0LCBqdGMtPnBhdGhuYW1lKTsKKwogCQkJcmVnaXN0ZXJBbGxKc29uVGFibGVDb2x1 bW5zKGN4dCwganRjLT5jb2x1bW5zKTsKKwkJfQogCQllbHNlCisJCXsKIAkJCXJlZ2lzdGVy SnNvblRhYmxlQ29sdW1uKGN4dCwganRjLT5uYW1lKTsKKwkJfQorCX0KK30KKworLyogR2Vu ZXJhdGUgYSBuZXcgdW5pcXVlIEpTT05fVEFCTEUgcGF0aCBuYW1lLiAqLworc3RhdGljIGNo YXIgKgorZ2VuZXJhdGVKc29uVGFibGVQYXRoTmFtZShKc29uVGFibGVDb250ZXh0ICpjeHQp Cit7CisJY2hhcgkJbmFtZWJ1ZlszMl07CisJY2hhcgkgICAqbmFtZSA9IG5hbWVidWY7CisK KwlkbworCXsKKwkJc25wcmludGYobmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYpLCAianNvbl90 YWJsZV9wYXRoXyVkIiwKKwkJCQkgKytjeHQtPnBhdGhOYW1lSWQpOworCX0gd2hpbGUgKGlz SnNvblRhYmxlUGF0aE5hbWVEdXBsaWNhdGUoY3h0LCBuYW1lKSk7CisKKwluYW1lID0gcHN0 cmR1cChuYW1lKTsKKwljeHQtPnBhdGhOYW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMs IG5hbWUpOworCisJcmV0dXJuIG5hbWU7Cit9CisKKy8qIENvbGxlY3Qgc2libGluZyBwYXRo IG5hbWVzIGZyb20gcGxhbiB0byB0aGUgc3BlY2lmaWVkIGxpc3QuICovCitzdGF0aWMgdm9p ZAorY29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihKc29uVGFibGVQbGFuICpw bGFuLCBMaXN0ICoqcGF0aHMpCit7CisJaWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX1NJ TVBMRSkKKwkJKnBhdGhzID0gbGFwcGVuZCgqcGF0aHMsIHBsYW4tPnBhdGhuYW1lKTsKKwll bHNlIGlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9KT0lORUQpCisJeworCQlpZiAocGxh bi0+am9pbl90eXBlID09IEpTVFBKX0lOTkVSIHx8CisJCQlwbGFuLT5qb2luX3R5cGUgPT0g SlNUUEpfT1VURVIpCisJCXsKKwkJCUFzc2VydChwbGFuLT5wbGFuMS0+cGxhbl90eXBlID09 IEpTVFBfU0lNUExFKTsKKwkJCSpwYXRocyA9IGxhcHBlbmQoKnBhdGhzLCBwbGFuLT5wbGFu MS0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UgaWYgKHBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQ Sl9DUk9TUyB8fAorCQkJCSBwbGFuLT5qb2luX3R5cGUgPT0gSlNUUEpfVU5JT04pCisJCXsK KwkJCWNvbGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbi0+cGxhbjEsIHBh dGhzKTsKKwkJCWNvbGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbi0+cGxh bjIsIHBhdGhzKTsKKwkJfQorCQllbHNlCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKU09O X1RBQkxFIGpvaW4gdHlwZSAlZCIsCisJCQkJIHBsYW4tPmpvaW5fdHlwZSk7CisJfQorfQor CisvKgorICogVmFsaWRhdGUgY2hpbGQgSlNPTl9UQUJMRSBwbGFuIGJ5IGNoZWNraW5nIHRo YXQ6CisgKiAgLSBhbGwgbmVzdGVkIGNvbHVtbnMgaGF2ZSBwYXRoIG5hbWVzIHNwZWNpZmll ZAorICogIC0gYWxsIG5lc3RlZCBjb2x1bW5zIGhhdmUgY29ycmVzcG9uZGluZyBub2RlIGlu IHRoZSBzaWJsaW5nIHBsYW4KKyAqICAtIHBsYW4gZG9lcyBub3QgY29udGFpbiBkdXBsaWNh dGUgb3IgZXh0cmEgbm9kZXMKKyAqLworc3RhdGljIHZvaWQKK3ZhbGlkYXRlSnNvblRhYmxl Q2hpbGRQbGFuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxlUGxhbiAqcGxhbiwKKwkJ CQkJCSAgIExpc3QgKmNvbHVtbnMpCit7CisJTGlzdENlbGwgICAqbGMxOworCUxpc3QJICAg KnNpYmxpbmdzID0gTklMOworCWludAkJCW5jaGlsZHJlbiA9IDA7CisKKwlpZiAocGxhbikK KwkJY29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihwbGFuLCAmc2libGluZ3Mp OworCisJZm9yZWFjaChsYzEsIGNvbHVtbnMpCisJeworCQlKc29uVGFibGVDb2x1bW4gKmp0 YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjMSkpOworCisJCWlmIChq dGMtPmNvbHR5cGUgPT0gSlRDX05FU1RFRCkKKwkJeworCQkJTGlzdENlbGwgICAqbGMyOwor CQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCQkJaWYgKCFqdGMtPnBhdGhuYW1lKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCQkgZXJybXNnKCJuZXN0ZWQgSlNPTl9UQUJMRSBjb2x1bW5zIG11c3QgY29udGFp biBhbiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIGFuIGV4cGxpY2l0 IFBMQU4gY2xhdXNlIGlzIHVzZWQiKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBqdGMtPmxvY2F0aW9uKSkpOworCisJCQkvKiBmaW5kIG5lc3RlZCBwYXRoIG5hbWUg aW4gdGhlIGxpc3Qgb2Ygc2libGluZyBwYXRoIG5hbWVzICovCisJCQlmb3JlYWNoKGxjMiwg c2libGluZ3MpCisJCQl7CisJCQkJaWYgKChmb3VuZCA9ICFzdHJjbXAoanRjLT5wYXRobmFt ZSwgbGZpcnN0KGxjMikpKSkKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlmICghZm91bmQp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIiksCisJCQkJ CQkgZXJyZGV0YWlsKCJwbGFuIG5vZGUgZm9yIG5lc3RlZCBwYXRoICVzIHdhcyBub3QgZm91 bmQgaW4gcGxhbiIsIGp0Yy0+cGF0aG5hbWUpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKSk7CisKKwkJCW5jaGlsZHJlbisrOworCQl9CiAJ fQorCisJaWYgKGxpc3RfbGVuZ3RoKHNpYmxpbmdzKSA+IG5jaGlsZHJlbikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVy cm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4iKSwKKwkJCQkgZXJyZGV0YWlsKCJwbGFu IG5vZGUgY29udGFpbnMgc29tZSBleHRyYSBvciBkdXBsaWNhdGUgc2libGluZyBub2RlcyIp LAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBwbGFuID8gcGxhbi0+bG9jYXRp b24gOiAtMSkpKTsKK30KKworc3RhdGljIEpzb25UYWJsZUNvbHVtbiAqCitmaW5kTmVzdGVk SnNvblRhYmxlQ29sdW1uKExpc3QgKmNvbHVtbnMsIGNvbnN0IGNoYXIgKnBhdGhuYW1lKQor eworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgY29sdW1ucykKKwl7CisJCUpz b25UYWJsZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3Qo bGMpKTsKKworCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQgJiYKKwkJCWp0Yy0+ cGF0aG5hbWUgJiYKKwkJCSFzdHJjbXAoanRjLT5wYXRobmFtZSwgcGF0aG5hbWUpKQorCQkJ cmV0dXJuIGp0YzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIE5vZGUgKgot dHJhbnNmb3JtTmVzdGVkSnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbnRleHQgKmN4dCwg SnNvblRhYmxlQ29sdW1uICpqdGMpCit0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4o SnNvblRhYmxlQ29udGV4dCAqY3h0LCBKc29uVGFibGVDb2x1bW4gKmp0YywKKwkJCQkJCQkg ICBKc29uVGFibGVQbGFuICpwbGFuKQogewogCUpzb25UYWJsZVBhcmVudE5vZGUgKm5vZGU7 CisJY2hhcgkgICAqcGF0aG5hbWUgPSBqdGMtPnBhdGhuYW1lOwogCi0Jbm9kZSA9IHRyYW5z Zm9ybUpzb25UYWJsZUNvbHVtbnMoY3h0LCBqdGMtPmNvbHVtbnMsIGp0Yy0+cGF0aHNwZWMs Ci0JCQkJCQkJCQkganRjLT5sb2NhdGlvbik7CisJbm9kZSA9IHRyYW5zZm9ybUpzb25UYWJs ZUNvbHVtbnMoY3h0LCBwbGFuLCBqdGMtPmNvbHVtbnMsIGp0Yy0+cGF0aHNwZWMsCisJCQkJ CQkJCQkgJnBhdGhuYW1lLCBqdGMtPmxvY2F0aW9uKTsKKwlub2RlLT5uYW1lID0gcHN0cmR1 cChwYXRobmFtZSk7CiAKIAlyZXR1cm4gKE5vZGUgKikgbm9kZTsKIH0KQEAgLTE4NCwzNCAr MzE4LDc4IEBAIG1ha2VKc29uVGFibGVTaWJsaW5nSm9pbihib29sIGNyb3NzLCBOb2RlICps bm9kZSwgTm9kZSAqcm5vZGUpCiB9CiAKIC8qCi0gKiBSZWN1cnNpdmVseSB0cmFuc2Zvcm0g Y2hpbGQgKG5lc3RlZCkgSlNPTl9UQUJMRSBjb2x1bW5zLgorICogUmVjdXJzaXZlbHkgdHJh bnNmb3JtIGNoaWxkIEpTT05fVEFCTEUgcGxhbi4KICAqCi0gKiBDaGlsZCBjb2x1bW5zIGFy ZSB0cmFuc2Zvcm1lZCBpbnRvIGEgYmluYXJ5IHRyZWUgb2YgdW5pb24vY3Jvc3Mtam9pbmVk Ci0gKiBKc29uVGFibGVTaWJsaW5nTm9kZXMuCisgKiBEZWZhdWx0IHBsYW4gaXMgdHJhbnNm b3JtZWQgaW50byBhIGNyb3NzL3VuaW9uIGpvaW4gb2YgaXRzIG5lc3RlZCBjb2x1bW5zLgor ICogU2ltcGxlIGFuZCBvdXRlci9pbm5lciBwbGFucyBhcmUgdHJhbnNmb3JtZWQgaW50byBh IEpzb25UYWJsZVBhcmVudE5vZGUgYnkKKyAqIGZpbmRpbmcgYW5kIHRyYW5zZm9ybWluZyBj b3JyZXNwb25kaW5nIG5lc3RlZCBjb2x1bW4uCisgKiBTaWJsaW5nIHBsYW5zIGFyZSByZWN1 cnNpdmVseSB0cmFuc2Zvcm1lZCBpbnRvIGEgSnNvblRhYmxlU2libGluZ05vZGUuCiAgKi8K IHN0YXRpYyBOb2RlICoKLXRyYW5zZm9ybUpzb25UYWJsZUNoaWxkQ29sdW1ucyhKc29uVGFi bGVDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMpCit0cmFuc2Zvcm1Kc29uVGFibGVDaGls ZFBsYW4oSnNvblRhYmxlQ29udGV4dCAqY3h0LCBKc29uVGFibGVQbGFuICpwbGFuLAorCQkJ CQkJCUxpc3QgKmNvbHVtbnMpCiB7Ci0JTm9kZQkgICAqcmVzID0gTlVMTDsKLQlMaXN0Q2Vs bCAgICpsYzsKLQlib29sCQljcm9zcyA9IGN4dC0+dGFibGUtPmpvaW5fdHlwZSAmIEpTVFBK X0NST1NTOworCUpzb25UYWJsZUNvbHVtbiAqanRjID0gTlVMTDsKIAotCS8qIHRyYW5zZm9y bSBhbGwgbmVzdGVkIGNvbHVtbnMgaW50byB1bmlvbi9jcm9zIGpvaW4gKi8KLQlmb3JlYWNo KGxjLCBjb2x1bW5zKQorCWlmICghcGxhbiB8fCBwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9E RUZBVUxUKQogCXsKLQkJSnNvblRhYmxlQ29sdW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFi bGVDb2x1bW4sIGxmaXJzdChsYykpOwotCQlOb2RlCSAgICpub2RlOworCQkvKiB1bnNwZWNp ZmllZCBvciBkZWZhdWx0IHBsYW4gKi8KKwkJTm9kZQkgICAqcmVzID0gTlVMTDsKKwkJTGlz dENlbGwgICAqbGM7CisJCWJvb2wJCWNyb3NzID0gcGxhbiAmJiAocGxhbi0+am9pbl90eXBl ICYgSlNUUEpfQ1JPU1MpOwogCi0JCWlmIChqdGMtPmNvbHR5cGUgIT0gSlRDX05FU1RFRCkK LQkJCWNvbnRpbnVlOworCQkvKiB0cmFuc2Zvcm0gYWxsIG5lc3RlZCBjb2x1bW5zIGludG8g Y3Jvc3MvdW5pb24gam9pbiAqLworCQlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCQl7CisJCQlK c29uVGFibGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0 KGxjKSk7CisJCQlOb2RlICpub2RlOwogCi0JCW5vZGUgPSB0cmFuc2Zvcm1OZXN0ZWRKc29u VGFibGVDb2x1bW4oY3h0LCBqdGMpOworCQkJaWYgKGp0Yy0+Y29sdHlwZSAhPSBKVENfTkVT VEVEKQorCQkJCWNvbnRpbnVlOworCisJCQlub2RlID0gdHJhbnNmb3JtTmVzdGVkSnNvblRh YmxlQ29sdW1uKGN4dCwganRjLCBwbGFuKTsKKworCQkJLyogam9pbiB0cmFuc2Zvcm1lZCBu b2RlIHdpdGggcHJldmlvdXMgc2libGluZyBub2RlcyAqLworCQkJcmVzID0gcmVzID8gbWFr ZUpzb25UYWJsZVNpYmxpbmdKb2luKGNyb3NzLCByZXMsIG5vZGUpIDogbm9kZTsKKwkJfQog Ci0JCS8qIGpvaW4gdHJhbnNmb3JtZWQgbm9kZSB3aXRoIHByZXZpb3VzIHNpYmxpbmcgbm9k ZXMgKi8KLQkJcmVzID0gcmVzID8gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKGNyb3NzLCBy ZXMsIG5vZGUpIDogbm9kZTsKKwkJcmV0dXJuIHJlczsKKwl9CisJZWxzZSBpZiAocGxhbi0+ cGxhbl90eXBlID09IEpTVFBfU0lNUExFKQorCXsKKwkJanRjID0gZmluZE5lc3RlZEpzb25U YWJsZUNvbHVtbihjb2x1bW5zLCBwbGFuLT5wYXRobmFtZSk7CiAJfQorCWVsc2UgaWYgKHBs YW4tPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlmIChwbGFuLT5qb2luX3R5 cGUgPT0gSlNUUEpfSU5ORVIgfHwKKwkJCXBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQSl9PVVRF UikKKwkJeworCQkJQXNzZXJ0KHBsYW4tPnBsYW4xLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1Q TEUpOworCQkJanRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNvbHVtbihjb2x1bW5zLCBwbGFu LT5wbGFuMS0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJTm9kZQkgICAqbm9k ZTEgPQorCQkJCXRyYW5zZm9ybUpzb25UYWJsZUNoaWxkUGxhbihjeHQsIHBsYW4tPnBsYW4x LCBjb2x1bW5zKTsKKwkJCU5vZGUJICAgKm5vZGUyID0KKwkJCQl0cmFuc2Zvcm1Kc29uVGFi bGVDaGlsZFBsYW4oY3h0LCBwbGFuLT5wbGFuMiwgY29sdW1ucyk7CisKKwkJCXJldHVybiBt YWtlSnNvblRhYmxlU2libGluZ0pvaW4ocGxhbi0+am9pbl90eXBlID09IEpTVFBKX0NST1NT LAorCQkJCQkJCQkJCQlub2RlMSwgbm9kZTIpOworCQl9CisJfQorCWVsc2UKKwkJZWxvZyhF UlJPUiwgImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIHR5cGUgJWQiLCBwbGFuLT5wbGFuX3R5 cGUpOwogCi0JcmV0dXJuIHJlczsKKwlpZiAoIWp0YykKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiaW52YWxp ZCBKU09OX1RBQkxFIHBsYW4iKSwKKwkJCQkgZXJyZGV0YWlsKCJwYXRoIG5hbWUgd2FzICVz IG5vdCBmb3VuZCBpbiBuZXN0ZWQgY29sdW1ucyBsaXN0IiwKKwkJCQkJCSAgIHBsYW4tPnBh dGhuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuLT5s b2NhdGlvbikpKTsKKworCXJldHVybiB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4o Y3h0LCBqdGMsIHBsYW4pOwogfQogCiAvKiBDaGVjayB3aGV0aGVyIHR5cGUgaXMganNvbi9q c29uYiwgYXJyYXksIG9yIHJlY29yZC4gKi8KQEAgLTM3NSwxOSArNTUzLDgwIEBAIG1ha2VQ YXJlbnRKc29uVGFibGVOb2RlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwgY2hhciAqcGF0aFNw ZWMsIExpc3QgKmNvbHVtbnMpCiB9CiAKIHN0YXRpYyBKc29uVGFibGVQYXJlbnROb2RlICoK LXRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxlQ29udGV4dCAqY3h0LCBMaXN0 ICpjb2x1bW5zLCBjaGFyICpwYXRoU3BlYywKK3RyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMo SnNvblRhYmxlQ29udGV4dCAqY3h0LCBKc29uVGFibGVQbGFuICpwbGFuLAorCQkJCQkJICBM aXN0ICpjb2x1bW5zLCBjaGFyICpwYXRoU3BlYywgY2hhciAqKnBhdGhOYW1lLAogCQkJCQkJ ICBpbnQgbG9jYXRpb24pCiB7CiAJSnNvblRhYmxlUGFyZW50Tm9kZSAqbm9kZTsKKwlKc29u VGFibGVQbGFuICpjaGlsZFBsYW47CisJYm9vbAkJZGVmYXVsdFBsYW4gPSAhcGxhbiB8fCBw bGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUOworCisJaWYgKCEqcGF0aE5hbWUpCisJ eworCQlpZiAoY3h0LT50YWJsZS0+cGxhbikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBK U09OX1RBQkxFIGV4cHJlc3Npb24iKSwKKwkJCQkJIGVycmRldGFpbCgiSlNPTl9UQUJMRSBj b2x1bW5zIG11c3QgY29udGFpbiAiCisJCQkJCQkJICAgImV4cGxpY2l0IEFTIHBhdGhuYW1l IHNwZWNpZmljYXRpb24gaWYgIgorCQkJCQkJCSAgICJleHBsaWNpdCBQTEFOIGNsYXVzZSBp cyB1c2VkIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbG9jYXRp b24pKSk7CisKKwkJKnBhdGhOYW1lID0gZ2VuZXJhdGVKc29uVGFibGVQYXRoTmFtZShjeHQp OworCX0KKworCWlmIChkZWZhdWx0UGxhbikKKwkJY2hpbGRQbGFuID0gcGxhbjsKKwllbHNl CisJeworCQkvKiB2YWxpZGF0ZSBwYXJlbnQgYW5kIGNoaWxkIHBsYW5zICovCisJCUpzb25U YWJsZVBsYW4gKnBhcmVudFBsYW47CisKKwkJaWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQ X0pPSU5FRCkKKwkJeworCQkJaWYgKHBsYW4tPmpvaW5fdHlwZSAhPSBKU1RQSl9JTk5FUiAm JgorCQkJCXBsYW4tPmpvaW5fdHlwZSAhPSBKU1RQSl9PVVRFUikKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVy cm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4iKSwKKwkJCQkJCSBlcnJkZXRhaWwoImV4 cGVjdGVkIElOTkVSIG9yIE9VVEVSIEpTT05fVEFCTEUgcGxhbiBub2RlIiksCisJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuLT5sb2NhdGlvbikpKTsKKwor CQkJcGFyZW50UGxhbiA9IHBsYW4tPnBsYW4xOworCQkJY2hpbGRQbGFuID0gcGxhbi0+cGxh bjI7CisKKwkJCUFzc2VydChwYXJlbnRQbGFuLT5wbGFuX3R5cGUgIT0gSlNUUF9KT0lORUQp OworCQkJQXNzZXJ0KHBhcmVudFBsYW4tPnBhdGhuYW1lKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCXBhcmVudFBsYW4gPSBwbGFuOworCQkJY2hpbGRQbGFuID0gTlVMTDsKKwkJfQorCisJ CWlmIChzdHJjbXAocGFyZW50UGxhbi0+cGF0aG5hbWUsICpwYXRoTmFtZSkpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIiksCisJCQkJCSBlcnJkZXRhaWwo InBhdGggbmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgJXMgYnV0ICVzIGlzIGdpdmVuIiwKKwkJ CQkJCQkgICAqcGF0aE5hbWUsIHBhcmVudFBsYW4tPnBhdGhuYW1lKSwKKwkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgcGxhbi0+bG9jYXRpb24pKSk7CisKKwkJdmFs aWRhdGVKc29uVGFibGVDaGlsZFBsYW4oY3h0LT5wc3RhdGUsIGNoaWxkUGxhbiwgY29sdW1u cyk7CisJfQogCiAJLyogdHJhbnNmb3JtIG9ubHkgbm9uLW5lc3RlZCBjb2x1bW5zICovCiAJ bm9kZSA9IG1ha2VQYXJlbnRKc29uVGFibGVOb2RlKGN4dCwgcGF0aFNwZWMsIGNvbHVtbnMp OworCW5vZGUtPm5hbWUgPSBwc3RyZHVwKCpwYXRoTmFtZSk7CiAKLQkvKiB0cmFuc2Zvcm0g cmVjdXJzaXZlbHkgbmVzdGVkIGNvbHVtbnMgKi8KLQlub2RlLT5jaGlsZCA9IHRyYW5zZm9y bUpzb25UYWJsZUNoaWxkQ29sdW1ucyhjeHQsIGNvbHVtbnMpOwotCi0Jbm9kZS0+b3V0ZXJK b2luID0gY3h0LT50YWJsZS0+am9pbl90eXBlICYgSlNUUEpfT1VURVI7Ci0Jbm9kZS0+dW5p b25Kb2luID0gY3h0LT50YWJsZS0+am9pbl90eXBlICYgSlNUUEpfVU5JT047CisJaWYgKGNo aWxkUGxhbiB8fCBkZWZhdWx0UGxhbikKKwl7CisJCS8qIHRyYW5zZm9ybSByZWN1cnNpdmVs eSBuZXN0ZWQgY29sdW1ucyAqLworCQlub2RlLT5jaGlsZCA9IHRyYW5zZm9ybUpzb25UYWJs ZUNoaWxkUGxhbihjeHQsIGNoaWxkUGxhbiwgY29sdW1ucyk7CisJCWlmIChub2RlLT5jaGls ZCkKKwkJCW5vZGUtPm91dGVySm9pbiA9ICFwbGFuIHx8IChwbGFuLT5qb2luX3R5cGUgJiBK U1RQSl9PVVRFUik7CisJCS8qIGVsc2U6IGRlZmF1bHQgcGxhbiBjYXNlLCBubyBjaGlsZHJl biBmb3VuZCAqLworCX0KIAogCXJldHVybiBub2RlOwogfQpAQCAtNDA1LDcgKzY0NCw5IEBA IHRyYW5zZm9ybUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQp CiAJSnNvblRhYmxlQ29udGV4dCBjeHQ7CiAJVGFibGVGdW5jICAqdGYgPSBtYWtlTm9kZShU YWJsZUZ1bmMpOwogCUpzb25GdW5jRXhwciAqamZlID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHBy KTsKKwlKc29uVGFibGVQbGFuICpwbGFuID0ganQtPnBsYW47CiAJSnNvbkNvbW1vbiAqanNj b21tb247CisJY2hhcgkgICAqcm9vdFBhdGhOYW1lID0ganQtPmNvbW1vbi0+cGF0aG5hbWU7 CiAJY2hhcgkgICAqcm9vdFBhdGg7CiAJYm9vbAkJaXNfbGF0ZXJhbDsKIApAQCAtNDEzLDkg KzY1NCwzMSBAQCB0cmFuc2Zvcm1Kc29uVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29u VGFibGUgKmp0KQogCWN4dC50YWJsZSA9IGp0OwogCWN4dC50YWJsZWZ1bmMgPSB0ZjsKIAlj eHQucGF0aE5hbWVzID0gTklMOworCWN4dC5wYXRoTmFtZUlkID0gMDsKKworCWlmIChyb290 UGF0aE5hbWUpCisJCXJlZ2lzdGVySnNvblRhYmxlQ29sdW1uKCZjeHQsIHJvb3RQYXRoTmFt ZSk7CiAKIAlyZWdpc3RlckFsbEpzb25UYWJsZUNvbHVtbnMoJmN4dCwganQtPmNvbHVtbnMp OwogCisjaWYgMCAvKiBYWFggaXQnIHVuY2xlYXIgZnJvbSB0aGUgc3RhbmRhcmQgd2hldGhl ciByb290IHBhdGggbmFtZSBpcyBtYW5kYXRvcnkgb3Igbm90ICovCisJaWYgKHBsYW4gJiYg cGxhbi0+cGxhbl90eXBlICE9IEpTVFBfREVGQVVMVCAmJiAhcm9vdFBhdGhOYW1lKQorCXsK KwkJLyogQXNzaWduIHJvb3QgcGF0aCBuYW1lIGFuZCBjcmVhdGUgY29ycmVzcG9uZGluZyBw bGFuIG5vZGUgKi8KKwkJSnNvblRhYmxlUGxhbiAqcm9vdE5vZGUgPSBtYWtlTm9kZShKc29u VGFibGVQbGFuKTsKKwkJSnNvblRhYmxlUGxhbiAqcm9vdFBsYW4gPSAoSnNvblRhYmxlUGxh biAqKQorCQkJCW1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBKX09VVEVSLCAoTm9kZSAq KSByb290Tm9kZSwKKwkJCQkJCQkJCQkoTm9kZSAqKSBwbGFuLCBqdC0+bG9jYXRpb24pOwor CisJCXJvb3RQYXRoTmFtZSA9IGdlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoJmN4dCk7CisK KwkJcm9vdE5vZGUtPnBsYW5fdHlwZSA9IEpTVFBfU0lNUExFOworCQlyb290Tm9kZS0+cGF0 aG5hbWUgPSByb290UGF0aE5hbWU7CisKKwkJcGxhbiA9IHJvb3RQbGFuOworCX0KKyNlbmRp ZgorCiAJanNjb21tb24gPSBjb3B5T2JqZWN0KGp0LT5jb21tb24pOwogCWpzY29tbW9uLT5w YXRoc3BlYyA9IG1ha2VTdHJpbmdDb25zdChwc3RyZHVwKCIkIiksIC0xKTsKIApAQCAtNDUx LDcgKzcxNCw4IEBAIHRyYW5zZm9ybUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpz b25UYWJsZSAqanQpCiAKIAlyb290UGF0aCA9IGNhc3ROb2RlKEFfQ29uc3QsIGp0LT5jb21t b24tPnBhdGhzcGVjKS0+dmFsLnN2YWwuc3ZhbDsKIAotCXRmLT5wbGFuID0gKE5vZGUgKikg dHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucygmY3h0LCBqdC0+Y29sdW1ucywgcm9vdFBhdGgs CisJdGYtPnBsYW4gPSAoTm9kZSAqKSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKCZjeHQs IHBsYW4sIGp0LT5jb2x1bW5zLAorCQkJCQkJCQkJCQkJICByb290UGF0aCwgJnJvb3RQYXRo TmFtZSwKIAkJCQkJCQkJCQkJCSAganQtPmNvbW1vbi0+bG9jYXRpb24pOwogCiAJdGYtPm9y ZGluYWxpdHljb2wgPSAtMTsJCS8qIHVuZGVmaW5lIG9yZGluYWxpdHkgY29sdW1uIG51bWJl ciAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDI4MjI5MmYwZjguLjZm MGU3YzAyM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTExMTI3LDEw ICsxMTEyNyw1NCBAQCBnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyhUYWJsZUZ1bmMg KnRmLCBOb2RlICpub2RlLAogCQkgYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVm LCAnICcpOwogCQkgYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgICJORVNURUQgUEFU SCAiLCAwLCAwLCAwKTsKIAkJIGdldF9jb25zdF9leHByKG4tPnBhdGgsIGNvbnRleHQsIC0x KTsKKwkJIGFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiIEFTICVzIiwgcXVvdGVf aWRlbnRpZmllcihuLT5uYW1lKSk7CiAJCSBnZXRfanNvbl90YWJsZV9jb2x1bW5zKHRmLCBu LCBjb250ZXh0LCBzaG93aW1wbGljaXQpOwogCX0KIH0KIAorLyoKKyAqIGdldF9qc29uX3Rh YmxlX3BsYW4gLSBQYXJzZSBiYWNrIGEgSlNPTl9UQUJMRSBwbGFuCisgKi8KK3N0YXRpYyB2 b2lkCitnZXRfanNvbl90YWJsZV9wbGFuKFRhYmxlRnVuYyAqdGYsIE5vZGUgKm5vZGUsIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkJYm9vbCBwYXJlbnRoZXNpemUpCit7CisJ aWYgKHBhcmVudGhlc2l6ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVm LCAnKCcpOworCisJaWYgKElzQShub2RlLCBKc29uVGFibGVTaWJsaW5nTm9kZSkpCisJewor CQlKc29uVGFibGVTaWJsaW5nTm9kZSAqbiA9IChKc29uVGFibGVTaWJsaW5nTm9kZSAqKSBu b2RlOworCisJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIG4tPmxhcmcsIGNvbnRleHQsCisJ CQkJCQkJSXNBKG4tPmxhcmcsIEpzb25UYWJsZVNpYmxpbmdOb2RlKSB8fAorCQkJCQkJCWNh c3ROb2RlKEpzb25UYWJsZVBhcmVudE5vZGUsIG4tPmxhcmcpLT5jaGlsZCk7CisKKwkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsIG4tPmNyb3NzID8gIiBDUk9TUyAi IDogIiBVTklPTiAiKTsKKworCQlnZXRfanNvbl90YWJsZV9wbGFuKHRmLCBuLT5yYXJnLCBj b250ZXh0LAorCQkJCQkJCUlzQShuLT5yYXJnLCBKc29uVGFibGVTaWJsaW5nTm9kZSkgfHwK KwkJCQkJCQljYXN0Tm9kZShKc29uVGFibGVQYXJlbnROb2RlLCBuLT5yYXJnKS0+Y2hpbGQp OworCX0KKwllbHNlCisJeworCQkgSnNvblRhYmxlUGFyZW50Tm9kZSAqbiA9IGNhc3ROb2Rl KEpzb25UYWJsZVBhcmVudE5vZGUsIG5vZGUpOworCisJCSBhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGNvbnRleHQtPmJ1ZiwgcXVvdGVfaWRlbnRpZmllcihuLT5uYW1lKSk7CisKKwkJIGlm IChuLT5jaGlsZCkKKwkJIHsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY29udGV4dC0+ YnVmLAorCQkJCQkJCQkgICBuLT5vdXRlckpvaW4gPyAiIE9VVEVSICIgOiAiIElOTkVSICIp OworCQkJZ2V0X2pzb25fdGFibGVfcGxhbih0Ziwgbi0+Y2hpbGQsIGNvbnRleHQsCisJCQkJ CQkJCUlzQShuLT5jaGlsZCwgSnNvblRhYmxlU2libGluZ05vZGUpKTsKKwkJIH0KKwl9CisK KwlpZiAocGFyZW50aGVzaXplKQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihjb250ZXh0LT5i dWYsICcpJyk7Cit9CisKIC8qCiAgKiBnZXRfanNvbl90YWJsZV9jb2x1bW5zIC0gUGFyc2Ug YmFjayBKU09OX1RBQkxFIGNvbHVtbnMKICAqLwpAQCAtMTEyNTksNiArMTEzMDMsOCBAQCBn ZXRfanNvbl90YWJsZShUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQs IGJvb2wgc2hvd2ltcGxpY2l0KQogCiAJZ2V0X2NvbnN0X2V4cHIocm9vdC0+cGF0aCwgY29u dGV4dCwgLTEpOwogCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMgJXMiLCBxdW90ZV9p ZGVudGlmaWVyKHJvb3QtPm5hbWUpKTsKKwogCWlmIChqZXhwci0+cGFzc2luZ192YWx1ZXMp CiAJewogCQlMaXN0Q2VsbCAgICpsYzEsICpsYzI7CkBAIC0xMTI5MSwxNCArMTEzMzcsOSBA QCBnZXRfanNvbl90YWJsZShUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsIGJvb2wgc2hvd2ltcGxpY2l0KQogCiAJZ2V0X2pzb25fdGFibGVfY29sdW1ucyh0Ziwg cm9vdCwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKIAotCWlmICghcm9vdC0+b3V0ZXJKb2lu IHx8ICFyb290LT51bmlvbkpvaW4pCi0JewotCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcgJyk7Ci0JCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJQTEFOIERFRkFVTFQi LCAwLCAwLCAwKTsKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIoJXMsICVzKSIsCi0JCQkJ CQkgcm9vdC0+b3V0ZXJKb2luID8gIk9VVEVSIiA6ICJJTk5FUiIsCi0JCQkJCQkgcm9vdC0+ dW5pb25Kb2luID8gIlVOSU9OIiA6ICJDUk9TUyIpOwotCX0KKwlhcHBlbmRTdHJpbmdJbmZv Q2hhcihidWYsICcgJyk7CisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIlBMQU4g IiwgMCwgMCwgMCk7CisJZ2V0X2pzb25fdGFibGVfcGxhbih0ZiwgKE5vZGUgKikgcm9vdCwg Y29udGV4dCwgdHJ1ZSk7CiAKIAlpZiAoamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09O X0JFSEFWSU9SX0VNUFRZKQogCQlnZXRfanNvbl9iZWhhdmlvcihqZXhwci0+b25fZXJyb3Is IGNvbnRleHQsICJFUlJPUiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFr ZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCA4NzJmMmYw ODI4Li5jNzE3NDY4ZWIzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVu Y3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApAQCAtMTEwLDYgKzEx MCw4IEBAIGV4dGVybiBKc29uRm9ybWF0ICptYWtlSnNvbkZvcm1hdChKc29uRm9ybWF0VHlw ZSB0eXBlLCBKc29uRW5jb2RpbmcgZW5jb2RpbmcsCiAJCQkJCQkJCSAgaW50IGxvY2F0aW9u KTsKIGV4dGVybiBKc29uVmFsdWVFeHByICptYWtlSnNvblZhbHVlRXhwcihFeHByICpleHBy LCBKc29uRm9ybWF0ICpmb3JtYXQpOwogZXh0ZXJuIEpzb25CZWhhdmlvciAqbWFrZUpzb25C ZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmV4cHIpOworZXh0ZXJuIE5v ZGUgKm1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpzb25UYWJsZVBsYW5Kb2luVHlwZSB0eXBl LAorCQkJCQkJCQkJIE5vZGUgKnBsYW4xLCBOb2RlICpwbGFuMiwgaW50IGxvY2F0aW9uKTsK IGV4dGVybiBOb2RlICptYWtlSnNvbktleVZhbHVlKE5vZGUgKmtleSwgTm9kZSAqdmFsdWUp OwogZXh0ZXJuIE5vZGUgKm1ha2VKc29uSXNQcmVkaWNhdGUoTm9kZSAqZXhwciwgSnNvbkZv cm1hdCAqZm9ybWF0LAogCQkJCQkJCQkgSnNvblZhbHVlVHlwZSB2dHlwZSwgYm9vbCB1bmlx dWVfa2V5cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA1N2Y5NGM1NTZlLi42MDk0 NzZiMDEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNjQ3LDYgKzE2NDcsNyBA QCB0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVDb2x1bW4KIAljaGFyCSAgICpuYW1lOwkJCQkv KiBjb2x1bW4gbmFtZSAqLwogCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJCS8qIGNvbHVtbiB0 eXBlIG5hbWUgKi8KIAlKc29uUGF0aFNwZWMgcGF0aHNwZWM7CQkJLyogcGF0aCBzcGVjaWZp Y2F0aW9uLCBpZiBhbnkgKi8KKwljaGFyCSAgICpwYXRobmFtZTsJCQkvKiBwYXRoIG5hbWUs IGlmIGFueSAqLwogCUpzb25Gb3JtYXQgKmZvcm1hdDsJCQkJLyogSlNPTiBmb3JtYXQgY2xh dXNlLCBpZiBzcGVjaWZpZWQgKi8KIAlKc29uV3JhcHBlcgl3cmFwcGVyOwkJCS8qIFdSQVBQ RVIgYmVoYXZpb3IgZm9yIGZvcm1hdHRlZCBjb2x1bW5zICovCiAJYm9vbAkJb21pdF9xdW90 ZXM7CQkvKiBvbWl0IG9yIGtlZXAgcXVvdGVzIG9uIHNjYWxhciBzdHJpbmdzPyAqLwpAQCAt MTY1Niw2ICsxNjU3LDE3IEBAIHR5cGVkZWYgc3RydWN0IEpzb25UYWJsZUNvbHVtbgogCWlu dAkJCWxvY2F0aW9uOwkJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICov CiB9IEpzb25UYWJsZUNvbHVtbjsKIAorLyoKKyAqIEpzb25UYWJsZVBsYW5UeXBlIC0KKyAq CQlmbGFncyBmb3IgSlNPTl9UQUJMRSBwbGFuIG5vZGUgdHlwZXMgcmVwcmVzZW50YXRpb24K KyAqLwordHlwZWRlZiBlbnVtIEpzb25UYWJsZVBsYW5UeXBlCit7CisJSlNUUF9ERUZBVUxU LAorCUpTVFBfU0lNUExFLAorCUpTVFBfSk9JTkVELAorfSBKc29uVGFibGVQbGFuVHlwZTsK KwogLyoKICAqIEpzb25UYWJsZVBsYW5Kb2luVHlwZSAtCiAgKgkJZmxhZ3MgZm9yIEpTT05f VEFCTEUgam9pbiB0eXBlcyByZXByZXNlbnRhdGlvbgpAQCAtMTY2OCw2ICsxNjgwLDIzIEBA IHR5cGVkZWYgZW51bSBKc29uVGFibGVQbGFuSm9pblR5cGUKIAlKU1RQSl9VTklPTiA9IDB4 MDgsCiB9IEpzb25UYWJsZVBsYW5Kb2luVHlwZTsKIAordHlwZWRlZiBzdHJ1Y3QgSnNvblRh YmxlUGxhbiBKc29uVGFibGVQbGFuOworCisvKgorICogSnNvblRhYmxlUGxhbiAtCisgKgkJ dW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFIHBsYW4gbm9kZQor ICovCitzdHJ1Y3QgSnNvblRhYmxlUGxhbgoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvblRh YmxlUGxhblR5cGUgcGxhbl90eXBlOwkJLyogcGxhbiB0eXBlICovCisJSnNvblRhYmxlUGxh bkpvaW5UeXBlIGpvaW5fdHlwZTsJLyogam9pbiB0eXBlIChmb3Igam9pbmVkIHBsYW4gb25s eSkgKi8KKwlKc29uVGFibGVQbGFuICpwbGFuMTsJCQkJLyogZmlyc3Qgam9pbmVkIHBsYW4g Ki8KKwlKc29uVGFibGVQbGFuICpwbGFuMjsJCQkJLyogc2Vjb25kIGpvaW5lZCBwbGFuICov CisJY2hhcgkgICAqcGF0aG5hbWU7CQkJCS8qIHBhdGggbmFtZSAoZm9yIHNpbXBsZSBwbGFu IG9ubHkpICovCisJaW50CQkJbG9jYXRpb247CQkJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAt MSBpZiB1bmtub3duICovCit9OworCiAvKgogICogSnNvblRhYmxlIC0KICAqCQl1bnRyYW5z Zm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVEFCTEUKQEAgLTE2NzcsNyArMTcwNiw3 IEBAIHR5cGVkZWYgc3RydWN0IEpzb25UYWJsZQogCU5vZGVUYWcJCXR5cGU7CiAJSnNvbkNv bW1vbiAqY29tbW9uOwkJCQkJLyogY29tbW9uIEpTT04gcGF0aCBzeW50YXggZmllbGRzICov CiAJTGlzdAkgICAqY29sdW1uczsJCQkJLyogbGlzdCBvZiBKc29uVGFibGVDb2x1bW4gKi8K LQlKc29uVGFibGVQbGFuSm9pblR5cGUgam9pbl90eXBlOwkvKiBERUZBVUxUIFBMQU4gam9p biB0eXBlICovCisJSnNvblRhYmxlUGxhbiAqcGxhbjsJCQkJLyogam9pbiBwbGFuLCBpZiBz cGVjaWZpZWQgKi8KIAlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOwkJCQkvKiBPTiBFUlJPUiBi ZWhhdmlvciwgaWYgc3BlY2lmaWVkICovCiAJQWxpYXMJICAgKmFsaWFzOwkJCQkJLyogdGFi bGUgYWxpYXMgaW4gRlJPTSBjbGF1c2UgKi8KIAlib29sCQlsYXRlcmFsOwkJCQkvKiBkb2Vz IGl0IGhhdmUgTEFURVJBTCBwcmVmaXg/ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4 IDhjOTA4MzkyZjYuLjg3MTY3MWM2Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0x NDc1LDkgKzE0NzUsOSBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQYXJlbnROb2RlCiB7 CiAJTm9kZVRhZwkJdHlwZTsKIAlDb25zdAkgICAqcGF0aDsJCS8qIGpzb25wYXRoIGNvbnN0 YW50ICovCisJY2hhcgkgICAqbmFtZTsJCS8qIHBhdGggbmFtZSAqLwogCU5vZGUJICAgKmNo aWxkOwkJLyogbmVzdGVkIGNvbHVtbnMsIGlmIGFueSAqLwogCWJvb2wJCW91dGVySm9pbjsJ Lyogb3V0ZXIgb3IgaW5uZXIgam9pbiBmb3IgbmVzdGVkIGNvbHVtbnM/ICovCi0JYm9vbAkJ dW5pb25Kb2luOwkvKiB1bmlvbiBvciBjcm9zcyBqb2luIGZvciBuZXN0ZWQgY29sdW1ucz8g Ki8KIAlpbnQJCQljb2xNaW47CQkvKiBtaW4gY29sdW1uIGluZGV4IGluIHRoZSByZXN1bHRp bmcgY29sdW1uIGxpc3QgKi8KIAlpbnQJCQljb2xNYXg7CQkvKiBtYXggY29sdW1uIGluZGV4 IGluIHRoZSByZXN1bHRpbmcgY29sdW1uIGxpc3QgKi8KIAlib29sCQllcnJvck9uRXJyb3I7 IC8qIEVSUk9SL0VNUFRZIE9OIEVSUk9SIGJlaGF2aW9yICovCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dAppbmRleCAwZDhjNWQ2YWRkLi4yZGI3 MDIzMjA2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3Nx bGpzb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNv bi5vdXQKQEAgLTExMzYsMTggKzExMzYsMTggQEAgU0VMRUNUICogRlJPTQogCQkJaWEgaW50 W10gUEFUSCAnJCcsCiAJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCiAJCQlqYmEganNvbmJbXSBQ QVRIICckJywKLQkJCU5FU1RFRCBQQVRIICckWzFdJyBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckWzFdJyBBUyBwMSBDT0xVTU5TICgKIAkJCQlhMSBpbnQsCi0JCQkJTkVTVEVEIFBB VEggJyRbKl0nIENPTFVNTlMgKAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBBUyAicDEgMSIg Q09MVU1OUyAoCiAJCQkJCWExMSB0ZXh0CiAJCQkJKSwKIAkJCQliMSB0ZXh0CiAJCQkpLAot CQkJTkVTVEVEIFBBVEggJyRbMl0nIENPTFVNTlMgKAotCQkJCU5FU1RFRCBQQVRIICckWypd JyBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICgKKwkJ CQlORVNURUQgUEFUSCAnJFsqXScgQVMgInAyOjEiIENPTFVNTlMgKAogCQkJCQlhMjEgdGV4 dAogCQkJCSksCi0JCQkJTkVTVEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKAorCQkJCU5FU1RF RCBQQVRIICckWypdJyBBUyBwMjIgQ09MVU1OUyAoCiAJCQkJCWEyMiB0ZXh0CiAJCQkJKQog CQkJKQpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJs aWMuanNvbmJfdGFibGVfdmlldyBBUwogICAgICJqc29uX3RhYmxlIi5hMjEsCiAgICAgImpz b25fdGFibGUiLmEyMgogICAgRlJPTSBKU09OX1RBQkxFKAotICAgICAgICAgICAgJ251bGwn Ojpqc29uYiwgJyRbKl0nCisgICAgICAgICAgICAnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMg anNvbl90YWJsZV9wYXRoXzEKICAgICAgICAgICAgIFBBU1NJTkcKICAgICAgICAgICAgICAg ICAxICsgMiBBUyBhLAogICAgICAgICAgICAgICAgICciZm9vIic6Ompzb24gQVMgImIgYyIK QEAgLTEyMTgsMzQgKzEyMTgsMzUgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMu anNvbmJfdGFibGVfdmlldyBBUwogICAgICAgICAgICAgICAgIGlhIGludGVnZXJbXSBQQVRI ICckJywKICAgICAgICAgICAgICAgICB0YSB0ZXh0W10gUEFUSCAnJCcsCiAgICAgICAgICAg ICAgICAgamJhIGpzb25iW10gUEFUSCAnJCcsCi0gICAgICAgICAgICAgICAgTkVTVEVEIFBB VEggJyRbMV0nCisgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxCiAg ICAgICAgICAgICAgICAgQ09MVU1OUyAoCiAgICAgICAgICAgICAgICAgICAgIGExIGludGVn ZXIgUEFUSCAnJC4iYTEiJywKICAgICAgICAgICAgICAgICAgICAgYjEgdGV4dCBQQVRIICck LiJiMSInLAotICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScKKyAgICAg ICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMSAxIgogICAgICAgICAg ICAgICAgICAgICBDT0xVTU5TICgKICAgICAgICAgICAgICAgICAgICAgICAgIGExMSB0ZXh0 IFBBVEggJyQuImExMSInCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAg ICApLAotICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWzJdJworICAgICAgICAgICAg ICAgIE5FU1RFRCBQQVRIICckWzJdJyBBUyBwMgogICAgICAgICAgICAgICAgIENPTFVNTlMg KAotICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScKKyAgICAgICAgICAg ICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIgogICAgICAgICAgICAgICAg ICAgICBDT0xVTU5TICgKICAgICAgICAgICAgICAgICAgICAgICAgIGEyMSB0ZXh0IFBBVEgg JyQuImEyMSInCiAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckWypdJworICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAn JFsqXScgQVMgcDIyCiAgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAogICAgICAgICAg ICAgICAgICAgICAgICAgYTIyIHRleHQgUEFUSCAnJC4iYTIyIicKICAgICAgICAgICAgICAg ICAgICAgKQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKKyAgICAgICAgICAg IFBMQU4gKGpzb25fdGFibGVfcGF0aF8xIE9VVEVSICgocDEgT1VURVIgInAxIDEiKSBVTklP TiAocDIgT1VURVIgKCJwMjoxIiBVTklPTiBwMjIpKSkpCiAgICAgICAgICkKIEVYUExBSU4g KENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3Owot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFRhYmxlIEZ1bmN0aW9uIFNj YW4gb24gImpzb25fdGFibGUiCiAgICBPdXRwdXQ6ICJqc29uX3RhYmxlIi5pZCwgImpzb25f dGFibGUiLmlkMiwgImpzb25fdGFibGUiLiJpbnQiLCAianNvbl90YWJsZSIudGV4dCwgImpz b25fdGFibGUiLiJjaGFyKDQpIiwgImpzb25fdGFibGUiLmJvb2wsICJqc29uX3RhYmxlIi4i bnVtZXJpYyIsICJqc29uX3RhYmxlIi5kb21haW4sICJqc29uX3RhYmxlIi5qcywgImpzb25f dGFibGUiLmpiLCAianNvbl90YWJsZSIuanN0LCAianNvbl90YWJsZSIuanNjLCAianNvbl90 YWJsZSIuanN2LCAianNvbl90YWJsZSIuanNiLCAianNvbl90YWJsZSIuanNicSwgImpzb25f dGFibGUiLmFhYSwgImpzb25fdGFibGUiLmFhYTEsICJqc29uX3RhYmxlIi5leGlzdHMxLCAi anNvbl90YWJsZSIuZXhpc3RzMiwgImpzb25fdGFibGUiLmV4aXN0czMsICJqc29uX3RhYmxl Ii5qczIsICJqc29uX3RhYmxlIi5qc2IydywgImpzb25fdGFibGUiLmpzYjJxLCAianNvbl90 YWJsZSIuaWEsICJqc29uX3RhYmxlIi50YSwgImpzb25fdGFibGUiLmpiYSwgImpzb25fdGFi bGUiLmExLCAianNvbl90YWJsZSIuYjEsICJqc29uX3RhYmxlIi5hMTEsICJqc29uX3RhYmxl Ii5hMjEsICJqc29uX3RhYmxlIi5hMjIKLSAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpTT05f VEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0nIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpq c29uYiBBUyAiYiBjIiBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBPUkRJ TkFMSVRZLCAiaW50IiBpbnRlZ2VyIFBBVEggJyQnLCB0ZXh0IHRleHQgUEFUSCAnJCcsICJj aGFyKDQpIiBjaGFyYWN0ZXIoNCkgUEFUSCAnJCcsIGJvb2wgYm9vbGVhbiBQQVRIICckJywg Im51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsIGRvbWFpbiBqc29uYl90ZXN0X2RvbWFpbiBQ QVRIICckJywganMganNvbiBQQVRIICckJywgamIganNvbmIgUEFUSCAnJCcsIGpzdCB0ZXh0 IEZPUk1BVCBKU09OIFBBVEggJyQnLCBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBB VEggJyQnLCBqc3YgY2hhcmFjdGVyIHZhcnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcs IGpzYiBqc29uYiBQQVRIICckJywganNicSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywg YWFhIGludGVnZXIgUEFUSCAnJC4iYWFhIicsIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEi JywgZXhpc3RzMSBib29sZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywgZXhpc3RzMiBpbnRl Z2VyIEVYSVNUUyBQQVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLCBleGlzdHMzIHRleHQg RVhJU1RTIFBBVEggJ3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLCBqczIganNv biBQQVRIICckJywganNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIFdS QVBQRVIsIGpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLCBpYSBpbnRlZ2VyW10g UEFUSCAnJCcsIHRhIHRleHRbXSBQQVRIICckJywgamJhIGpzb25iW10gUEFUSCAnJCcsIE5F U1RFRCBQQVRIICckWzFdJyBDT0xVTU5TIChhMSBpbnRlZ2VyIFBBVEggJyQuImExIicsIGIx IHRleHQgUEFUSCAnJC4iYjEiJywgTkVTVEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKGExMSB0 ZXh0IFBBVEggJyQuImExMSInKSksIE5FU1RFRCBQQVRIICckWzJdJyBDT0xVTU5TICggTkVT VEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKGEyMSB0ZXh0IFBBVEggJyQuImEyMSInKSwgTkVT VEVEIFBBVEggJyRbKl0nIENPTFVNTlMgKGEyMiB0ZXh0IFBBVEggJyQuImEyMiInKSkpKQor ICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6Ompzb25iLCAnJFsq XScgQVMganNvbl90YWJsZV9wYXRoXzEgUEFTU0lORyAzIEFTIGEsICciZm9vIic6Ompzb25i IEFTICJiIGMiIENPTFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZLCBpZDIgRk9SIE9SRElOQUxJ VFksICJpbnQiIGludGVnZXIgUEFUSCAnJCcsIHRleHQgdGV4dCBQQVRIICckJywgImNoYXIo NCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywgYm9vbCBib29sZWFuIFBBVEggJyQnLCAibnVt ZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9tYWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEgg JyQnLCBqcyBqc29uIFBBVEggJyQnLCBqYiBqc29uYiBQQVRIICckJywganN0IHRleHQgRk9S TUFUIEpTT04gUEFUSCAnJCcsIGpzYyBjaGFyYWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAn JCcsIGpzdiBjaGFyYWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQgSlNPTiBQQVRIICckJywganNi IGpzb25iIFBBVEggJyQnLCBqc2JxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLCBhYWEg aW50ZWdlciBQQVRIICckLiJhYWEiJywgYWFhMSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLCBl eGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEggJyQuImFhYSInLCBleGlzdHMyIGludGVnZXIg RVhJU1RTIFBBVEggJyQuImFhYSInIFRSVUUgT04gRVJST1IsIGV4aXN0czMgdGV4dCBFWElT VFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVOS05PV04gT04gRVJST1IsIGpzMiBqc29uIFBB VEggJyQnLCBqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBF UiwganNiMnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsIGlhIGludGVnZXJbXSBQQVRI ICckJywgdGEgdGV4dFtdIFBBVEggJyQnLCBqYmEganNvbmJbXSBQQVRIICckJywgTkVTVEVE IFBBVEggJyRbMV0nIEFTIHAxIENPTFVNTlMgKGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywg YjEgdGV4dCBQQVRIICckLiJiMSInLCBORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENP TFVNTlMgKGExMSB0ZXh0IFBBVEggJyQuImExMSInKSksIE5FU1RFRCBQQVRIICckWzJdJyBB UyBwMiBDT0xVTU5TICggTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TIChh MjEgdGV4dCBQQVRIICckLiJhMjEiJyksIE5FU1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09M VU1OUyAoYTIyIHRleHQgUEFUSCAnJC4iYTIyIicpKSkgUExBTiAoanNvbl90YWJsZV9wYXRo XzEgT1VURVIgKChwMSBPVVRFUiAicDEgMSIpIFVOSU9OIChwMiBPVVRFUiAoInAyOjEiIFVO SU9OIHAyMikpKSkpCiAoMyByb3dzKQogCiBEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzsK QEAgLTEzMzcsMTMgKzEzMzgsNDkgQEAgRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xl YW4gdG8ganNvbmIKIExJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJhIicsICckJyBDT0xVTU5TIChhIGpzb25iIEVYLi4uCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0gSlNPTl9U QUJMRTogbmVzdGVkIHBhdGhzIGFuZCBwbGFucworLS0gU2hvdWxkIGZhaWwgKEpTT05fVEFC TEUgY29sdW1ucyBtdXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aAorLS0gc3BlY2lmaWNh dGlvbnMgaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCkKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBhdGggbmFtZT4gcmVxdWly ZWQgaGVyZQorCUNPTFVNTlMgKAorCQlmb28gaW50IFBBVEggJyQnCisJKQorCVBMQU4gREVG QVVMVCAoVU5JT04pCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgZXhwcmVz c2lvbgorTElORSAyOiAganNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVp cmVkIGhlcmUKKyAgICAgICAgIF4KK0RFVEFJTDogIEpTT05fVEFCTEUgY29sdW1ucyBtdXN0 IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiBleHBsaWNp dCBQTEFOIGNsYXVzZSBpcyB1c2VkCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNv bmIgJ1tdJywgJyQnIEFTIHBhdGgxCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBD T0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCQkJZm9vIGludCBQ QVRIICckJworCQkpCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworRVJST1I6 ICBpbnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbgorTElORSA0OiAgIE5FU1RFRCBQQVRI ICckJyBDT0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorICAgICAg ICAgIF4KK0RFVEFJTDogIEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4gZXhwbGlj aXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBp cyB1c2VkCiAtLSBTaG91bGQgZmFpbCAoY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3Qp CiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCi0JanNvbmIgJ1tdJywgJyQnCisJanNvbmIg J1tdJywgJyQnIEFTIGEKIAlDT0xVTU5TICgKLQkJYSBpbnQsCi0JCWIgdGV4dCwKLQkJYSBq c29uYgorCQlhIGludAorCSkKKykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxF IGNvbHVtbiBuYW1lOiBhCitISU5UOiAgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZXMgbXVzdCBi ZSBkaXN0aW5jdCBmcm9tIG9uZSBhbm90aGVyCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo CisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xVTU5TICgKKwkJYiBpbnQsCisJCU5FU1RF RCBQQVRIICckJyBBUyBhCisJCUNPTFVNTlMgKAorCQkJYyBpbnQKKwkJKQogCSkKICkganQ7 CiBFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiBhCkBAIC0xMzUy LDEwICsxMzg5LDkgQEAgU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAogCWpzb25iICdbXScs ICckJwogCUNPTFVNTlMgKAogCQliIGludCwKLQkJTkVTVEVEIFBBVEggJyQnCisJCU5FU1RF RCBQQVRIICckJyBBUyBiCiAJCUNPTFVNTlMgKAotCQkJYyBpbnQsCi0JCQliIHRleHQKKwkJ CWMgaW50CiAJCSkKIAkpCiApIGp0OwpAQCAtMTM2NCwyMiArMTQwMCwyMDkgQEAgSElOVDog IEpTT05fVEFCTEUgY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QgZnJvbSBvbmUgYW5v dGhlcgogU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAogCWpzb25iICdbXScsICckJwogCUNP TFVNTlMgKAotCQlORVNURUQgUEFUSCAnJCcKKwkJTkVTVEVEIFBBVEggJyQnIEFTIGEKIAkJ Q09MVU1OUyAoCiAJCQliIGludAogCQkpLAogCQlORVNURUQgUEFUSCAnJCcKIAkJQ09MVU1O UyAoCi0JCQlORVNURUQgUEFUSCAnJCcKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBhCiAJCQlD T0xVTU5TICgKLQkJCQljIGludCwKLQkJCQliIHRleHQKKwkJCQljIGludAogCQkJKQogCQkp CiAJKQogKSBqdDsKLUVSUk9SOiAgZHVwbGljYXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6 IGIKK0VSUk9SOiAgZHVwbGljYXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6IGEKIEhJTlQ6 ICBKU09OX1RBQkxFIGNvbHVtbiBuYW1lcyBtdXN0IGJlIGRpc3RpbmN0IGZyb20gb25lIGFu b3RoZXIKKy0tIEpTT05fVEFCTEU6IHBsYW4gdmFsaWRhdGlvbgorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIg Q09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkK KwkJKQorCSkKKwlQTEFOIChwMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJM RSBwbGFuCitMSU5FIDEyOiAgUExBTiAocDEpCisgICAgICAgICAgICAgICAgXgorREVUQUlM OiAgcGF0aCBuYW1lIG1pc21hdGNoOiBleHBlY3RlZCBwMCBidXQgcDEgaXMgZ2l2ZW4KK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAor CUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNU RUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFU SCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5T ICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDApCispIGp0OworRVJST1I6ICBpbnZh bGlkIEpTT05fVEFCTEUgcGxhbgorTElORSA0OiAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBD T0xVTU5TICgKKyAgICAgICAgICBeCitERVRBSUw6ICBwbGFuIG5vZGUgZm9yIG5lc3RlZCBw YXRoIHAxIHdhcyBub3QgZm91bmQgaW4gcGxhbgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxF KAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09M VU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAo IGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkK KwlQTEFOIChwMCBPVVRFUiBwMykKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJM RSBwbGFuCitMSU5FIDQ6ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAg ICAgICAgIF4KK0RFVEFJTDogIHBsYW4gbm9kZSBmb3IgbmVzdGVkIHBhdGggcDEgd2FzIG5v dCBmb3VuZCBpbiBwbGFuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251 bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAx IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGlu dCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJ CSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRI ICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIFVO SU9OIHAxIFVOSU9OIHAxMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBw bGFuCitMSU5FIDEyOiAgUExBTiAocDAgVU5JT04gcDEgVU5JT04gcDExKQorICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIGV4cGVjdGVkIElOTkVSIG9yIE9VVEVSIEpTT05fVEFCTEUg cGxhbiBub2RlCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAn JFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVN TlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChw MSBDUk9TUyBwMTMpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4K K0xJTkUgODogICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAg XgorREVUQUlMOiAgcGxhbiBub2RlIGZvciBuZXN0ZWQgcGF0aCBwMiB3YXMgbm90IGZvdW5k IGluIHBsYW4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICck WypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1O UyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKHAx IENST1NTIHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuCitM SU5FIDU6ICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwK KyAgICAgICAgICAgXgorREVUQUlMOiAgcGxhbiBub2RlIGZvciBuZXN0ZWQgcGF0aCBwMTEg d2FzIG5vdCBmb3VuZCBpbiBwbGFuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNv bmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQn IEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICgg Zm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGlu dCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4g KHAwIE9VVEVSICgocDEgVU5JT04gcDExKSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBp bnZhbGlkIEpTT05fVEFCTEUgcGxhbgorTElORSAxMjogIFBMQU4gKHAwIE9VVEVSICgocDEg VU5JT04gcDExKSBDUk9TUyBwMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVU QUlMOiAgcGxhbiBub2RlIGNvbnRhaW5zIHNvbWUgZXh0cmEgb3IgZHVwbGljYXRlIHNpYmxp bmcgbm9kZXMKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICck WypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1O UyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChw MSBJTk5FUiBwMTEpIENST1NTIHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9U QUJMRSBwbGFuCitMSU5FIDY6ICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAo IGJhciBpbnQgKQorICAgICAgICAgICBeCitERVRBSUw6ICBwbGFuIG5vZGUgZm9yIG5lc3Rl ZCBwYXRoIHAxMiB3YXMgbm90IGZvdW5kIGluIHBsYW4KK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNU RUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEx IENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVN TlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkK KwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NT IHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuCitMSU5FIDk6 ICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAg ICAgICBeCitERVRBSUw6ICBwbGFuIG5vZGUgZm9yIG5lc3RlZCBwYXRoIHAyMSB3YXMgbm90 IGZvdW5kIGluIHBsYW4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVs bCcsICdzdHJpY3QgJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQn IEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICgg Zm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGlu dCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4g KHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyAocDIgSU5ORVIg cDIxKSkpCispIGp0OworIGJhciB8IGZvbyB8IGJheiAKKy0tLS0tKy0tLS0tKy0tLS0tCiso MCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAn c3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5hbWUKKwlDT0xVTU5TICgKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBD T0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xV TU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJ Tk5FUiBwMjEpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIGV4cHJlc3Np b24KK0xJTkUgMjogIGpzb25iICdudWxsJywgJ3N0cmljdCAkWypdJyAtLSB3aXRob3V0IHJv b3QgcGF0aCBuYW1lCisgICAgICAgICBeCitERVRBSUw6ICBKU09OX1RBQkxFIGNvbHVtbnMg bXVzdCBjb250YWluIGV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYgZXhw bGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZAogLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRp b24KIENSRUFURSBURU1QIFRBQkxFIGpzb25iX3RhYmxlX3Rlc3QgKGpzIGpzb25iKTsKIElO U0VSVCBJTlRPIGpzb25iX3RhYmxlX3Rlc3QKQEAgLTEzOTcsMTIgKzE2MjAsMTIgQEAgc2Vs ZWN0CiBmcm9tCiAJanNvbmJfdGFibGVfdGVzdCBqdHQsCiAJanNvbl90YWJsZSAoCi0JCWp0 dC5qcywnc3RyaWN0ICRbKl0nCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29s dW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAogCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScg ZGVmYXVsdCAtMSBvbiBlbXB0eSwKLQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBj b2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKLQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5j WypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyAp CiAJCSkKIAkpIGp0OwogIG4gfCBhICB8IGIgfCBjICAKQEAgLTE0MjYsMTIgKzE2NDksMTIg QEAgc2VsZWN0CiBmcm9tCiAJanNvbmJfdGFibGVfdGVzdCBqdHQsCiAJanNvbl90YWJsZSAo Ci0JCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAK IAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAogCQkJYSBpbnQgcGF0aCAnbGF4 ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKLQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5i WypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKLQkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkJbmVzdGVkIHBhdGgg J3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRo ICckJyApCiAJCSkKIAkJcGxhbiBkZWZhdWx0IChvdXRlciwgdW5pb24pCiAJKSBqdDsKQEAg LTE0NTAsMTggKzE2NzMsNzggQEAgZnJvbQogIDQgfCAtMSB8IDIgfCAgIAogKDExIHJvd3Mp CiAKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBjKSkKK3NlbGVjdAor CWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGlu YWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBw YXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVt bnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgdW5pb24g cGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAx IHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAyIHwgICAKKyAy IHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAyIHwgIDIgfCAgIHwgICAKKyAy IHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwgIDMgfCAyIHwgICAKKyA0 IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMSByb3dzKQorCistLSBzcGVj aWZpYyBwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikpCitzZWxlY3QKKwlqdC4qCitmcm9t CisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3Ry aWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJ YSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQg cGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKKwkpIGp0 OworIG4gfCBhICB8IGMgIHwgYiAKKy0tLSstLS0tKy0tLS0rLS0tCisgMSB8ICAxIHwgICAg fCAgCisgMiB8ICAyIHwgMTAgfCAgCisgMiB8ICAyIHwgICAgfCAgCisgMiB8ICAyIHwgMjAg fCAgCisgMiB8ICAyIHwgICAgfCAxCisgMiB8ICAyIHwgICAgfCAyCisgMiB8ICAyIHwgICAg fCAzCisgMyB8ICAzIHwgICAgfCAxCisgMyB8ICAzIHwgICAgfCAyCisgNCB8IC0xIHwgICAg fCAxCisgNCB8IC0xIHwgICAgfCAyCisoMTEgcm93cykKKwogLS0gZGVmYXVsdCBwbGFuIChp bm5lciwgdW5pb24pCiBzZWxlY3QKIAlqdC4qCiBmcm9tCiAJanNvbmJfdGFibGVfdGVzdCBq dHQsCiAJanNvbl90YWJsZSAoCi0JCWp0dC5qcywnc3RyaWN0ICRbKl0nCisJCWp0dC5qcywn c3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAog CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKLQkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5iWypdJyBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKLQkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcg KQorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGlu dCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNv bHVtbnMgKCBjIGludCBwYXRoICckJyApCiAJCSkKIAkJcGxhbiBkZWZhdWx0IChpbm5lcikK IAkpIGp0OwpAQCAtMTQ3OSwxOCArMTc2Miw0NyBAQCBmcm9tCiAgNCB8IC0xIHwgMiB8ICAg CiAoMTAgcm93cykKIAorLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAocGIgdW5pb24gcGMp KQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25f dGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJ biBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEg b24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVy IChwYiB1bmlvbiBwYykpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSst LS0rLS0tLQorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8 IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8 ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8 IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDEwIHJvd3MpCisKIC0tIGRlZmF1bHQgcGxh biAoaW5uZXIsIGNyb3NzKQogc2VsZWN0CiAJanQuKgogZnJvbQogCWpzb25iX3RhYmxlX3Rl c3QganR0LAogCWpzb25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQlqdHQu anMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0 eSwKIAkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCi0JCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICks Ci0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50IHBhdGgg JyQnICkKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgg YiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBw YyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVmYXVsdCAoY3Jv c3MsIGlubmVyKQogCSkganQ7CkBAIC0xNTA3LDE4ICsxODE5LDQ2IEBAIGZyb20KICAyIHwg MiB8IDMgfCAyMAogKDkgcm93cykKIAorLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAocGIg Y3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVt bnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRl ZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMg cGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFu IChwIGlubmVyIChwYiBjcm9zcyBwYykpCisJKSBqdDsKKyBuIHwgYSB8IGIgfCBjICAKKy0t LSstLS0rLS0tKy0tLS0KKyAyIHwgMiB8IDEgfCAxMAorIDIgfCAyIHwgMSB8ICAgCisgMiB8 IDIgfCAxIHwgMjAKKyAyIHwgMiB8IDIgfCAxMAorIDIgfCAyIHwgMiB8ICAgCisgMiB8IDIg fCAyIHwgMjAKKyAyIHwgMiB8IDMgfCAxMAorIDIgfCAyIHwgMyB8ICAgCisgMiB8IDIgfCAz IHwgMjAKKyg5IHJvd3MpCisKIC0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQogc2Vs ZWN0CiAJanQuKgogZnJvbQogCWpzb25iX3RhYmxlX3Rlc3QganR0LAogCWpzb25fdGFibGUg KAotCQlqdHQuanMsJ3N0cmljdCAkWypdJworCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBw CiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKIAkJCWEgaW50IHBhdGggJ2xh eCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu YlsqXScgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCi0JCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuY1sqXScgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0 aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVmYXVsdCAob3V0ZXIsIGNyb3NzKQogCSkganQ7CkBA IC0xNTM4LDYgKzE4NzgsOTAgQEAgZnJvbQogIDQgfCAtMSB8ICAgfCAgIAogKDEyIHJvd3Mp CiAKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKK3NlbGVjdAor CWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGlu YWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBw YXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVt bnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgY3Jvc3Mg cGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAx IHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAKKyAy IHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAKKyAy IHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAzIHwgICAKKyAy IHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAKKyA0IHwgLTEgfCAgIHwgICAKKygx MiByb3dzKQorCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBhcyBiCitmcm9tCisJanNvbl90 YWJsZSAoanNvbmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBbWzEsIDEwXSwgWzJdLCBb MywgMzAsIDMwMF1dLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEiOiAgMiwgICJiIjog WzEwLCAyMF0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwgImIiOiBbMTEs IDIyLCAzMywgNDRdfQorCQkgXScsCisJCSckWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJ biBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEg b24gZXJyb3IsCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoCisJCQkJYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJFsqXScgYXMgcGIxIGNvbHVtbnMgKAorCQkJCQliMSBpbnQgcGF0aCAnJCcK KwkJCQkpCisJCQkpLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNv bHVtbnMgKAorCQkJCWMgdGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJCQluZXN0ZWQg cGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBjMSBjb2x1bW5zICgKKwkJCQkJYzEgaW50IHBhdGgg JyQnCisJCQkJKQorCQkJKQorCQkpCisJCS0tcGxhbiBkZWZhdWx0KG91dGVyLCBjcm9zcykK KwkJcGxhbihwIG91dGVyICgocGIgaW5uZXIgcGIxKSBjcm9zcyAocGMgb3V0ZXIgcGMxKSkp CisJKSBqdDsKKyBuIHwgYSB8ICAgICAgYiAgICAgICB8IGIxICB8ICBjICAgfCBjMSB8ICBi ICAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0rLS0tLS0KKyAx IHwgMSB8IFsxLCAxMF0gICAgICB8ICAgMSB8IDEgICAgfCAgICB8IDEwMQorIDEgfCAxIHwg WzEsIDEwXSAgICAgIHwgICAxIHwgbnVsbCB8ICAgIHwgMTAxCisgMSB8IDEgfCBbMSwgMTBd ICAgICAgfCAgIDEgfCAyICAgIHwgICAgfCAxMDEKKyAxIHwgMSB8IFsxLCAxMF0gICAgICB8 ICAxMCB8IDEgICAgfCAgICB8IDExMAorIDEgfCAxIHwgWzEsIDEwXSAgICAgIHwgIDEwIHwg bnVsbCB8ICAgIHwgMTEwCisgMSB8IDEgfCBbMSwgMTBdICAgICAgfCAgMTAgfCAyICAgIHwg ICAgfCAxMTAKKyAxIHwgMSB8IFsyXSAgICAgICAgICB8ICAgMiB8IDEgICAgfCAgICB8IDEw MgorIDEgfCAxIHwgWzJdICAgICAgICAgIHwgICAyIHwgbnVsbCB8ICAgIHwgMTAyCisgMSB8 IDEgfCBbMl0gICAgICAgICAgfCAgIDIgfCAyICAgIHwgICAgfCAxMDIKKyAxIHwgMSB8IFsz LCAzMCwgMzAwXSB8ICAgMyB8IDEgICAgfCAgICB8IDEwMworIDEgfCAxIHwgWzMsIDMwLCAz MDBdIHwgICAzIHwgbnVsbCB8ICAgIHwgMTAzCisgMSB8IDEgfCBbMywgMzAsIDMwMF0gfCAg IDMgfCAyICAgIHwgICAgfCAxMDMKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8ICAzMCB8IDEg ICAgfCAgICB8IDEzMAorIDEgfCAxIHwgWzMsIDMwLCAzMDBdIHwgIDMwIHwgbnVsbCB8ICAg IHwgMTMwCisgMSB8IDEgfCBbMywgMzAsIDMwMF0gfCAgMzAgfCAyICAgIHwgICAgfCAxMzAK KyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8IDMwMCB8IDEgICAgfCAgICB8IDQwMAorIDEgfCAx IHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgbnVsbCB8ICAgIHwgNDAwCisgMSB8IDEgfCBbMywg MzAsIDMwMF0gfCAzMDAgfCAyICAgIHwgICAgfCA0MDAKKyAyIHwgMiB8ICAgICAgICAgICAg ICB8ICAgICB8ICAgICAgfCAgICB8ICAgIAorIDMgfCAgIHwgICAgICAgICAgICAgIHwgICAg IHwgICAgICB8ICAgIHwgICAgCisoMjAgcm93cykKKwogLS0gU2hvdWxkIHN1Y2NlZWQgKEpT T04gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQogU0VM RUNUICoKIEZST00KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3Nx bGpzb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwKaW5k ZXggOWFkMTA0NzQ4NS4uOTMwZDg2YzkwZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvanNvbmJfc3FsanNvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNv bmJfc3FsanNvbi5zcWwKQEAgLTQxNCwxOCArNDE0LDE4IEBAIFNFTEVDVCAqIEZST00KIAkJ CXRhIHRleHRbXSBQQVRIICckJywKIAkJCWpiYSBqc29uYltdIFBBVEggJyQnLAogCi0JCQlO RVNURUQgUEFUSCAnJFsxXScgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJFsxXScgQVMg cDEgQ09MVU1OUyAoCiAJCQkJYTEgaW50LAotCQkJCU5FU1RFRCBQQVRIICckWypdJyBDT0xV TU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVNTlMgKAogCQkJ CQlhMTEgdGV4dAogCQkJCSksCiAJCQkJYjEgdGV4dAogCQkJKSwKLQkJCU5FU1RFRCBQQVRI ICckWzJdJyBDT0xVTU5TICgKLQkJCQlORVNURUQgUEFUSCAnJFsqXScgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoCisJCQkJTkVTVEVEIFBBVEgg JyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TICgKIAkJCQkJYTIxIHRleHQKIAkJCQkpLAotCQkJ CU5FU1RFRCBQQVRIICckWypdJyBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScg QVMgcDIyIENPTFVNTlMgKAogCQkJCQlhMjIgdGV4dAogCQkJCSkKIAkJCSkKQEAgLTQ3OCwx MyArNDc4LDQyIEBAIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQn IENPTFVNTlMgKGEganNvbmIgRVhJU1RTIFBBVEggJyQuYScpKTsKIAogLS0gSlNPTl9UQUJM RTogbmVzdGVkIHBhdGhzIGFuZCBwbGFucwogCistLSBTaG91bGQgZmFpbCAoSlNPTl9UQUJM RSBjb2x1bW5zIG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRoCistLSBzcGVjaWZpY2F0 aW9ucyBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkKQorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJl ZCBoZXJlCisJQ09MVU1OUyAoCisJCWZvbyBpbnQgUEFUSCAnJCcKKwkpCisJUExBTiBERUZB VUxUIChVTklPTikKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnW10nLCAnJCcgQVMgcGF0aDEKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIENP TFVNTlMgKCAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJlCisJCQlmb28gaW50IFBB VEggJyQnCisJCSkKKwkpCisJUExBTiBERUZBVUxUIChVTklPTikKKykganQ7CisKIC0tIFNo b3VsZCBmYWlsIChjb2x1bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5jdCkKIFNFTEVDVCAqIEZS T00gSlNPTl9UQUJMRSgKLQlqc29uYiAnW10nLCAnJCcKKwlqc29uYiAnW10nLCAnJCcgQVMg YQorCUNPTFVNTlMgKAorCQlhIGludAorCSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgQVMgYQogCUNPTFVNTlMgKAotCQlhIGludCwK LQkJYiB0ZXh0LAotCQlhIGpzb25iCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcgQVMg YQorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkKIAkpCiApIGp0OwogCkBAIC00OTIsMTAg KzUyMSw5IEBAIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKIAlqc29uYiAnW10nLCAnJCcK IAlDT0xVTU5TICgKIAkJYiBpbnQsCi0JCU5FU1RFRCBQQVRIICckJworCQlORVNURUQgUEFU SCAnJCcgQVMgYgogCQlDT0xVTU5TICgKLQkJCWMgaW50LAotCQkJYiB0ZXh0CisJCQljIGlu dAogCQkpCiAJKQogKSBqdDsKQEAgLTUwMywyMSArNTMxLDE3NiBAQCBTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoCiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCiAJanNvbmIgJ1tdJywg JyQnCiAJQ09MVU1OUyAoCi0JCU5FU1RFRCBQQVRIICckJworCQlORVNURUQgUEFUSCAnJCcg QVMgYQogCQlDT0xVTU5TICgKIAkJCWIgaW50CiAJCSksCiAJCU5FU1RFRCBQQVRIICckJwog CQlDT0xVTU5TICgKLQkJCU5FU1RFRCBQQVRIICckJworCQkJTkVTVEVEIFBBVEggJyQnIEFT IGEKIAkJCUNPTFVNTlMgKAotCQkJCWMgaW50LAotCQkJCWIgdGV4dAorCQkJCWMgaW50CiAJ CQkpCiAJCSkKIAkpCiApIGp0OwogCistLSBKU09OX1RBQkxFOiBwbGFuIHZhbGlkYXRpb24K KworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFT IHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJ CU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQg UEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENP TFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMSkKKykganQ7CisKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNP TFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQn IEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICgg YmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDApCispIGp0OworCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAx MiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQg KQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIHAzKQorKSBqdDsKKworU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAo CisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50 ICkKKwkJKQorCSkKKwlQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEpCispIGp0OworCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAK KwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRI ICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1O UyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMTMp KQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywg JyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xV TU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAor CQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAo cDEgQ1JPU1MgcDIpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpz b25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICck JyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAo IGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNU RUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFO IChwMCBPVVRFUiAoKHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKKworU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcg QVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBi YXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIHAxMSkgQ1JP U1MgcDIpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdu dWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBp bnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor CQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFU SCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBP VVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgcDIpKQorKSBqdDsKKwor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJ3N0cmljdCAkWypd JyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAo CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlO RVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVT VEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAy MSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJ Tk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKSkKKykganQ7CisK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsq XScgLS0gd2l0aG91dCByb290IHBhdGggbmFtZQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVN TlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBi YXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJ TkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJ UExBTiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVSIHAyMSkp CispIGp0OworCiAtLSBKU09OX1RBQkxFOiBwbGFuIGV4ZWN1dGlvbgogCiBDUkVBVEUgVEVN UCBUQUJMRSBqc29uYl90YWJsZV90ZXN0IChqcyBqc29uYik7CkBAIC01MzgsMTIgKzcyMSwx MiBAQCBzZWxlY3QKIGZyb20KIAlqc29uYl90YWJsZV90ZXN0IGp0dCwKIAlqc29uX3RhYmxl ICgKLQkJanR0LmpzLCdzdHJpY3QgJFsqXScKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMg cAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCiAJCQlhIGludCBwYXRoICds YXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAotCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAk LmJbKl0nIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAotCQkJbmVzdGVkIHBhdGggJ3N0 cmljdCAkLmNbKl0nIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBh dGggJyQnICkKIAkJKQogCSkganQ7CiAKQEAgLTU1Myw2NCArNzM2LDE3NCBAQCBzZWxlY3QK IGZyb20KIAlqc29uYl90YWJsZV90ZXN0IGp0dCwKIAlqc29uX3RhYmxlICgKLQkJanR0Lmpz LCdzdHJpY3QgJFsqXScKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5z ICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCiAJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAotCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGNvbHVt bnMgKCBiIGludCBwYXRoICckJyApLAotCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu YlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJ KQogCQlwbGFuIGRlZmF1bHQgKG91dGVyLCB1bmlvbikKIAkpIGp0OwogCistLSBzcGVjaWZp YyBwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJ anNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0 ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBp bnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0 aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBjKSkKKwkpIGp0Owor CistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikpCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0 dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFs aXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0 aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5z ICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBi KSkKKwkpIGp0OworCiAtLSBkZWZhdWx0IHBsYW4gKGlubmVyLCB1bmlvbikKIHNlbGVjdAog CWp0LioKIGZyb20KIAlqc29uYl90YWJsZV90ZXN0IGp0dCwKIAlqc29uX3RhYmxlICgKLQkJ anR0LmpzLCdzdHJpY3QgJFsqXScKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQlj b2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCiAJCQlhIGludCBwYXRoICdsYXggJC5h JyBkZWZhdWx0IC0xIG9uIGVtcHR5LAotCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0n IGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAotCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAk LmNbKl0nIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQn ICkKIAkJKQogCQlwbGFuIGRlZmF1bHQgKGlubmVyKQogCSkganQ7CiAKKy0tIHNwZWNpZmlj IHBsYW4gKHAgaW5uZXIgKHBiIHVuaW9uIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlq c29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3Qg JFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGlu dCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGgg J3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRo ICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAocGIgdW5pb24gcGMpKQorCSkganQ7CisK IC0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQogc2VsZWN0CiAJanQuKgogZnJvbQog CWpzb25iX3RhYmxlX3Rlc3QganR0LAogCWpzb25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmlj dCAkWypdJworCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJ biBmb3Igb3JkaW5hbGl0eSwKIAkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEg b24gZW1wdHksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIg aW50IHBhdGggJyQnICksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1u cyAoIGMgaW50IHBhdGggJyQnICkKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBh cyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBs YW4gZGVmYXVsdCAoY3Jvc3MsIGlubmVyKQogCSkganQ7CiAKKy0tIHNwZWNpZmljIHBsYW4g KHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90 YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScg YXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRo ICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyAp CisJCSkKKwkJcGxhbiAocCBpbm5lciAocGIgY3Jvc3MgcGMpKQorCSkganQ7CisKIC0tIGRl ZmF1bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQogc2VsZWN0CiAJanQuKgogZnJvbQogCWpzb25i X3RhYmxlX3Rlc3QganR0LAogCWpzb25fdGFibGUgKAotCQlqdHQuanMsJ3N0cmljdCAkWypd JworCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Ig b3JkaW5hbGl0eSwKIAkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1w dHksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgY29sdW1ucyAoIGIgaW50IHBh dGggJyQnICksCi0JCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBj b2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5j WypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVm YXVsdCAob3V0ZXIsIGNyb3NzKQogCSkganQ7CiAKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0 ZXIgKHBiIGNyb3NzIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90 ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAor CQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXgg JC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJb Kl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGgg J3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkK KwkJcGxhbiAocCBvdXRlciAocGIgY3Jvc3MgcGMpKQorCSkganQ7CisKKworc2VsZWN0CisJ anQuKiwgYjEgKyAxMDAgYXMgYgorZnJvbQorCWpzb25fdGFibGUgKGpzb25iCisJCSdbCisJ CQl7ImEiOiAgMSwgICJiIjogW1sxLCAxMF0sIFsyXSwgWzMsIDMwLCAzMDBdXSwgImMiOiBb MSwgbnVsbCwgMl19LAorCQkJeyJhIjogIDIsICAiYiI6IFsxMCwgMjBdLCAiYyI6IFsxLCBu dWxsLCAyXX0sCisJCQl7IngiOiAiMyIsICJiIjogWzExLCAyMiwgMzMsIDQ0XX0KKwkJIF0n LAorCQknJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJ CQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKAorCQkJCWIgdGV4dCBmb3Jt YXQganNvbiBwYXRoICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBi MSBjb2x1bW5zICgKKwkJCQkJYjEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJKSwKKwkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICgKKwkJCQljIHRleHQg Zm9ybWF0IGpzb24gcGF0aCAnJCcsCisJCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkWypdJyBh cyBwYzEgY29sdW1ucyAoCisJCQkJCWMxIGludCBwYXRoICckJworCQkJCSkKKwkJCSkKKwkJ KQorCQktLXBsYW4gZGVmYXVsdChvdXRlciwgY3Jvc3MpCisJCXBsYW4ocCBvdXRlciAoKHBi IGlubmVyIHBiMSkgY3Jvc3MgKHBjIG91dGVyIHBjMSkpKQorCSkganQ7CiAKIC0tIFNob3Vs ZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHJvb3QgYW5kIG5lc3Rl ZCBwYXRocykKIFNFTEVDVCAqCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDY4 NTZlZWM4ZDAuLjNjNTAzZGI3MWEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBA IC0xMjQxLDcgKzEyNDEsOSBAQCBKc29uVGFibGVDb2x1bW5UeXBlCiBKc29uVGFibGVDb250 ZXh0CiBKc29uVGFibGVKb2luU3RhdGUKIEpzb25UYWJsZVBhcmVudE5vZGUKK0pzb25UYWJs ZVBsYW4KIEpzb25UYWJsZVBsYW5Kb2luVHlwZQorSnNvblRhYmxlUGxhblR5cGUKIEpzb25U YWJsZVNjYW5TdGF0ZQogSnNvblRhYmxlU2libGluZ05vZGUKIEpzb25Ub2tlblR5cGUKLS0g CjIuMjUuMQoK --------------UNwjJjMgF1laO8cZ5D0bETkV--