Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uQAgG-0064lY-5t for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Jun 2025 20:07:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uQAgE-005Azp-4w for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Jun 2025 20:07:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uQAgC-005AzV-OS for pgsql-hackers@lists.postgresql.org; Fri, 13 Jun 2025 20:07:14 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uQAfy-001q1r-2v for pgsql-hackers@lists.postgresql.org; Fri, 13 Jun 2025 20:07:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1749845216; bh=LiaTXOmrGjbFadz+9s+e9IIikLp1htP6B6t+zAmJv8Y=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=uN1ZJzojOG0P88au08ck9vy/xqH4PXFeFF9EacIsrhQlp+dqTPa/GoZQu1GlmCtNJ BIsGHevpLBhx5/qjPD2o9L0y47K3dcoiSZL0x5ZNuby9K+yuXjdPpeR9kuzvLVX3kw OeQFOB1f8RTGja1V0kJvPn0KW6zEjV1yWF681mg0bJvIJayEJ2m7bBY0Nz45dkzuX1 kV6BHtycOetfzLvolNhbxZwgx7fsUFMkxXOrJCVIjRvTiXlpaPDXI4kU6cs+UrI2BJ Owq15NQcGYkIn849lKKKr9ogR45RL4wofVuu8G2ShF+S8dXgirOjL/XpH6zBXpFrqI 16n18Q2V1e3Ig== Received: from [172.30.48.6] (unknown [93.174.131.138]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 5C0876029E; Fri, 13 Jun 2025 23:06:55 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------idA7oXwm00VbE6yDVktLrb2V" Message-ID: <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> Date: Fri, 13 Jun 2025 23:06:55 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <7fdaf3e8-4c05-4739-bee6-98acc068d1c7@postgrespro.ru> <4433b492-9e97-4334-96d9-ddaaa5083099@postgrespro.ru> <67ecf5fb-e63d-4284-be75-d0479eef81aa@postgrespro.ru> <884bcf9e-d6e3-4b0c-8dcb-7f2110070ac9@postgrespro.ru> <1e74c9fd-830e-4544-b0de-e49ea4b04029@postgrespro.ru> <9c1b75f1-5c40-4a86-9a61-a4b3f1d7ec60@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/06/13 19:22:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/06/13 19:04:00 #27562144 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------idA7oXwm00VbE6yDVktLrb2V Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! Additional changes (in attached patch): a. Added using pull_varattnos to check whether a CHECK constraint contains a reference to the tableoid column (only such CHECKs are recalculated). b. Added test for recomputation of stored generated columns. 1. >We can perform a preliminary check to determine whether dropping a >partition is allowed, and raise an error if it's not. To do it, I >invented a new function, performDeletionCheck to verify whether an >object can be safely dropped. Applied. I moved calls performDeletionCheck a bit earlier, right after detachPartitionTable. Is it ok? 2. >check_partitions_for_split does not exist in v43-0001. Fixed. >+ RenameRelationInternal(RelationGetRelid(sameNamePartition), >+ tmpRelName, false, false); >the third argument, is_internal should set to true? Ok. >a partitioned table can not have NO INHERIT check constraint, >you may see StoreRelCheck. >we can add an Assert: Assert(!ccnoinherit); Ok. >+ nnconstraints = >+ RelationGetNotNullConstraints(RelationGetRelid(modelRel), >+ false, true); >as mentioned in above, partitioned table cannot have NO INHERIT >constraint, maybe we should set RelationGetNotNullConstraints last >argument to false Ok. >The attached patch is a rewrite for >calculate_partition_bound_for_merge and callees. >please let me know whether this improves code readability I think these changes can be taken partially. MERGE PARTITIONS and SPLIT PARTITION commands use the same function check_two_partitions_bounds_range. For MERGE PARTITIONS we can pass Oids instead of RangeVars (first_name/second_name arguments). But for SPLIT PARTITION we cannot do this, because at this stage the new partitions have not yet been created (there are only their names). Different realizations of check_two_partitions_bounds_range functions for MERGE PARTITIONS and SPLIT PARTITION are not very good. I think it's better not change the check_two_partitions_bounds_range function. 3. >v43-0001 doesn't have the SPLIT PARTITION feature. >maybe we need to remove the argument (bool defaultPart) >from check_two_partitions_bounds_range, aslo remove the comments. >then we can add it on 0002 SPLIT PARTITION patch. Changed. 4. I don't know English very well, so it's difficult for me to correct the documentation. Thank you very much for the corrections! >would be better mentioning that the parent table and to be merged >partition will all take ACCESS EXCLUSIVE lock. Ok, updated. Other email notes fixed in patch >v44-0001-documentation-refactoring-based-on-v44.no-cfbot Patch applied. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------idA7oXwm00VbE6yDVktLrb2V Content-Type: text/plain; charset=UTF-8; name="v45-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v45-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NjIzMGRkNzA4MmRkNGZkYTk0MTljOTUzMDYyZmM2NWUwNWI1OTFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDUgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3Vt bWFyeSBpbmZvcm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVy IFdhbmcsIFJpY2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczog RnVqaWkgTWFzYW8sIEppYW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwg Um9iZXJ0IEhhYXMsIEp1c3RpbiBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6 IE1hc2FoaWtvIFNhd2FkYQpSZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGlu IFByeXpieSwgS3lvdGFybyBIb3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEwNCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgODg3ICsrKysrKysrKysr LQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAy MiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwg IDE0MyArKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAg IHwgIDE5OCArKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAg ICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCAgICAgICAgICAg ICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAg ICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuaCAgICAgICAgIHwgICAgNiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRp dGlvbi1tZXJnZS5vdXQgICAgfCAgMTk5ICsrKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNl L3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IHwgMTE5MyArKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCAgICAgIHwgIDc5 MiArKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMzY3MSBpbnNlcnRpb25zKCspLCAy OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJn ZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKaW5kZXggOTY5MzZiY2QzYS4uNjJjMmJiNTRlYSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAt NDQ0MCw2ICs0NDQwLDI1IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA2bTAyIEFE RCBVTklRVUUgKGNpdHlfaWQsIGxvZ2RhdGUpOwogQUxURVIgSU5ERVggbWVhc3VyZW1lbnRf Y2l0eV9pZF9sb2dkYXRlX2tleQogICAgIEFUVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRf eTIwMDZtMDJfY2l0eV9pZF9sb2dkYXRlX2tleTsKIC4uLgorPC9wcm9ncmFtbGlzdGluZz4K KyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlcmUgaXMgYWxzbyBhbiBvcHRp b24gZm9yIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucyBpbnRvCisgICAgIGEg c2luZ2xlIHBhcnRpdGlvbiB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFs dGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIE1F UkdFIFBBUlRJVElPTlM8L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJlIHNp bXBsaWZpZXMgdGhlIG1hbmFnZW1lbnQgb2YgcGFydGl0aW9uZWQgdGFibGVzIGJ5IGFsbG93 aW5nCisgICAgIHVzZXJzIHRvIGNvbWJpbmUgcGFydGl0aW9ucyB0aGF0IGFyZSBubyBsb25n ZXIgbmVlZGVkIGFzCisgICAgIHNlcGFyYXRlIGVudGl0aWVzLiAgSXQncyBpbXBvcnRhbnQg dG8gbm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIG5vdAorICAgICBzdXBwb3J0ZWQgZm9y IGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcyBhbgorICAgICA8bGl0ZXJh bD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBhY3Qg aGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3RpdmUg bmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbgorICAgICBtZXJnZSB0aHJlZSBtb250aGx5 IHBhcnRpdGlvbnMgaW50byBvbmUgcXVhcnRlciBwYXJ0aXRpb246Cis8cHJvZ3JhbWxpc3Rp bmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAorICAgIE1FUkdFIFBBUlRJVElPTlMgKG1l YXN1cmVtZW50X3kyMDA2bTAxLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50 X3kyMDA2bTAyLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAz KSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwv cGFyYT4KICAgIDwvc2VjdDM+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXgg ZDYzZjNhNjIxYS4uZTUwM2EwNjAyOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dt bApAQCAtMzcsNiArMzcsOSBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRBQ0gg UEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQog QUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbIENP TkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAgIE1F UkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pCisgICAgICAgIElOVE8g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ YWN0aW9uPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTQ3LDE0 ICsxMTUwLDEwMSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFs dGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0Ug UEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJh bD48L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBm b3JtIG1lcmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMgb2YgdGhlIHRhcmdldCB0YWJsZSBpbnRv IGEgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0IHRhYmxl IGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICBJZiA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFs PiBwYXJ0aXRpb24gaXMgbm90IGluIHRoZQorICAgICAgbGlzdCBvZiBwYXJ0aXRpb25zIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2Vh YmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIHJhbmdlLXBh cnRpdGlvbmVkIHRhYmxlcywgdGhlIHJhbmdlcyBvZiB0aGUgcGFydGl0aW9ucworICAgICAg ICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVw bGFjZWFibGU+LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgbXVzdCBiZSBh ZGphY2VudCBpbiBvcmRlciB0byBiZSBtZXJnZWQuIE90aGVyd2lzZSwgYW4gZXJyb3Igd2ls bCBiZQorICAgICAgICAgcmFpc2VkLiBUaGUgcmVzdWx0aW5nIGNvbWJpbmVkIHJhbmdlIHdp bGwgYmUgdGhlIG5ldyBwYXJ0aXRpb24gYm91bmQKKyAgICAgICAgIGZvciB0aGUgcGFydGl0 aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVw bGFjZWFibGU+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIGxpc3QtcGFydGl0 aW9uZWQgdGFibGVzLCB0aGUgcGFydGl0aW9uIGJvdW5kcyBvZgorICAgICAgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+ LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgYXJlIGNvbWJpbmVkIHRvIGZv cm0gdGhlIG5ldyBwYXJ0aXRpb24gYm91bmQgZm9yCisgICAgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAg ICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4K KyAgICAgIElmIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0 aGUgbGlzdCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgor ICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJh PgorICAgICAgICAgVGhlIHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgd2lsbCBiZSB0aGUg bmV3IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0 IHRhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiBib3Vu ZCBzcGVjaWZpY2F0aW9ucyBmb3IgYWxsIHBhcnRpdGlvbnMtCisgICAgICAgICA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4s CisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBjYW4gYmUgYXJiaXRyYXJ5Lgor ICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRs aXN0PgorICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4gT25seSBzaW1w bGUsCisgICAgICBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBjYW4gYmUgbWVyZ2VkLgor ICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMg aGF2ZSBkaWZmZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KKyAg ICAgIFRoZSBvd25lciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZSB0aGUgb3du ZXIgb2YgdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJlc3Bv bnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gdGhlCisgICAg ICBuZXcgcGFydGl0aW9uLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhl IGluZGV4ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3Zpbmcg dGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBFeHRlbmRl ZCBzdGF0aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBmb3Ig Y29uc2lzdGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJVElP TiBPRjwvY29tbWFuZD4uCisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVyaXQg dGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UKKyAgICAgIHR5cGUs IGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJlbnQgdGFibGUuCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdlZCwgYW55IGluZGl2 aWR1YWwgb2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhvc2UKKyAgICAgIHBhcnRpdGlvbnMsIHN1 Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxsIGJlIGRyb3BwZWQuIFRoaXMg b2NjdXJzCisgICAgICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJ VElPTlM8L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZiBhcyB0 aGUKKyAgICAgIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8L3Bh cmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBzb21l IG9iamVjdHMgZGVwZW5kZW50IG9uIHRoZW0sIHRoZSBjb21tYW5kIGNhbgorICAgICAgbm90 IGJlIGRvbmUgKDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlzIG5vdCB1c2VkLCBhbiBl cnJvciB3aWxsIGJlIHJldHVybmVkKS4KKyAgICAgPC9wYXJhPgorICAgICA8bm90ZT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE1lcmdpbmcgcGFydGl0aW9ucyBhY3F1aXJlcyBhIDxsaXRl cmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFy ZW50IHRhYmxlLCBpbiBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lW RTwvbGl0ZXJhbD4KKyAgICAgICBsb2NrcyBvbiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBh bmQgb24gdGhlIGRlZmF1bHQgcGFydGl0aW9uIChpZiBhbnkpLgorICAgICAgPC9wYXJhPgor ICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAg IDwvdmFyaWFibGVsaXN0PgogICA8L3BhcmE+CiAKICAgPHBhcmE+CiAgICBBbGwgdGhlIGZv cm1zIG9mIDxjb21tYW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiB0aGF0IGFjdCBvbiBhIHNp bmdsZSB0YWJsZSwKICAgIGV4Y2VwdCA8bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+LCA8bGl0 ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKLSAgIDxsaXRlcmFsPkFUVEFDSCBQQVJUSVRJ T048L2xpdGVyYWw+LCBhbmQKLSAgIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVy YWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9O PC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCisgICBh bmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJpbmVk IGludG8KICAgIGEgbGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVk IHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2 ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBjb2x1 bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwg d2l0aCBsYXJnZQpAQCAtMTM5Nyw3ICsxNDg3LDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+ LCBSRU0KICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAg ICAgIDxwYXJhPgotICAgICAgICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFz IGEgbmV3IHBhcnRpdGlvbiBvciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLgorICAgICAg ICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3IHBhcnRpdGlvbiBv ciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLAorICAgICAgICBvciB0aGUgbmFtZSBvZiB0 aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0 aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODMwLDYgKzE5MjEsMTMgQEAgQUxU RVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50 X3kyMDE1bTEyOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBU byBtZXJnZSBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byBvbmUgcGFydGl0aW9uIG9mIHRoZSB0 YXJnZXQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19saXN0 IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRy YWwpCisgICAgSU5UTyBzYWxlc19hbGw7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwog IDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j CmluZGV4IDE4MzE2YTM5NjguLjVhZmM0OTM4MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5k ZW5jeS5jCkBAIC0zMTksNiArMzE5LDU2IEBAIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QsCiAJdGFibGVfY2xvc2UoZGVwUmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKIH0KIAorLyoKKyAqIHBlcmZvcm1EZWxldGlvbkNoZWNrOiBDaGVjayB3aGV0aGVy IGEgc3BlY2lmaWMgb2JqZWN0IGNhbiBiZSBzYWZlbHkgZGVsZXRlZC4KKyAqIFRoaXMgZnVu Y3Rpb24gZG9lcyBub3QgcGVyZm9ybSBhbnkgZGVsZXRpb247IGluc3RlYWQsIGl0IHJhaXNl cyBhbiBlcnJvcgorICogaWYgdGhlIG9iamVjdCBjYW5ub3QgYmUgZGVsZXRlZCBkdWUgdG8g ZXhpc3RpbmcgZGVwZW5kZW5jaWVzLgorICoKKyAqIEl0IGNhbiBiZSB1c2VmdWwgd2hlbiB5 b3UgbmVlZCBkZWxldGUgc29tZSBvYmplY3RzIGxhdGVyLiAgU2VlIGNvbW1lbnRzIGluCisg KiBwZXJmb3JtRGVsZXRpb24gdG9vLgorICogVGhlIGJlaGF2aW9yIG11c3Qgc3BlY2lmaWVk IGFzIERST1BfUkVTVFJJQ1QuCisgKi8KK3ZvaWQKK3BlcmZvcm1EZWxldGlvbkNoZWNrKGNv bnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKKwkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlv ciwgaW50IGZsYWdzKQoreworCVJlbGF0aW9uCWRlcFJlbDsKKwlPYmplY3RBZGRyZXNzZXMg KnRhcmdldE9iamVjdHM7CisKKwlBc3NlcnQoYmVoYXZpb3IgPT0gRFJPUF9SRVNUUklDVCk7 CisKKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3QsIDApOworCisJLyoKKwkg KiBDb25zdHJ1Y3QgYSBsaXN0IG9mIG9iamVjdHMgd2Ugd2FudCBkZWxldGUgbGF0ZXIgKGll LCB0aGUgZ2l2ZW4gb2JqZWN0IHBsdXMKKwkgKiBldmVyeXRoaW5nIGRpcmVjdGx5IG9yIGlu ZGlyZWN0bHkgZGVwZW5kZW50IG9uIGl0KS4KKwkgKi8KKwl0YXJnZXRPYmplY3RzID0gbmV3 X29iamVjdF9hZGRyZXNzZXMoKTsKKworCWZpbmREZXBlbmRlbnRPYmplY3RzKG9iamVjdCwK KwkJCQkJCSBERVBGTEFHX09SSUdJTkFMLAorCQkJCQkJIGZsYWdzLAorCQkJCQkJIE5VTEws CS8qIGVtcHR5IHN0YWNrICovCisJCQkJCQkgdGFyZ2V0T2JqZWN0cywKKwkJCQkJCSBOVUxM LAkvKiBubyBwZW5kaW5nT2JqZWN0cyAqLworCQkJCQkJICZkZXBSZWwpOworCisJLyoKKwkg KiBDaGVjayBpZiBkZWxldGlvbiBpcyBhbGxvd2VkLgorCSAqLworCXJlcG9ydERlcGVuZGVu dE9iamVjdHModGFyZ2V0T2JqZWN0cywKKwkJCQkJCSAgIGJlaGF2aW9yLAorCQkJCQkJICAg ZmxhZ3MsCisJCQkJCQkgICBvYmplY3QpOworCisJLyogQW5kIGNsZWFuIHVwICovCisJZnJl ZV9vYmplY3RfYWRkcmVzc2VzKHRhcmdldE9iamVjdHMpOworCisJdGFibGVfY2xvc2UoZGVw UmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIHBlcmZvcm1NdWx0aXBsZURl bGV0aW9uczogU2ltaWxhciB0byBwZXJmb3JtRGVsZXRpb24sIGJ1dCBhY3Qgb24gbXVsdGlw bGUKICAqIG9iamVjdHMgYXQgb25jZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggZmJhZWQ1MzU5 YS4uNTcxYjZiMDU3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTEwNSw4ICsxMDUsNiBAQCBz dGF0aWMgdm9pZCBSZWxhdGlvblJlbW92ZUluaGVyaXRhbmNlKE9pZCByZWxpZCk7CiBzdGF0 aWMgT2lkCVN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUs IE5vZGUgKmV4cHIsCiAJCQkJCQkgIGJvb2wgaXNfZW5mb3JjZWQsIGJvb2wgaXNfdmFsaWRh dGVkLCBib29sIGlzX2xvY2FsLAogCQkJCQkJICBpbnQxNiBpbmhjb3VudCwgYm9vbCBpc19u b19pbmhlcml0LCBib29sIGlzX2ludGVybmFsKTsKLXN0YXRpYyB2b2lkIFN0b3JlQ29uc3Ry YWludHMoUmVsYXRpb24gcmVsLCBMaXN0ICpjb29rZWRfY29uc3RyYWludHMsCi0JCQkJCQkJ IGJvb2wgaXNfaW50ZXJuYWwpOwogc3RhdGljIGJvb2wgTWVyZ2VXaXRoRXhpc3RpbmdDb25z dHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAog CQkJCQkJCQkJCWJvb2wgYWxsb3dfbWVyZ2UsIGJvb2wgaXNfbG9jYWwsCiAJCQkJCQkJCQkJ Ym9vbCBpc19lbmZvcmNlZCwKQEAgLTIyOTYsNyArMjI5NCw3IEBAIFN0b3JlUmVsTm90TnVs bChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKm5ubmFtZSwgQXR0ck51bWJlciBhdHRudW0s CiAgKiBleHByZXNzaW9ucyBjYW4gYmUgYWRkZWQgbGF0ZXIsIGJ5IGRpcmVjdCBjYWxscyB0 byBTdG9yZUF0dHJEZWZhdWx0CiAgKiBhbmQgU3RvcmVSZWxDaGVjayAoc2VlIEFkZFJlbGF0 aW9uTmV3Q29uc3RyYWludHMoKSkuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBTdG9yZUNv bnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwgTGlzdCAqY29va2VkX2NvbnN0cmFpbnRzLCBib29s IGlzX2ludGVybmFsKQogewogCWludAkJCW51bWNoZWNrcyA9IDA7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfY29uc3RyYWludC5jCmluZGV4IDJkNWFjMWVhODEuLjFmOTQ4ODc2ZDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC04NzUsNyArODc1LDcgQEAgUmVs YXRpb25HZXROb3ROdWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwgYm9v bCBpbmNsdWRlX25vaW5oKQogCQkJCQkJCQkJCQkJCQkJIGZhbHNlKSkpOwogCQkJY29uc3Ry LT5pc19lbmZvcmNlZCA9IHRydWU7CiAJCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiA9ICFj b25Gb3JtLT5jb252YWxpZGF0ZWQ7Ci0JCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IHRy dWU7CisJCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IGNvbkZvcm0tPmNvbnZhbGlkYXRl ZDsKIAkJCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGNvbkZvcm0tPmNvbm5vaW5oZXJpdDsK IAkJCW5vdG51bGxzID0gbGFwcGVuZChub3RudWxscywgY29uc3RyKTsKIAkJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlYTk2OTQ3ZDgxLi43ZTc3MDNjNzk5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNzQwLDYgKzc0MCw4IEBAIHN0YXRpYyB2 b2lkIEFURGV0YWNoQ2hlY2tOb0ZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7 CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVDb21wcmVzc2lvbihPaWQgYXR0dHlwaWQsIGNv bnN0IGNoYXIgKmNvbXByZXNzaW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3Jh Z2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKK3N0YXRpYyB2 b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICoJCURlZmluZVJlbGF0aW9uCkBAIC00ODM0LDYgKzQ4MzYsMTAgQEAgQWx0ZXJUYWJsZUdl dExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlv bnM6CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVh azsKKwogCQkJZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1YnR5 cGUpOwpAQCAtNTI2OSw2ICs1Mjc1LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQtc3Bl Y2lmaWMgcHJlcCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVh azsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Npb25z KGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJLyogTm8g Y29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21k LT5zdWJ0eXBlKTsKQEAgLTU2NjUsNiArNTY3NiwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlv bkZpbmFsaXplOgogCQkJYWRkcmVzcyA9IEFURXhlY0RldGFjaFBhcnRpdGlvbkZpbmFsaXpl KHJlbCwgKChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYpLT5uYW1lKTsKIAkJCWJyZWFrOwor CQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1D bWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkg IGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3Nl cnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7 CisJCQlBVEV4ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlv bkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFs dGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTY3 MDUsNiArNjcyNCw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVU eXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFU X0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9O IC4uLiBGSU5BTElaRSI7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJu ICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVy biAiQUxURVIgQ09MVU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50 aXR5OgpAQCAtMjAxNjksNiArMjAxOTAsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50 VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAor LyoKKyAqIGF0dGFjaFBhcnRpdGlvblRhYmxlOiBhdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRv IHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRBQkxF IHdvcmsgcXVldWU7IGNhbiBiZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAorICog ICBvZiBhbiBBTFRFUiBUQUJMRSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQgcmVs YXRpb247CisgKiBhdHRhY2hyZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlvbjsK KyAqIGJvdW5kOiBib3VuZHMgb2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2 b2lkCithdHRhY2hQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWws IFJlbGF0aW9uIGF0dGFjaHJlbCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sKKwkv KiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9y bWVkIHRoZXJlICovCisJQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUp OworCisJLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRpdGlv bkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUgZXhp c3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLworCUF0 dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisK KwkvKiBhbmQgdHJpZ2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVs LCBhdHRhY2hyZWwpOworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50 cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFz ZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktleUNv bnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworfQorCiAvKgogICogQUxURVIg VEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1IgVkFM VUVTCiAgKgpAQCAtMjAzNzIsMjMgKzIwNDI0LDggQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY2hl Y2tfbmV3X3BhcnRpdGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hy ZWwpLCByZWwsCiAJCQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sgdG8g Y3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVy ZSAqLwotCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKLQotCS8q IFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3VuZChh dHRhY2hyZWwsIHJlbCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhpc3Rz IGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0dGFj aFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Ci0KLQkv KiBhbmQgdHJpZ2dlcnMgKi8KLQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBh dHRhY2hyZWwpOwotCi0JLyoKLQkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4g IENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAotCSAqIGZvciBwaGFzZSAz IGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgotCSAqLwotCUNsb25lRm9yZWlnbktleUNvbnN0 cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCS8qIEF0dGFjaCBhIG5ldyBwYXJ0 aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlvblRh YmxlKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkgKiBH ZW5lcmF0ZSBwYXJ0aXRpb24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQg c3BlY2lmaWNhdGlvbi4KQEAgLTIyMDM1LDMgKzIyMDcyLDgxOSBAQCBHZXRBdHRyaWJ1dGVT dG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAlyZXR1 cm4gY3N0b3JhZ2U7CiB9CisKKworLyoKKyAqIGJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0 YXRlczogYnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMKKyAq IGZvciBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKSBjaGVja3MgYW5kIGluaXRpYWxpemUg ZXhwcmVzc2lvbnMgZm9yCisgKiBnZW5lcmF0ZWQgY29sdW1ucy4gQWxsIGV4cHJlc3Npb25z IHNob3VsZCBiZSBjcmVhdGVkIGluICJ0YWIiCisgKiAoQWx0ZXJlZFRhYmxlSW5mbyBzdHJ1 Y3R1cmUpLgorICovCitzdGF0aWMgdm9pZAorYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3Rh dGVzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gbmV3UGFydFJlbCwgRVN0YXRl ICplc3RhdGUpCit7CisJLyogQnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlv biBzdGF0ZXMuICovCisJZm9yZWFjaF9wdHIoTmV3Q29uc3RyYWludCwgY29uLCB0YWItPmNv bnN0cmFpbnRzKQorCXsKKwkJc3dpdGNoIChjb24tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2Ug Q09OU1RSX0NIRUNLOgorCQkJCWNvbi0+cXVhbHN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChF eHByICopIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKGNvbi0+cXVhbCwgbmV3 UGFydFJlbCwgMSksIGVzdGF0ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUl9GT1JF SUdOOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZS4gKi8KKwkJCQlicmVhazsKKwkJCWNh c2UgQ09OU1RSX05PVE5VTEw6CisJCQkJLyogTm90aGluZyB0byBkbyBoZXJlLiAqLworCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNv bnN0cmFpbnQgdHlwZTogJWQiLAorCQkJCQkgKGludCkgY29uLT5jb250eXBlKTsKKwkJfQor CX0KKworCWZvcmVhY2hfcHRyKE5ld0NvbHVtblZhbHVlLCBleCwgdGFiLT5uZXd2YWxzKQor CXsKKwkJLyogRXhwcmVzc2lvbiBhbHJlYWR5IHBsYW5uZWQuICovCisJCWV4LT5leHByc3Rh dGUgPSBFeGVjSW5pdEV4cHIoKEV4cHIgKikgZXgtPmV4cHIsIE5VTEwpOworCX0KK30KKwor LyoKKyAqIGV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRz OiBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkCisgKiBleHByZXNzaW9ucyBmb3IgInRhYiIgKEFs dGVyZWRUYWJsZUluZm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1dHMgY29tZSBmcm9tCisgKiB0 aGUgbmV3IHR1cGxlIChpbnNlcnRzbG90KSBvZiBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVs KS4KKyAqLworc3RhdGljIHZvaWQKK2V2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRD aGVja0NvbnN0cmFpbnRzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJCQkJCQkJCVJl bGF0aW9uIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0 c2xvdCwKKwkJCQkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwllY29udGV4 dC0+ZWN4dF9zY2FudHVwbGUgPSBpbnNlcnRzbG90OworCisJZm9yZWFjaF9wdHIoTmV3Q29s dW1uVmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJeworCQlpZiAoIWV4LT5pc19nZW5lcmF0 ZWQpCisJCQljb250aW51ZTsKKworCQlpbnNlcnRzbG90LT50dHNfdmFsdWVzW2V4LT5hdHRu dW0gLSAxXQorCQkJPSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJzdGF0ZSwKKwkJCQkJCQllY29u dGV4dCwKKwkJCQkJCQkmaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbFtleC0+YXR0bnVtIC0gMV0p OworCX0KKworCWZvcmVhY2hfcHRyKE5ld0NvbnN0cmFpbnQsIGNvbiwgdGFiLT5jb25zdHJh aW50cykKKwl7CisJCXN3aXRjaCAoY29uLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNU Ul9DSEVDSzoKKwkJCQlpZiAoIUV4ZWNDaGVjayhjb24tPnF1YWxzdGF0ZSwgZWNvbnRleHQp KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19W SU9MQVRJT04pLAorCQkJCQkJCWVycm1zZygiY2hlY2sgY29uc3RyYWludCBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93IiwKKwkJCQkJCQkJICAg Y29uLT5uYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShuZXdQYXJ0UmVsKSksCisJCQkJ CQkJZXJydGFibGVjb25zdHJhaW50KG5ld1BhcnRSZWwsIGNvbi0+bmFtZSkpOworCQkJCWJy ZWFrOworCQkJY2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCWNhc2UgQ09OU1RSX0ZPUkVJR046 CisJCQkJLyogTm90aGluZyB0byBkbyBoZXJlICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0 OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlZCIs CisJCQkJCSAoaW50KSBjb24tPmNvbnR5cGUpOworCQl9CisJfQorfQorCisvKgorICogZ2V0 QXR0cmlidXRlc0xpc3Q6IHJldHVybiBsaXN0IG9mIGNvbHVtbnMgKENvbHVtbkRlZikgbGlr ZSBtb2RlbCB0YWJsZQorICogKG1vZGVsUmVsKQorICovCitzdGF0aWMgTGlzdCAqCitnZXRB dHRyaWJ1dGVzTGlzdChSZWxhdGlvbiBtb2RlbFJlbCkKK3sKKwlBdHRyTnVtYmVyCXBhcmVu dF9hdHRubzsKKwlUdXBsZURlc2MJbW9kZWxEZXNjOworCUxpc3QJICAgKmNvbExpc3QgPSBO SUw7CisKKwltb2RlbERlc2MgPSBSZWxhdGlvbkdldERlc2NyKG1vZGVsUmVsKTsKKworCWZv ciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IG1vZGVsRGVzYy0+bmF0dHM7 CisJCSBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0 ZSA9IFR1cGxlRGVzY0F0dHIobW9kZWxEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRu byAtIDEpOworCQlDb2x1bW5EZWYgICpkZWY7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29s dW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQp CisJCQljb250aW51ZTsKKworCQlkZWYgPSBtYWtlQ29sdW1uRGVmKE5hbWVTdHIoYXR0cmli dXRlLT5hdHRuYW1lKSwgYXR0cmlidXRlLT5hdHR0eXBpZCwKKwkJCQkJCQlhdHRyaWJ1dGUt PmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xsYXRpb24pOworCisJCWRlZi0+aXNfbm90 X251bGwgPSBhdHRyaWJ1dGUtPmF0dG5vdG51bGw7CisKKwkJLyogQ29weSBpZGVudGl0eSBm b3IgbmV3IHBhcnRpdGlvbi4gKi8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0 aWRlbnRpdHk7CisKKwkJLyogQWRkIHRvIGNvbHVtbiBsaXN0ICovCisJCWNvbExpc3QgPSBs YXBwZW5kKGNvbExpc3QsIGRlZik7CisKKwkJLyoKKwkJICogQWx0aG91Z2ggd2UgZG9uJ3Qg dHJhbnNmZXIgdGhlIGNvbHVtbidzIGRlZmF1bHQvZ2VuZXJhdGlvbgorCQkgKiBleHByZXNz aW9uIG5vdywgd2UgbmVlZCB0byBtYXJrIGl0IEdFTkVSQVRFRCBpZiBhcHByb3ByaWF0ZS4K KwkJICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGhhc2RlZiAmJiBhdHRyaWJ1dGUtPmF0dGdl bmVyYXRlZCkKKwkJCWRlZi0+Z2VuZXJhdGVkID0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7 CisKKwkJZGVmLT5zdG9yYWdlID0gYXR0cmlidXRlLT5hdHRzdG9yYWdlOworCisJCS8qIExp a2V3aXNlLCBjb3B5IGNvbXByZXNzaW9uIGlmIHJlcXVlc3RlZCAqLworCQlpZiAoQ29tcHJl c3Npb25NZXRob2RJc1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQorCQkJZGVm LT5jb21wcmVzc2lvbiA9CisJCQkJcHN0cmR1cChHZXRDb21wcmVzc2lvbk1ldGhvZE5hbWUo YXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpOworCQllbHNlCisJCQlkZWYtPmNvbXByZXNz aW9uID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gY29sTGlzdDsKK30KKworCisvKgorICogY3Jl YXRlVGFibGVDb25zdHJhaW50czogY3JlYXRlIGNvbnN0cmFpbnRzLCBkZWZhdWx0IHZhbHVl cyBhbmQgZ2VuZXJhdGVkCisgKiB2YWx1ZXMgKHByb3RvdHlwZSBpcyBmdW5jdGlvbiBleHBh bmRUYWJsZUxpa2VDbGF1c2UpLgorICogdGFiIGlzIHBlbmRpbmctd29yayBxdWV1ZSBmb3Ig bmV3UmVsLCB3ZSBtYXkgbmVlZCBpdCBpbiBtb3ZlTWVyZ2VkVGFibGVzUm93cy4KKyAqLwor c3RhdGljIHZvaWQKK2NyZWF0ZVRhYmxlQ29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkgICBSZWxhdGlvbiBtb2RlbFJlbCwgUmVsYXRp b24gbmV3UmVsKQoreworCVR1cGxlRGVzYwl0dXBsZURlc2M7CisJVHVwbGVDb25zdHIgKmNv bnN0cjsKKwlBdHRyTWFwICAgICphdHRtYXA7CisJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87 CisJaW50CQkJY2NudW07CisJTGlzdAkgICAqY29va2VkQ29uc3RyYWludHMgPSBOSUw7CisK Kwl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKG1vZGVsUmVsKTsKKwljb25zdHIgPSB0 dXBsZURlc2MtPmNvbnN0cjsKKworCWlmICghY29uc3RyKQorCQlyZXR1cm47CisKKwkvKgor CSAqIENvbnN0cnVjdCBhIG1hcCBmcm9tIHRoZSBMSUtFIHJlbGF0aW9uJ3MgYXR0bm9zIHRv IHRoZSBjaGlsZCByZWwncy4KKwkgKiBUaGlzIHJlLWNoZWNrcyB0eXBlIG1hdGNoIGV0Yywg YWx0aG91Z2ggaXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvCisJICogaGF2ZSBhIGZhaWx1 cmUgc2luY2UgYm90aCB0YWJsZXMgYXJlIGxvY2tlZC4KKwkgKi8KKwlhdHRtYXAgPSBidWls ZF9hdHRybWFwX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihuZXdSZWwpLAorCQkJCQkJCQkg ICB0dXBsZURlc2MsCisJCQkJCQkJCSAgIGZhbHNlKTsKKworCS8qIEN5Y2xlIGZvciBkZWZh dWx0IHZhbHVlcy4gKi8KKwlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8 PSB0dXBsZURlc2MtPm5hdHRzOyBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0 cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAorCQkJCQkJCQkJ CQkJCXBhcmVudF9hdHRubyAtIDEpOworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMg aW4gdGhlIHBhcmVudC4gKi8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVkKQorCQkJ Y29udGludWU7CisKKwkJLyogQ29weSBkZWZhdWx0LCBpZiBwcmVzZW50IGFuZCBpdCBzaG91 bGQgYmUgY29waWVkLiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRoYXNkZWYpCisJCXsKKwkJ CU5vZGUJICAgKnRoaXNfZGVmYXVsdCA9IE5VTEw7CisJCQlib29sCQlmb3VuZF93aG9sZV9y b3c7CisJCQlBdHRyTnVtYmVyCW51bTsKKwkJCU5vZGUJICAgKmRlZjsKKwkJCU5ld0NvbHVt blZhbHVlICpuZXd2YWw7CisKKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCA9PSBB VFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJdGhpc19kZWZhdWx0ID0gYnVpbGRf Z2VuZXJhdGlvbl9leHByZXNzaW9uKG1vZGVsUmVsLCBhdHRyaWJ1dGUtPmF0dG51bSk7CisJ CQllbHNlCisJCQl7CisJCQkJdGhpc19kZWZhdWx0ID0gVHVwbGVEZXNjR2V0RGVmYXVsdCh0 dXBsZURlc2MsIGF0dHJpYnV0ZS0+YXR0bnVtKTsKKwkJCQlpZiAodGhpc19kZWZhdWx0ID09 IE5VTEwpCisJCQkJCWVsb2coRVJST1IsICJkZWZhdWx0IGV4cHJlc3Npb24gbm90IGZvdW5k IGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCSBhdHRyaWJ1 dGUtPmF0dG51bSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKTsKKwkJCX0K KworCQkJbnVtID0gYXR0bWFwLT5hdHRudW1zW3BhcmVudF9hdHRubyAtIDFdOworCQkJZGVm ID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyh0aGlzX2RlZmF1bHQsIDEsIDAsIGF0dG1hcCwgSW52 YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJCS8qCisJCQkgKiBQcmV2ZW50IHRo aXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBmb3IgY29uc3RyYWludHMgYmVsb3cuIE5vdGUK KwkJCSAqIHRoYXQgZGVmYXVsdHMgY2Fubm90IGNvbnRhaW4gYW55IHZhcnMsIHNvIGl0J3Mg T0sgdGhhdCB0aGUKKwkJCSAqIGVycm9yIG1lc3NhZ2UgcmVmZXJzIHRvIGdlbmVyYXRlZCBj b2x1bW5zLgorCQkJICovCisJCQlpZiAoZm91bmRfd2hvbGVfcm93ICYmIGF0dHJpYnV0ZS0+ YXR0Z2VuZXJhdGVkICE9ICdcMCcpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJjYW5u b3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlIiksCisJCQkJCQllcnJkZXRh aWwoIkdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgY29sdW1uIFwiJXNcIiBjb250YWlucyBh IHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wiLiIsCisJCQkJCQkJCSBOYW1l U3RyKGF0dHJpYnV0ZS0+YXR0bmFtZSksCisJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShtb2RlbFJlbCkpKTsKKworCQkJLyogQWRkIGEgcHJlLWNvb2tlZCBkZWZhdWx0IGV4 cHJlc3Npb24uICovCisJCQlTdG9yZUF0dHJEZWZhdWx0KG5ld1JlbCwgbnVtLCBkZWYsIHRy dWUpOworCisJCQkvKgorCQkJICogU3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lv bnMgaW4gbW9kZWxSZWwgbWlnaHQgcmVmZXJlbmNlCisJCQkgKiB0YWJsZW9pZC4gIG5ld1Jl bCwgbW9kZWxSZWwgdGFibGVvaWQgY2xlYXIgaXMgbm90IHRoZSBzYW1lLiBJZgorCQkJICog c28sIHRoZXNlIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyByZXF1aXJlIHJlY29tcHV0YXRp b24gZm9yCisJCQkgKiBuZXdSZWwgd2l0aGluIG1vdmVNZXJnZWRUYWJsZXNSb3dzLgorCQkJ Ki8KKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJB VEVEX1NUT1JFRCkKKwkJCXsKKwkJCQluZXd2YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFs bG9jMChzaXplb2YoTmV3Q29sdW1uVmFsdWUpKTsKKwkJCQluZXd2YWwtPmF0dG51bSA9IG51 bTsKKwkJCQluZXd2YWwtPmV4cHIgPSBleHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgZGVm KTsKKwkJCQluZXd2YWwtPmlzX2dlbmVyYXRlZCA9IChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRl ZCAhPSAnXDAnKTsKKwkJCQl0YWItPm5ld3ZhbHMgPSBsYXBwZW5kKHRhYi0+bmV3dmFscywg bmV3dmFsKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIEN5Y2xlIGZvciBDSEVDSyBjb25zdHJh aW50cy4gKi8KKwlmb3IgKGNjbnVtID0gMDsgY2NudW0gPCBjb25zdHItPm51bV9jaGVjazsg Y2NudW0rKykKKwl7CisJCWNoYXIJICAgKmNjbmFtZSA9IGNvbnN0ci0+Y2hlY2tbY2NudW1d LmNjbmFtZTsKKwkJY2hhcgkgICAqY2NiaW4gPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2Jp bjsKKwkJYm9vbAkJY2NlbmZvcmNlZCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjZW5mb3Jj ZWQ7CisJCWJvb2wJCWNjbm9pbmhlcml0ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2Nub2lu aGVyaXQ7CisJCWJvb2wJCWNjdmFsaWQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3ZhbGlk OworCQlOb2RlCSAgICpjY2Jpbl9ub2RlOworCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJ CUNvb2tlZENvbnN0cmFpbnQgKmNvb2tlZDsKKworCQkvKgorCQkgKiBQYXJ0aXRpb25lZCB0 YWJsZSBjYW4gbm90IGhhdmUgTk8gSU5IRVJJVCBjaGVjayBjb25zdHJhaW50IChzZWUKKwkJ ICogU3RvcmVSZWxDaGVjayBmdW5jdGlvbikuCisJCSAqLworCQlBc3NlcnQoIWNjbm9pbmhl cml0KTsKKworCQljY2Jpbl9ub2RlID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyhzdHJpbmdUb05v ZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAxLCAwLAorCQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJ CQkJCQkJIEludmFsaWRPaWQsICZmb3VuZF93aG9sZV9yb3cpOworCisJCS8qCisJCSAqIFdl IHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzIGJlY2F1c2UgdGhlIHdob2xlIHBvaW50IG9m IExJS0UgaXMKKwkJICogdGhhdCB0aGUgbmV3IHRhYmxlJ3Mgcm93dHlwZSBtaWdodCBsYXRl ciBkaXZlcmdlIGZyb20gdGhlIHBhcmVudCdzLgorCQkgKiBTbywgd2hpbGUgdHJhbnNsYXRp b24gbWlnaHQgYmUgcG9zc2libGUgcmlnaHQgbm93LCBpdCB3b3VsZG4ndCBiZQorCQkgKiBw b3NzaWJsZSB0byBndWFyYW50ZWUgaXQgd291bGQgd29yayBpbiBmdXR1cmUuCisJCSAqLwor CQlpZiAoZm91bmRfd2hvbGVfcm93KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygiY2Fubm90 IGNvbnZlcnQgd2hvbGUtcm93IHRhYmxlIHJlZmVyZW5jZSIpLAorCQkJCQllcnJkZXRhaWwo IkNvbnN0cmFpbnQgXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0 YWJsZSBcIiVzXCIuIiwKKwkJCQkJCQkgICBjY25hbWUsCisJCQkJCQkJICAgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKSk7CisKKwkJY29va2VkID0gKENvb2tlZENvbnN0 cmFpbnQgKikgcGFsbG9jKHNpemVvZihDb29rZWRDb25zdHJhaW50KSk7CisJCWNvb2tlZC0+ Y29udHlwZSA9IENPTlNUUl9DSEVDSzsKKwkJY29va2VkLT5jb25vaWQgPSBJbnZhbGlkT2lk OworCQljb29rZWQtPm5hbWUgPSBjY25hbWU7CisJCWNvb2tlZC0+YXR0bnVtID0gMDsKKwkJ Y29va2VkLT5leHByID0gY2NiaW5fbm9kZTsKKwkJY29va2VkLT5pc19lbmZvcmNlZCA9IGNj ZW5mb3JjZWQ7CisJCWNvb2tlZC0+c2tpcF92YWxpZGF0aW9uID0gIWNjdmFsaWQ7CisJCWNv b2tlZC0+aXNfbG9jYWwgPSB0cnVlOworCQljb29rZWQtPmluaGNvdW50ID0gMDsKKwkJY29v a2VkLT5pc19ub19pbmhlcml0ID0gY2Nub2luaGVyaXQ7CisJCWNvb2tlZENvbnN0cmFpbnRz ID0gbGFwcGVuZChjb29rZWRDb25zdHJhaW50cywgY29va2VkKTsKKwl9CisKKwkvKiBTdG9y ZSBDSEVDSyBjb25zdHJhaW50cy4gKi8KKwlTdG9yZUNvbnN0cmFpbnRzKG5ld1JlbCwgY29v a2VkQ29uc3RyYWludHMsIHRydWUpOworCisJLyoKKwkgKiBtb2RlbFJlbCBjaGVjayBjb25z dHJhaW50IGV4cHJlc3NzaW9uIG1heSByZWZlcmVuY2UgdGFibGVvaWQsIHNvIGxhdGVyIGlu CisJICogbW92ZU1lcmdlZFRhYmxlc1Jvd3MsIHdlIG5lZWQgZXZ1bGF0ZSB0aGUgY2hlY2sg Y29uc3RyYWludCBhZ2FpbiBmb3IgdGhlCisJICogbmV3UmVsLiBXZSBjYW4gY2hlY2sgd2Vh dGhlciBjaGVjayBjb25zdHJhaW50IGNvbnRhaW4gdGFibGVvaWQgcmVmZXJlbmNlCisJICog b3Igbm90IHZpYSBwdWxsX3ZhcmF0dG5vcy4gQnV0IHVuY29uZGl0aW9uYWx5IHJldmF1bGF0 ZSBjaGVjayBjb3NudHJhaW50CisJICogc2VlbXMgbW9yZSBzYWZlLgorCSovCisJZm9yZWFj aF9wdHIoQ29va2VkQ29uc3RyYWludCwgY2NvbiwgY29va2VkQ29uc3RyYWludHMpCisJewor CQlpZiAoIWNjb24tPnNraXBfdmFsaWRhdGlvbiAmJiBjY29uLT5jb250eXBlID09IENPTlNU Ul9DSEVDSykKKwkJeworCQkJQml0bWFwc2V0CSAgKmF0dG51bXMgPSBOVUxMOworCisJCQlw dWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBjY29uLT5leHByLCAxLCAmYXR0bnVtcyk7CisKKwkJ CS8qCisJCQkgKiBBZGQgY2hlY2sgb25seSBpZiBpdCBjb250YWlucyB0YWJsZW9pZAorCQkJ ICogKFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKS4KKwkJCSAqLworCQkJaWYgKGJtc19pc19t ZW1iZXIoVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyLAorCQkJCQkJCSAgYXR0bnVtcykpCisJCQl7CisJCQkJTmV3Q29uc3Ry YWludCAqbmV3Y29uOworCisJCQkJbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9j MChzaXplb2YoTmV3Q29uc3RyYWludCkpOworCQkJCW5ld2Nvbi0+bmFtZSA9IGNjb24tPm5h bWU7CisJCQkJbmV3Y29uLT5jb250eXBlID0gY2Nvbi0+Y29udHlwZTsKKwkJCQluZXdjb24t PnF1YWwgPSBjY29uLT5leHByOworCisJCQkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQo dGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIERvbid0 IG5lZWQgdGhlIGNvb2tlZENvbnN0cmFpbnRzIGFueSBtb3JlLiAqLworCWxpc3RfZnJlZV9k ZWVwKGNvb2tlZENvbnN0cmFpbnRzKTsKKworCS8qIFJlcHJvZHVjZSBub3QtbnVsbCBjb25z dHJhaW50cy4gKi8KKwlpZiAoY29uc3RyLT5oYXNfbm90X251bGwpCisJeworCQlMaXN0CSAg ICpubmNvbnN0cmFpbnRzOworCisJCS8qCisJCSAqIFRoZSAiaW5jbHVkZV9ub2luaCIgYXJn dW1lbnQgaXMgZmFsc2UgYmVjYXVzZSBhIHBhcnRpdGlvbmVkIHRhYmxlCisJCSAqIGNhbm5v dCBoYXZlIE5PIElOSEVSSVQgY29uc3RyYWludC4KKwkJICovCisJCW5uY29uc3RyYWludHMg PSBSZWxhdGlvbkdldE5vdE51bGxDb25zdHJhaW50cyhSZWxhdGlvbkdldFJlbGlkKG1vZGVs UmVsKSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCBmYWxzZSk7CisKKwkJQXNzZXJ0KGxpc3Rf bGVuZ3RoKG5uY29uc3RyYWludHMpID4gMCk7CisKKwkJLyoKKwkJICogV2UgYWxyZWFkeSBz ZXQgcGdfYXR0cmlidXRlLmF0dG5vdG51bGwgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUuIE5v CisJCSAqIG5lZWQgY2FsbCBzZXRfYXR0bm90bnVsbCBhZ2Fpbi4KKwkJKi8KKwkJQWRkUmVs YXRpb25OZXdDb25zdHJhaW50cyhuZXdSZWwsIE5JTCwgbm5jb25zdHJhaW50cywgZmFsc2Us IHRydWUsIHRydWUsIE5VTEwpOworCX0KK30KKworCisvKgorICogY3JlYXRlUGFydGl0aW9u VGFibGU6IGNyZWF0ZSB0YWJsZSBmb3IgYSBuZXcgcGFydGl0aW9uIHdpdGggZ2l2ZW4gbmFt ZQorICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxlIChtb2RlbFJlbCwgcGFydGl0aW9uZWQg dGFibGUpLiBvd25lcklkIGlzCisgKiBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJ0aXRpb24gb24g d2hpY2ggdGhlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQsIHNvIGl0CisgKiBpcyBwYXNzZWQg c2VwYXJhdGVseS4KKyAqCisgKiBBbHNvLCB0aGlzIGZ1bmN0aW9uIHNldHMgdGhlIG5ldyBw YXJ0aXRpb24gYWNjZXNzIG1ldGhvZCBzYW1lIGFzIHBhcmVudAorICogdGFibGUgYWNjZXNz IG1ldGhvZHMgKHNpbWlsYXJseSB0byBDUkVBVEUgVEFCTEUgLi4uIFBBUlRJVElPTiBPRiku ICBJdAorICogY2hlY2tzIHRoYXQgcGFyZW50IGFuZCBjaGlsZCB0YWJsZXMgaGF2ZSBjb21w YXRpYmxlIHBlcnNpc3RlbmNlLgorICoKKyAqIEZ1bmN0aW9uIHJldHVybnMgdGhlIGNyZWF0 ZWQgcmVsYXRpb24gKGxvY2tlZCBpbiBBY2Nlc3NFeGNsdXNpdmVMb2NrIG1vZGUpLgorICov CitzdGF0aWMgUmVsYXRpb24KK2NyZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUs IFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwKKwkJCQkJIFJlbGF0aW9uIG1vZGVsUmVsLCBPaWQg b3duZXJJZCkKK3sKKwlSZWxhdGlvbgluZXdSZWw7CisJT2lkCQkJbmV3UmVsSWQ7CisJT2lk CQkJZXhpc3RpbmdSZWxpZDsKKwlUdXBsZURlc2MJZGVzY3JpcHRvcjsKKwlMaXN0CSAgICpj b2xMaXN0ID0gTklMOworCU9pZAkJCXJlbGFtSWQ7CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisJ QWx0ZXJlZFRhYmxlSW5mbyAqbmV3X3BhcnRyZWxfdGFiOworCisJLyogSWYgZXhpc3Rpbmcg cmVsIGlzIHRlbXAsIGl0IG11c3QgYmVsb25nIHRvIHRoaXMgc2Vzc2lvbiAqLworCWlmIChS RUxBVElPTl9JU19PVEhFUl9URU1QKG1vZGVsUmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fu bm90IGNyZWF0ZSBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uIG9mIGFub3Ro ZXIgc2Vzc2lvbiIpKTsKKworCS8qIExvb2sgdXAgaW5oZXJpdGFuY2UgYW5jZXN0b3JzIGFu ZCBnZW5lcmF0ZSByZWxhdGlvbiBzY2hlbWEuICovCisJY29sTGlzdCA9IGdldEF0dHJpYnV0 ZXNMaXN0KG1vZGVsUmVsKTsKKworCS8qIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0b3IgZnJv bSB0aGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWRlc2NyaXB0b3IgPSBCdWlsZERlc2NGb3JS ZWxhdGlvbihjb2xMaXN0KTsKKworCS8qIExvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QgZm9y IG5ldyByZWxhdGlvbi4gKi8KKwlyZWxhbUlkID0gKG1vZGVsUmVsLT5yZF9yZWwtPnJlbGFt ICE9IEludmFsaWRPaWQpID8gbW9kZWxSZWwtPnJkX3JlbC0+cmVsYW0gOiBIRUFQX1RBQkxF X0FNX09JRDsKKworCS8qIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3ZSBhcmUg c3VwcG9zZWQgdG8gY3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluYW1lc3BhY2VJZCA9CisJ CVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShuZXdQYXJ0TmFtZSwgTm9M b2NrLCAmZXhpc3RpbmdSZWxpZCk7CisJaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJM RSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBuZXdQ YXJ0TmFtZS0+cmVsbmFtZSkpOworCisJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwlu ZXdSZWxJZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVsbmFt ZSwKKwkJCQkJCQkJCQluYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQltb2RlbFJlbC0+cmRfcmVs LT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJSW52 YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCW93bmVySWQsCisJ CQkJCQkJCQkJcmVsYW1JZCwKKwkJCQkJCQkJCQlkZXNjcmlwdG9yLAorCQkJCQkJCQkJCU5J TCwKKwkJCQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJCW5ld1BhcnROYW1l LT5yZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlmYWxzZSwK KwkJCQkJCQkJCQlPTkNPTU1JVF9OT09QLAorCQkJCQkJCQkJCShEYXR1bSkgMCwKKwkJCQkJ CQkJCQl0cnVlLAorCQkJCQkJCQkJCWFsbG93U3lzdGVtVGFibGVNb2RzLAorCQkJCQkJCQkJ CWZhbHNlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJTlVMTCk7CisKKwkv KgorCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIG5l d2x5LWNyZWF0ZWQgcmVsYXRpb24KKwkgKiB0dXBsZSB2aXNpYmxlIGZvciBvcGVuaW5nLgor CSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkvKgorCSAqIE9wZW4gdGhl IG5ldyBwYXJ0aXRpb24gd2l0aCBubyBsb2NrLCBiZWNhdXNlIHdlIGFscmVhZHkgaGF2ZQor CSAqIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgcGxhY2VkIHRoZXJlIGFmdGVyIGNyZWF0aW9uLgor CSAqLworCW5ld1JlbCA9IHRhYmxlX29wZW4obmV3UmVsSWQsIE5vTG9jayk7CisKKwkvKiBG aW5kIG9yIGNyZWF0ZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciBuZXdseSBjcmVhdGVkIHRhYmxl LiAqLworCW5ld19wYXJ0cmVsX3RhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIG5ld1Jl bCk7CisKKwkvKgorCSAqIFdlIGludGVuZGVkIHRvIGNyZWF0ZSB0aGUgcGFydGl0aW9uIHdp dGggdGhlIHNhbWUgcGVyc2lzdGVuY2UgYXMgdGhlCisJICogcGFyZW50IHRhYmxlLCBidXQg d2Ugc3RpbGwgbmVlZCB0byByZWNoZWNrIGJlY2F1c2UgdGhhdCBtaWdodCBiZQorCSAqIGFm ZmVjdGVkIGJ5IHRoZSBzZWFyY2hfcGF0aC4gIElmIHRoZSBwYXJlbnQgaXMgcGVybWFuZW50 LCBzbyBtdXN0IGJlCisJICogYWxsIG9mIGl0cyBwYXJ0aXRpb25zLgorCSAqLworCWlmICht b2RlbFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1Q ICYmCisJCW5ld1JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5D RV9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJl bGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24gXCIlc1wiIiwKKwkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKSk7CisKKwkvKiBQZXJt YW5lbnQgcmVscyBjYW5ub3QgYmUgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8gdGVtcG9yYXJ5 IHBhcmVudCAqLworCWlmIChuZXdSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgIT0gUkVM UEVSU0lTVEVOQ0VfVEVNUCAmJgorCQltb2RlbFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNv ZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3Jl YXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVs YXRpb24gXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxS ZWwpKSk7CisKKwkvKiBDcmVhdGUgY29uc3RyYWludHMsIGRlZmF1bHQgdmFsdWVzIGFuZCBn ZW5lcmF0ZWQgdmFsdWVzICovCisJY3JlYXRlVGFibGVDb25zdHJhaW50cyh3cXVldWUsIG5l d19wYXJ0cmVsX3RhYiwgbW9kZWxSZWwsIG5ld1JlbCk7CisKKwkvKgorCSAqIE5lZWQgdG8g Y2FsbCBDb21tYW5kQ291bnRlckluY3JlbWVudCwgc28gZnJlc2ggcmVsY2FjaGUgZW50cnkg aGF2ZSBuZXdseQorCSAqIGluc3RhbGxlZCBjb25zdHJhaW50IGluZm8uCisJICovCisJQ29t bWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCXJldHVybiBuZXdSZWw7Cit9CisKKy8qCisg KiBtb3ZlTWVyZ2VkVGFibGVzUm93czogc2NhbiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCAo bWVyZ2luZ1BhcnRpdGlvbnNMaXN0KQorICogb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIChy ZWwpIGFuZCBtb3ZlIHJvd3MgaW50byB0aGUgbmV3IHBhcnRpdGlvbgorICogKG5ld1BhcnRS ZWwpLiBXZSBhbHNvIHJlZXZhdWxhdGUgY2hlY2sgY29uc3RyYWludHMgYWdhaW5zdCB0aGVz ZSByb3dzLgorICovCitzdGF0aWMgdm9pZAorbW92ZU1lcmdlZFRhYmxlc1Jvd3MoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcmVsLAorCQkJCQkgTGlzdCAqbWVyZ2luZ1BhcnRpdGlvbnNM aXN0LCBSZWxhdGlvbiBuZXdQYXJ0UmVsKQoreworCUNvbW1hbmRJZAlteWNpZDsKKwlFU3Rh dGUJICAgKmVzdGF0ZTsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJQWx0ZXJlZFRhYmxl SW5mbyAqdGFiOworCUxpc3RDZWxsICAgKmx0YWI7CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5 LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRB QkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3Rh dGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAq ZHN0c2xvdDsKKworCS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0 aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdx dWV1ZSwgbmV3UGFydFJlbCk7CisKKwkvKiBHZW5lcmF0ZSB0aGUgY29uc3RyYWludCBhbmQg ZGVmYXVsdCBleGVjdXRpb24gc3RhdGVzLiAqLworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9y U3RhdGUoKTsKKworCWJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyh0YWIsIG5ld1Bh cnRSZWwsIGVzdGF0ZSk7CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKTsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8q IFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8K KwliaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNz YXJ5IHR1cGxlIHNsb3QuICovCisJZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKG5ld1Bh cnRSZWwsIE5VTEwpOworCisJZm9yZWFjaF9wdHIoUmVsYXRpb25EYXRhLCBtZXJnaW5nUGFy dGl0aW9uLCBtZXJnaW5nUGFydGl0aW9uc0xpc3QpCisJeworCQlUdXBsZVRhYmxlU2xvdCAq c3Jjc2xvdDsKKwkJVHVwbGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJCVRhYmxlU2Nh bkRlc2Mgc2NhbjsKKwkJU25hcHNob3QJc25hcHNob3Q7CisKKwkJLyogQ3JlYXRlIHR1cGxl IHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2Ny ZWF0ZShtZXJnaW5nUGFydGl0aW9uLCBOVUxMKTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0 aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldwor CQkgKiBwYXJ0aXRpb24uCisJCSAqLworCQl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19i eV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobWVyZ2luZ1BhcnRpdGlvbiksCisJCQkJCQkJCQkJ ICAgUmVsYXRpb25HZXREZXNjcihuZXdQYXJ0UmVsKSk7CisKKwkJLyogU2NhbiB0aHJvdWdo IHRoZSByb3dzLiAqLworCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0 U25hcHNob3QoKSk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlv biwgc25hcHNob3QsIDAsIE5VTEwpOworCisJCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRz bG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwkJeworCQkJVHVw bGVUYWJsZVNsb3QgKmluc2VydHNsb3Q7CisKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwkJCWlmICh0dXBsZV9tYXApCisJCQl7CisJCQkJLyogTmVlZCB0byB1c2UgbWFwIHRv IGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21h cF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgZHN0c2xvdCk7CisJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNzbG90KTsKKworCQkJCS8q IENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZHN0c2xv dDsKKworCQkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQkJbWVtY3B5KGlu c2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJCQkJCSAgIHNp emVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0 c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9m KGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFs VHVwbGUoaW5zZXJ0c2xvdCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBDb25zdHJhaW50cyBh bmQgR0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRh Ymxlb2lkIGNvbHVtbiwgc28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZAor CQkJICogdmFsdWUuICAoV2UgbXVzdCBkbyB0aGlzIGVhY2ggdGltZSwgYmVjYXVzZSBpdCBn ZXRzCisJCQkgKiBvdmVyd3JpdHRlbiB3aXRoIG5ld3JlbCdzIE9JRCBkdXJpbmcgc3Rvcmlu Zy4pCisJCQkgKi8KKwkJCWluc2VydHNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0 UmVsaWQobmV3UGFydFJlbCk7CisKKwkJCS8qCisJCQkgKiBOb3csIGV2YWx1YXRlIGFueSBn ZW5lcmF0ZWQgZXhwcmVzc2lvbnMgd2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorCQkJICogdGhl IG5ldyB0dXBsZS4gIFdlIGFzc3VtZSB0aGVzZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5jZSBl YWNoCisJCQkgKiBvdGhlciwgc28gdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVu Y3kuCisJCQkgKi8KKwkJCWV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0Nv bnN0cmFpbnRzKHRhYiwgbmV3UGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJCWluc2VydHNsb3Qs IGVjb250ZXh0KTsKKworCQkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJl bGF0aW9uLiAqLworCQkJdGFibGVfdHVwbGVfaW5zZXJ0KG5ld1BhcnRSZWwsIGluc2VydHNs b3QsIG15Y2lkLAorCQkJCQkJCSAgIHRpX29wdGlvbnMsIGJpc3RhdGUpOworCisJCQlSZXNl dEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJfQorCisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7 CisJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkK KwkJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCX0KKworCUZyZWVFeGVjdXRvclN0YXRlKGVz dGF0ZSk7CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChkc3RzbG90KTsKKwlGcmVl QnVsa0luc2VydFN0YXRlKGJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0 KG5ld1BhcnRSZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHBy b2Nlc3MgdGhpcyBuZXdQYXJ0UmVsIHNpbmNlIHdlIGFscmVhZHkgcHJvY2Vzc2VkIGluIGhl cmUsCisJICogc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZSBvZiBpdC4KKwkgKi8K Kwlmb3JlYWNoKGx0YWIsICp3cXVldWUpCisJeworCQl0YWIgPSAoQWx0ZXJlZFRhYmxlSW5m byAqKSBsZmlyc3QobHRhYik7CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVs aWQobmV3UGFydFJlbCkpCisJCQkqd3F1ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1ZXVl LCBsdGFiKTsKKwl9Cit9CisKKy8qCisgKiBkZXRhY2hQYXJ0aXRpb25UYWJsZTogZGV0YWNo IHBhcnRpdGlvbiAiY2hpbGRfcmVsIiBmcm9tIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAicGFy ZW50X3JlbCIgd2l0aCBkZWZhdWx0IHBhcnRpdGlvbiBpZGVudGlmaWVyICJkZWZhdWx0UGFy dE9pZCIKKyAqLworc3RhdGljIHZvaWQKK2RldGFjaFBhcnRpdGlvblRhYmxlKFJlbGF0aW9u IHBhcmVudF9yZWwsIFJlbGF0aW9uIGNoaWxkX3JlbCwgT2lkIGRlZmF1bHRQYXJ0T2lkKQor eworCS8qIFJlbW92ZSB0aGUgcGdfaW5oZXJpdHMgcm93IGZpcnN0LiAqLworCVJlbW92ZUlu aGVyaXRhbmNlKGNoaWxkX3JlbCwgcGFyZW50X3JlbCwgZmFsc2UpOworCisJLyoKKwkgKiBE ZXRhY2hpbmcgdGhlIHBhcnRpdGlvbiBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vz cywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJLyogRG8g dGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCURldGFjaFBhcnRpdGlvbkZpbmFs aXplKHBhcmVudF9yZWwsIGNoaWxkX3JlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKwor CVBvcEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4g TUVSR0UgUEFSVElUSU9OUyA8cGFydGl0aW9uLWxpc3Q+IElOVE8gPHBhcnRpdGlvbi1uYW1l PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVl dWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkgIFBhcnRp dGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJ UmVsYXRpb24JbmV3UGFydFJlbDsKKwlMaXN0CSAgICptZXJnaW5nUGFydGl0aW9uc0xpc3Qg PSBOSUw7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJZXhpc3RpbmdSZWxpZDsK KwlPaWQJCQlvd25lcklkID0gSW52YWxpZE9pZDsKKwlPaWQJCQlzYXZlX3VzZXJpZDsKKwlp bnQJCQlzYXZlX3NlY19jb250ZXh0OworCWludAkJCXNhdmVfbmVzdGxldmVsOworCisJLyoK KwkgKiBMb2NrIGFsbCBtZXJnZWQgcGFydGl0aW9ucywgY2hlY2sgdGhlbSBhbmQgY3JlYXRl IGxpc3Qgd2l0aCBwYXJ0aXRpb25zCisJICogY29udGV4dHMuCisJICovCisJZm9yZWFjaF9u b2RlKFJhbmdlVmFyLCBuYW1lLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbWVy Z2luZ1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gZGV0YWNoIGFu ZCByZW1vdmUgdGhpcyBwYXJ0aXRpb246IG5lZWQgdG8gdXNlCisJCSAqIGV4Y2x1c2l2ZSBs b2NrIGZvciBwcmV2ZW50aW5nIERNTC1xdWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJCSAq LworCQltZXJnaW5nUGFydGl0aW9uID0gdGFibGVfb3BlbnJ2KG5hbWUsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2spOworCisJCWlmIChPaWRJc1ZhbGlkKG93bmVySWQpKQorCQl7CisJCQkvKiBE byB0aGUgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzPyAq LworCQkJaWYgKG93bmVySWQgIT0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25l cikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbnMgYmVpbmcgbWVyZ2Vk IGhhdmUgZGlmZmVyZW50IG93bmVycyIpKTsKKwkJfQorCQllbHNlCisJCQlvd25lcklkID0g bWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcjsKKworCQkvKiBTdG9yZSBhIG5l eHQgbWVyZ2luZyBwYXJ0aXRpb24gaW50byB0aGUgbGlzdC4gKi8KKwkJbWVyZ2luZ1BhcnRp dGlvbnNMaXN0ID0gbGFwcGVuZChtZXJnaW5nUGFydGl0aW9uc0xpc3QsCisJCQkJCQkJCQkJ bWVyZ2luZ1BhcnRpdGlvbik7CisJfQorCisJLyoKKwkgKiBMb29rIHVwIGV4aXN0aW5nIHJl bGF0aW9uIGJ5IG5ldyBwYXJ0aXRpb24gbmFtZSwgY2hlY2sgd2UgaGF2ZQorCSAqIHBlcm1p c3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0IGFnYWluc3QgY29uY3VycmVudCBkcm9w LCBhbmQgbWFyaworCSAqIHN0bXQtPnJlbGF0aW9uIGFzIFJFTFBFUlNJU1RFTkNFX1RFTVAg aWYgYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGlzCisJICogc2VsZWN0ZWQuCisJICovCisJY21k LT5uYW1lLT5yZWxwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsK KwlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UoY21kLT5uYW1lLCBOb0xv Y2ssICZleGlzdGluZ1JlbGlkKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhpcyBuYW1lIGlz IGFscmVhZHkgdGFrZW4uICBUaGlzIGhlbHBzIHVzIHRvIGRldGVjdCB0aGUKKwkgKiBzaXR1 YXRpb24gd2hlbiBvbmUgb2YgdGhlIG1lcmdpbmcgcGFydGl0aW9ucyBoYXMgdGhlIHNhbWUg bmFtZSBhcyB0aGUKKwkgKiBuZXcgcGFydGl0aW9uLiAgT3RoZXJ3aXNlLCB0aGlzIHdvdWxk IGZhaWwgbGF0ZXIgb24gYW55d2F5IGJ1dCBjYXRjaGluZworCSAqIHRoaXMgaGVyZSBhbGxv d3MgdXMgdG8gZW1pdCBhIG5pY2VyIGVycm9yIG1lc3NhZ2UuCisJICovCisJaWYgKE9pZElz VmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJeworCQlSZWxhdGlvbglzYW1lTmFtZVBhcnRpdGlv biA9IE5VTEw7CisKKwkJZm9yZWFjaF9wdHIoUmVsYXRpb25EYXRhLCBtZXJnaW5nUGFydGl0 aW9uLCBtZXJnaW5nUGFydGl0aW9uc0xpc3QpCisJCXsKKwkJCWlmIChSZWxhdGlvbkdldFJl bGlkKG1lcmdpbmdQYXJ0aXRpb24pID09IGV4aXN0aW5nUmVsaWQpCisJCQl7CisJCQkJc2Ft ZU5hbWVQYXJ0aXRpb24gPSBtZXJnaW5nUGFydGl0aW9uOworCQkJCWJyZWFrOworCQkJfQor CQl9CisKKwkJaWYgKHNhbWVOYW1lUGFydGl0aW9uKQorCQl7CisJCQkvKgorCQkJICogVGhl IG5ldyBwYXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIG1lcmdpbmcKKwkJ CSAqIHBhcnRpdGlvbnMuCisJCQkgKi8KKwkJCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFM RU5dOworCisJCQkvKiBHZW5lcmF0ZSB0ZW1wb3JhcnkgbmFtZS4gKi8KKwkJCXNwcmludGYo dG1wUmVsTmFtZSwgIm1lcmdlLSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg TXlQcm9jUGlkKTsKKworCQkJLyoKKwkJCSAqIFJlbmFtZSB0aGUgZXhpc3RpbmcgcGFydGl0 aW9uIHdpdGggYSB0ZW1wb3JhcnkgbmFtZSwgbGVhdmluZyBpdAorCQkJICogZnJlZSBmb3Ig dGhlIG5ldyBwYXJ0aXRpb24uICBXZSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcwor CQkJICogaW4gdGhlIGZ1dHVyZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGV2ZW50dWFsbHkg ZHJvcCB0aGUKKwkJCSAqIGV4aXN0aW5nIHBhcnRpdGlvbiBhbnl3YXkuCisJCQkgKi8KKwkJ CVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChzYW1lTmFtZVBhcnRp dGlvbiksCisJCQkJCQkJCSAgIHRtcFJlbE5hbWUsIHRydWUsIGZhbHNlKTsKKworCQkJLyoK KwkJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIG5l dyBwYXJ0aXRpb24KKwkJCSAqIHR1cGxlIHZpc2libGUgZm9yIHJlbmFtZS4KKwkJCSAqLwor CQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAor CQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIGNtZC0+bmFt ZS0+cmVsbmFtZSkpOworCQl9CisJfQorCisJZGVmYXVsdFBhcnRPaWQgPQorCQlnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0 cnVlKSk7CisKKwkvKgorCSAqIERldGFjaCBhbGwgbWVyZ2VkIHBhcnRpdGlvbnMuCisJICoK KwkgKiBQZXJmb3JtIGEgcHJlbGltaW5hcnkgY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg aXQncyBzYWZlIHRvIGRyb3AgYWxsCisJICogbWVyZ2luZyBwYXJ0aXRpb25zIGJlZm9yZSB3 ZSBhY3R1YWxseSBkbyBzbyBsYXRlci4gQWZ0ZXIgbWVyZ2luZyByb3dzCisJICogaW50byB0 aGUgbmV3IHBhcnRpdGlvbnMgdmlhIG1vdmVNZXJnZWRUYWJsZXNSb3dzLCBhbGwgb2xkIHBh cnRpdGlvbnMgbmVlZAorCSAqIGJlIGRyb3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9w IGJlaGF2aW9yIGlzIERST1BfUkVTVFJJQ1QgYW5kIHRoZQorCSAqIG1lcmdlIHByb2Nlc3Mg KG1vdmVNZXJnZWRUYWJsZXNSb3dzKSBjYW4gYmUgdGltZS1jb25zdW1pbmcsIHBlcmZvcm1p bmcgYW4KKwkgKiBlYXJseSBjaGVjayBvbiB0aGUgZHJvcCBlbGlnaWJpbGl0eSBvZiBvbGQg cGFydGl0aW9ucyBpcyBwcmVmZXJhYmxlLgorCSAqLworCWZvcmVhY2hfcHRyKFJlbGF0aW9u RGF0YSwgbWVyZ2luZ1BhcnRpdGlvbiwgbWVyZ2luZ1BhcnRpdGlvbnNMaXN0KQorCXsKKwkJ T2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJZGV0YWNoUGFydGl0aW9uVGFibGUocmVsLCBt ZXJnaW5nUGFydGl0aW9uLCBkZWZhdWx0UGFydE9pZCk7CisKKwkJLyogR2V0IG9pZCBvZiB0 aGUgbGF0ZXIgdG8gYmUgZHJvcHBlZCByZWxhdGlvbiAqLworCQlvYmplY3Qub2JqZWN0SWQg PSBSZWxhdGlvbkdldFJlbGlkKG1lcmdpbmdQYXJ0aXRpb24pOworCQlvYmplY3QuY2xhc3NJ ZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwor CQlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCBQRVJGT1JN X0RFTEVUSU9OX0lOVEVSTkFMKTsKKwl9CisKKwkvKiBDcmVhdGUgdGFibGUgZm9yIG5ldyBw YXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2RlbC4gKi8KKwlBc3NlcnQo T2lkSXNWYWxpZChvd25lcklkKSk7CisJbmV3UGFydFJlbCA9IGNyZWF0ZVBhcnRpdGlvblRh YmxlKHdxdWV1ZSwgY21kLT5uYW1lLCByZWwsIG93bmVySWQpOworCisJLyoKKwkgKiBTd2l0 Y2ggdG8gdGhlIHRhYmxlIG93bmVyJ3MgdXNlcmlkLCBzbyB0aGF0IGFueSBpbmRleCBmdW5j dGlvbnMgYXJlIHJ1bgorCSAqIGFzIHRoYXQgdXNlci4gIEFsc28gbG9jayBkb3duIHNlY3Vy aXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBhbmQKKwkgKiBhcnJhbmdlIHRvIG1ha2UgR1VD IHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8gdGhpcyBjb21tYW5kLgorCSAqCisJICogTmVl ZCB0byBkbyBpdCBhZnRlciBkZXRlcm1pbmUgbmFtZXNwYWNlIGluIGNyZWF0ZVBhcnRpdGlv blRhYmxlIGNhbGwuCisJICovCisJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2Vy aWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KG93bmVy SWQsCisJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9P UEVSQVRJT04pOworCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVz dHJpY3RTZWFyY2hQYXRoKCk7CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQgcGFydGl0 aW9ucyB0byBuZXcgcGFydGl0aW9uLiAqLworCW1vdmVNZXJnZWRUYWJsZXNSb3dzKHdxdWV1 ZSwgcmVsLCBtZXJnaW5nUGFydGl0aW9uc0xpc3QsIG5ld1BhcnRSZWwpOworCisJLyogRHJv cCB0aGUgY3VycmVudCBwYXJ0aXRpb25zIGJlZm9yZSBhdHRhY2hpbmcgdGhlIG5ldyBvbmUu ICovCisJZm9yZWFjaF9wdHIoUmVsYXRpb25EYXRhLCBtZXJnaW5nUGFydGl0aW9uLCBtZXJn aW5nUGFydGl0aW9uc0xpc3QpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkv KiBHZXQgcmVsYXRpb24gaWQgYmVmb3JlIHRhYmxlX2Nsb3NlKCkgY2FsbC4gKi8KKwkJb2Jq ZWN0Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChtZXJnaW5nUGFydGl0aW9uKTsKKwkJ b2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5vYmplY3RT dWJJZCA9IDA7CisKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRh YmxlX2Nsb3NlKG1lcmdpbmdQYXJ0aXRpb24sIE5vTG9jayk7CisKKwkJcGVyZm9ybURlbGV0 aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCX0KKwlsaXN0X2ZyZWUobWVyZ2lu Z1BhcnRpdGlvbnNMaXN0KTsKKworCS8qCisJICogQXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0 byB0aGUgcGFydGl0aW9uZWQgdGFibGUuIHdxdWV1ZSA9IE5VTEw6CisJICogdmVyaWZpY2F0 aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdCBuZWVkZWQuCisJICovCisJ YXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5k KTsKKworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3Nl KG5ld1BhcnRSZWwsIE5vTG9jayk7CisKKwkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2Vz IGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVPWGFjdF9HVUMoZmFsc2Us IHNhdmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBj b250ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVf c2VjX2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNTBmNTMxNTlkNS4uNDZiYmRj YmM3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9Q CiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAotCVBB UkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNT V09SRCBQQVRICisJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElP TiBQQVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAogCVBFUklPRCBQTEFDSU5HIFBM QU4gUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJW RSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVS QUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgpAQCAtMjMzMSw2 ICsyMzMxLDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0F0dGFj aFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSAk NDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0g ZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMjM0NSw2ICsyMzQ2 LDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRp dGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOwor CQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSAkNDsK IAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzU4LDYgKzIzNjAsMjEgQEAg cGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlvbkZp bmFsaXplOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7 CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZh bHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikg bjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAo KSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcg cXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJ CQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQ YXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+ c3VidHlwZSA9IEFUX01lcmdlUGFydGl0aW9uczsKKwkJCQkJY21kLT5uYW1lID0gJDc7CisJ CQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDQ7CiAJCQkJ CWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTIzNzQsNiArMjM5MSw3IEBAIGluZGV4X3Bh cnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJ CQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21k LT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJ CW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMTc4NzYsNiArMTc4OTQsNyBAQCB1bnJl c2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJ VElPTgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJ CXwgUEFUSApAQCAtMTg1MDMsNiArMTg1MjIsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJ CQl8IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJ T05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggNjIwMTU0MzFmZC4uZGEyOTE5ODY0NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRp b24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKQEAg LTU4LDYgKzU5LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5o IgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgorI2luY2x1ZGUgInBhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAu aCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgpAQCAtMzQ4OCw2ICszNDkxLDEzMyBAQCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAq c3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiB9CiAKIAorLyoKKyAqIGNoZWNrUGFy dGl0aW9uCisgKgkJQ2hlY2sgdGhhdCBwYXJ0UmVsT2lkIGlzIGFuIG9pZCBvZiBwYXJ0aXRp b24gb2YgdGhlIHBhcmVudCB0YWJsZSByZWwKKyAqLworc3RhdGljIHZvaWQKK2NoZWNrUGFy dGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQpCit7CisJUmVsYXRpb24JcGFy dFJlbDsKKworCXBhcnRSZWwgPSByZWxhdGlvbl9vcGVuKHBhcnRSZWxPaWQsIEFjY2Vzc1No YXJlTG9jayk7CisKKwlpZiAocGFydFJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRf UkVMQVRJT04pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJ CQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpKSk7CisKKwlpZiAoIXBh cnRSZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coIlwiJXNc IiBpcyBub3QgYSBwYXJ0aXRpb24iLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwYXJ0UmVsKSkpOworCisJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQs IGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJZXJybXNnKCJyZWxh dGlvbiBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJ CQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLAorCQkJCQkgICBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CisKKwkvKiBQZXJtaXNzaW9ucyBjaGVja3Mg Ki8KKwlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRp b25HZXRSZWxpZChwYXJ0UmVsKSwgR2V0VXNlcklkKCkpKQorCQlhY2xjaGVja19lcnJvcihB Q0xDSEVDS19OT1RfT1dORVIsIGdldF9yZWxraW5kX29ianR5cGUocGFydFJlbC0+cmRfcmVs LT5yZWxraW5kKSwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCkp OworCisJcmVsYXRpb25fY2xvc2UocGFydFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKK30KKwor LyoKKyAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCisgKgkJQW5hbHl6ZSB0aGUg QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZAorICoKKyAqIERvZXMg c2ltcGxlIGNoZWNrcyBmb3IgbWVyZ2VkIHBhcnRpdGlvbnMuIENhbGN1bGF0ZXMgYm91bmQg b2YgcmVzdWx0aW5nCisgKiBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zv cm1QYXJ0aXRpb25DbWRGb3JNZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRp b25DbWQgKnBhcnRjbWQpCit7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJcGFy dE9pZDsKKwlSZWxhdGlvbglwYXJlbnQgPSBjeHQtPnJlbDsKKwlQYXJ0aXRpb25LZXkga2V5 OworCWNoYXIJCXN0cmF0ZWd5OworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlz dHB0cjI7CisJYm9vbAkJaXNEZWZhdWx0UGFydCA9IGZhbHNlOworCUxpc3QJICAgKnBhcnRP aWRzID0gTklMOworCisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsK KwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCWlmIChzdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2co InBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQi KSk7CisKKwkvKiBJcyBjdXJyZW50IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAq LworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVs YXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJZm9yZWFjaChsaXN0 cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7CisJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFu Z2VWYXIgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIFBhcnRpdGlvbnMgaW4gdGhlIGxp c3Qgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3JfZWFjaF9jZWxsKGxp c3RwdHIyLCBwYXJ0Y21kLT5wYXJ0bGlzdCwgbG5leHQocGFydGNtZC0+cGFydGxpc3QsIGxp c3RwdHIpKQorCQl7CisJCQlSYW5nZVZhciAgICpuYW1lMiA9IChSYW5nZVZhciAqKSBsZmly c3QobGlzdHB0cjIpOworCisJCQlpZiAoZXF1YWwobmFtZSwgbmFtZTIpKQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJ CQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2Vk IiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3Rh dGUsIG5hbWUyLT5sb2NhdGlvbikpOworCQl9CisKKwkJLyoKKwkJICogU2VhcmNoIERFRkFV TFQgcGFydGl0aW9uIGluIHRoZSBsaXN0LiBMb2NrIHBhcnRpdGlvbnMgYmVmb3JlCisJCSAq IGNhbGN1bGF0aW5nIHRoZSBib3VuZGFyeSBmb3IgcmVzdWx0aW5nIHBhcnRpdGlvbi4KKwkJ ICovCisJCXBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkKG5hbWUsIEFjY2Vzc1NoYXJlTG9j aywgZmFsc2UpOworCQlpZiAocGFydE9pZCA9PSBkZWZhdWx0UGFydE9pZCkKKwkJCWlzRGVm YXVsdFBhcnQgPSB0cnVlOworCisJCS8qCisJCSAqIEV4dGVuZGVkIGNoZWNrIGJlY2F1c2Ug dGhlIHNhbWUgcGFydGl0aW9uIGNhbiBoYXZlIGRpZmZlcmVudCBuYW1lcworCQkgKiAoZm9y IGV4YW1wbGUsICJwYXJ0X25hbWUiIGFuZCAicHVibGljLnBhcnRfbmFtZSIpLgorCQkgKi8K KwkJZm9yZWFjaChsaXN0cHRyMiwgcGFydE9pZHMpCisJCXsKKwkJCU9pZAkJY3VyT2lkID0g bGZpcnN0X29pZChsaXN0cHRyMik7CisKKwkJCWlmIChjdXJPaWQgPT0gcGFydE9pZCkKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJM RSksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVh ZHkgdXNlZCIsIG5hbWUtPnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4 dC0+cHN0YXRlLCBuYW1lLT5sb2NhdGlvbikpOworCQl9CisKKwkJY2hlY2tQYXJ0aXRpb24o cGFyZW50LCBwYXJ0T2lkKTsKKworCQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRz LCBwYXJ0T2lkKTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBvZiByZXN1bHRpbmcgcGFy dGl0aW9uLiAqLworCUFzc2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlwYXJ0Y21k LT5ib3VuZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisKKwkvKiBGaWxsIHBh cnRpdGlvbiBib3VuZC4gKi8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRlZ3kgPSBzdHJhdGVn eTsKKwlwYXJ0Y21kLT5ib3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0Y21kLT5ib3VuZC0+ aXNfZGVmYXVsdCA9IGlzRGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1bHRQYXJ0KQorCQlj YWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQsIHBhcnRjbWQtPnBh cnRsaXN0LAorCQkJCQkJCQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91bmQsCisJCQkJCQkJ CQkJCWN4dC0+cHN0YXRlKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10 IC0KICAqCQlwYXJzZSBhbmFseXNpcyBmb3IgQUxURVIgVEFCTEUKQEAgLTM3NjUsNiArMzg5 NSwxOSBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVT dG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJ YnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFy dGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJ CQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQkJCQkJZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3Vs ZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcyIpKTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0 aW9uQ21kRm9yTWVyZ2UoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5k KG5ld2NtZHMsIGNtZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAog CQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA0YmRj Mjk0MWVmLi4yNjY0YzdiNzA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmMKQEAgLTMyMTQsOCArMzIxNCw5IEBAIGNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQo Y2hhciAqcmVsbmFtZSwgUmVsYXRpb24gcGFyZW50LAogCQkJCQkJUGFydGl0aW9uUmFuZ2VE YXR1bSAqZGF0dW07CiAKIAkJCQkJCS8qCi0JCQkJCQkgKiBQb2ludCB0byBwcm9ibGVtYXRp YyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0OwotCQkJCQkJICogaWYgd2UgaGF2ZSBl cXVhbGl0eSwgcG9pbnQgdG8gdGhlIGZpcnN0IG9uZS4KKwkJCQkJCSAqIFBvaW50IHRvIHBy b2JsZW1hdGljIGtleSBpbiB0aGUgbGlzdCBvZiBsb3dlcgorCQkJCQkJICogZGF0dW1zOyBp ZiB3ZSBoYXZlIGVxdWFsaXR5LCBwb2ludCB0byB0aGUgZmlyc3QKKwkJCQkJCSAqIG9uZS4K IAkJCQkJCSAqLwogCQkJCQkJZGF0dW0gPSBjbXB2YWwgPT0gMCA/IGxpbml0aWFsKHNwZWMt Pmxvd2VyZGF0dW1zKSA6CiAJCQkJCQkJbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGFi cyhjbXB2YWwpIC0gMSk7CkBAIC00OTc3LDMgKzQ5NzgsMTk2IEBAIHNhdGlzZmllc19oYXNo X3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX0JPT0wocm93SGFz aCAlIG1vZHVsdXMgPT0gcmVtYWluZGVyKTsKIH0KKworLyoKKyAqIGNoZWNrX3R3b19wYXJ0 aXRpb25zX2JvdW5kc19yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFy dGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1 bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGZ1bmN0aW9uIGNv bXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCBsb3dlciBib3VuZCBvZgor ICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVxdWFsLgorICoKKyAq IHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogZmlyc3RfbmFtZToJCW5hbWUgb2Yg Zmlyc3QgcGFydGl0aW9uCisgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRp dGlvbgorICogc2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIHNl Y29uZF9ib3VuZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogcHN0YXRlOgkJCXBv aW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0 aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFu Z2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFJhbmdlVmFyICpmaXJzdF9uYW1lLAor CQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqZmlyc3RfYm91bmQsCisJCQkJCQkJCSAg UmFuZ2VWYXIgKnNlY29uZF9uYW1lLAorCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAq c2Vjb25kX2JvdW5kLAorCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0 aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0 aXRpb25SYW5nZUJvdW5kICpmaXJzdF91cHBlcjsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpz ZWNvbmRfbG93ZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kg PT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWZpcnN0X3VwcGVyID0gbWFrZV9v bmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBmaXJzdF9ib3VuZC0+dXBwZXJkYXR1bXMs IGZhbHNlKTsKKwlzZWNvbmRfbG93ZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtl eSwgLTEsIHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJLyoKKwkgKiBs b3dlcjE9ZmFsc2UgKHRoZSBzZWNvbmQgdG8gbGFzdCBhcmd1bWVudCkgZm9yIGNvcnJlY3Qg Y29tcGFyaXNvbiBvZgorCSAqIGxvd2VyIGFuZCB1cHBlciBib3VuZHMuCisJICovCisJY21w dmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAg a2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJ CQkJCSAgc2Vjb25kX2xvd2VyLT5kYXR1bXMsIHNlY29uZF9sb3dlci0+a2luZCwKKwkJCQkJ CQkJICBmYWxzZSwgZmlyc3RfdXBwZXIpOworCWlmIChjbXB2YWwpCisJeworCQlQYXJ0aXRp b25SYW5nZURhdHVtICpkYXR1bSA9IGxpbml0aWFsKHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1 bXMpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1zZygibG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uIFwiJXNcIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0 aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25h bWUtPnJlbG5hbWUpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYwor ICoKKyAqIFJldHVybnMgdGhlIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgdGhlIHBhcnRpdGlv biB3aXRoIHRoZSBnaXZlbiBPSUQgcGFydE9pZC4KKyAqLworc3RhdGljIFBhcnRpdGlvbkJv dW5kU3BlYyAqCitnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoT2lkIHBhcnRPaWQpCit7CisJ SGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisJUGFy dGl0aW9uQm91bmRTcGVjICpib3VuZHNwZWMgPSBOVUxMOworCisJLyogVHJ5IGZldGNoaW5n IHRoZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNoZSwgZm9yIHNwZWVkLiAqLworCXR1cGxlID0g U2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFydE9pZCk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJl bGF0aW9uICV1IiwgcGFydE9pZCk7CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihSRUxP SUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfY2xhc3NfcmVscGFydGJvdW5kLAorCQkJCQkJ CSZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJwYXJ0aXRpb24gYm91 bmQgZm9yIHJlbGF0aW9uICV1IGlzIG51bGwiLAorCQkJIHBhcnRPaWQpOworCisJYm91bmRz cGVjID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKworCWlm ICghSXNBKGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRTcGVjKSkKKwkJZWxvZyhFUlJPUiwg ImV4cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgcmVsYXRpb24gJXUiLAorCQkJIHBh cnRPaWQpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwlyZXR1cm4gYm91bmRzcGVj OworfQorCisvKgorICogY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UKKyAq CisgKiBDYWxjdWxhdGVzIHRoZSBib3VuZCBvZiBtZXJnZWQgcGFydGl0aW9uICJzcGVjIiBi eSB1c2luZyB0aGUgYm91bmRzIG9mCisgKiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZC4KKyAq CisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnROYW1lczoJCW5hbWVz IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBwYXJ0T2lkczoJCU9pZHMgb2YgcGFy dGl0aW9ucyB0byBiZSBtZXJnZWQKKyAqIHNwZWMgKG91dCk6CQlib3VuZHMgc3BlY2lmaWNh dGlvbiBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8g UGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCit2 b2lkCitjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJl bnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lk cywKKwkJCQkJCQkJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCVBhcnNl U3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0 aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOworCisJQXNz ZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsKKworCXN3aXRjaCAoa2V5LT5zdHJhdGVneSkKKwl7 CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFOgorCQkJeworCQkJCWludAkJCWk7 CisJCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJCQlpbnQJCQlu cGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0T2lkcyk7CisJCQkJTGlzdAkgICAqYm91bmRzID0g TklMOworCisJCQkJbG93ZXJfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJ CQkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOwor CisJCQkJLyoKKwkJCQkgKiBDcmVhdGUgYXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBsaXN0 IG9mCisJCQkJICogUGFydGl0aW9uQm91bmRTcGVjLgorCQkJCSAqLworCQkJCWZvcmVhY2hf b2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0 aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJCQkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5k ZXgocGFydG9pZCk7CisKKwkJCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0 aW9uX3Jib3VuZChrZXksIGksIGJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCQkJCWJv dW5kcyA9IGxhcHBlbmQoYm91bmRzLCBib3VuZCk7CisJCQkJfQorCisJCQkJLyogU29ydCBh cnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywg bnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRf cGFydGl0aW9uX3Jib3VuZF9jbXAsICh2b2lkICopIGtleSk7CisKKwkJCQkvKiBSYW5nZXMg b2YgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAuICovCisJCQkJZm9yIChpID0gMTsg aSA8IG5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaW50CQkJaW5kZXggPSBsb3dlcl9ib3Vu ZHNbaV0tPmluZGV4OworCQkJCQlpbnQJCQlwcmV2X2luZGV4ID0gbG93ZXJfYm91bmRzW2kg LSAxXS0+aW5kZXg7CisKKwkJCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3Jhbmdl KHBhcmVudCwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFt ZXMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAq KSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFJhbmdl VmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBh cnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJ CQkJCQkgIHBzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBMb3dlciBib3VuZCBv ZiBmaXJzdCBwYXJ0aXRpb24gaXMgdGhlIGxvd2VyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAq IHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dlcmRhdHVtcyA9CisJCQkJCSgo UGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzWzBd LT5pbmRleCkpLT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJCQkJICogVXBwZXIgYm91bmQg b2YgbGFzdCBwYXJ0aXRpb24gaXMgdGhlIHVwcGVyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAq IHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT51cHBlcmRhdHVtcyA9CisJCQkJCSgo UGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzW25w YXJ0cyAtIDFdLT5pbmRleCkpLT51cHBlcmRhdHVtczsKKworCQkJCXBmcmVlKGxvd2VyX2Jv dW5kcyk7CisJCQkJbGlzdF9mcmVlKGJvdW5kcyk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJ Y2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJCXsKKwkJCQkvKiBDb25zb2xpZGF0 ZSBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAqLworCQkJCWZvcmVh Y2hfb2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFy dGl0aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJCQkJCXNwZWMtPmxpc3RkYXR1bXMgPSBs aXN0X2NvbmNhdChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+bGlzdGRhdHVtcyk7CisJCQkJ fQorCQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5l eHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJh dGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDJjMGI0ZjI4YzEu LjY0MjQ4YjViMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3MjEsNiArMjcy MSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJCQkgICJP V05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAgIlJFUExJ Q0EgSURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJU SVRJT04iLCAiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKKwkJCQkJICAiTUVSR0UgUEFS VElUSU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUg eHh4IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hB bnksICJBREQiKSkKQEAgLTI5ODcsNiArMjk4OCwxNSBAQCBtYXRjaF9wcmV2aW91c193b3Jk cyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIs IE1hdGNoQW55LCAiREVUQUNIIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExF VEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwgIkZJTkFMSVpFIik7CiAKKwkvKiBBTFRFUiBUQUJM RSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQor CXsKKwkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0X3dkKTsKKwkJQ09NUExFVEVf V0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CisJfQor CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIs ICJQQVJUSVRJT05TIiwgIigqKSIpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPIik7CisKIAkv KiBBTFRFUiBUQUJMRSA8bmFtZT4gT0YgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJUQUJMRSIsIE1hdGNoQW55LCAiT0YiKSkKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX2xpc3Rfb2ZfY29tcG9zaXRlX2RhdGF0eXBlcyk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvZGVwZW5kZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQuLmY1NDIzMzQ5OWIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xMDcsNiArMTA3LDggQEAgZXh0ZXJuIHZvaWQg UmVsZWFzZURlbGV0aW9uTG9jayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpOwogZXh0 ZXJuIHZvaWQgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwK IAkJCQkJCQlEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiAKK2V4dGVybiB2 b2lkIHBlcmZvcm1EZWxldGlvbkNoZWNrKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwK KwkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsKIGV4dGVybiB2 b2lkIHBlcmZvcm1NdWx0aXBsZURlbGV0aW9ucyhjb25zdCBPYmplY3RBZGRyZXNzZXMgKm9i amVjdHMsCiAJCQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvaGVhcC5oCmluZGV4IGRiZDMzOWU5ZGYuLmMxMzBiYzBjMzggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvaGVhcC5oCkBAIC0xMTksNiArMTE5LDkgQEAgZXh0ZXJuIExpc3QgKkFkZFJlbGF0aW9u Tm90TnVsbENvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpj b25zdHJhaW50cywKIAkJCQkJCQkJCQkgICBMaXN0ICpvbGRfbm90bnVsbHMpOwogCitleHRl cm4gdm9pZCBTdG9yZUNvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwgTGlzdCAqY29va2VkX2Nv bnN0cmFpbnRzLAorCQkJCQkJCSBib29sIGlzX2ludGVybmFsKTsKKwogZXh0ZXJuIHZvaWQg UmVsYXRpb25DbGVhck1pc3NpbmcoUmVsYXRpb24gcmVsKTsKIAogZXh0ZXJuIHZvaWQgU3Rv cmVBdHRyTWlzc2luZ1ZhbChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGJhMTI2NzhkMWMuLmI4ZTJhNjc5Y2QgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTk2OSw4ICs5NjksMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiB7 CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFy dGl0aW9uIHRvIGF0dGFjaC9kZXRhY2ggKi8KKwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5h bWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2UgKi8KIAlQYXJ0aXRpb25C b3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KKwlMaXN0 CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1FUkdFCisJCQkJ CQkJCSAqIFBBUlRJVElPTiBjb21tYW5kICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFy dGl0aW9uQ21kOwogCkBAIC0yNDczLDYgKzI0NzUsNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJU YWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAq LwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRf RGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUg Ki8KKwlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFU X0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJ CQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5 LAkJCS8qIERST1AgSURFTlRJVFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBhNGFmM2Y3 MTdhLi45MGU4Y2RkZjhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcsNiArMzM3LDcg QEAgUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFM LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRp b24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tF WVdPUkQoInBhcnRpdGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0aCIsIFBB VEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5oCmluZGV4IDY1ZjE2MWY3MTguLjY5MGQyNTk2MTkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0MywxMCBA QCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpw YXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRp b25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJl bWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9y X21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywK KwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0aW9uQm91 bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsKKwogI2Vu ZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNv bGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi45ODQ0NmFhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAsMCArMSwx OTkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47Citz dGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRf MDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lO Oworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUg aSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4u LiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZS T00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAg ICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCisz NXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJi IHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBC RUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1F UkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8w MF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQg PSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzog Q09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsK K3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0t LS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1v ZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFj IHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEw XzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQ REFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0 ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUg ICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWIg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJF R0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYn IHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0 ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUg ICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMyYnJyIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0 ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVw IHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJ T05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVw IHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1v ZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0 ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczog U0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQor IDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4 dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK K3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFM SVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9k aWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3Rl cCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBT RUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisg NXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0 MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0 ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBh cnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRw YXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBT RVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAor LS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4 dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIg czJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJ QUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4 dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFy dCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBh cnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNF VCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCist LSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0 MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFM SVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQw MScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJH RSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBf MjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0g J3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENP TU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0t LS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2Rp ZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3Qv aXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCBlM2M2NjlhMjljLi4wZGNhNjg0 OTU1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxl CisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEwNyw2 ICsxMDcsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRp b24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBw YXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKIHRlc3Q6IHBs cGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29u ZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv cGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0 aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZGMyYjlkMzQ0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVj cy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0 IE1FUkdFIG9wZXJhdGlvbiBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVk IHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBD UkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkp OworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBB UlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBDUkVB VEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElP TiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0 ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOwor ICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAg RFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsg fQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0K K3N0ZXAgczFtZXJnCXsgQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBh cnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9CitzdGVwIHMxYwl7 IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAg czJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVw IHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMy aQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMy dQl7IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IH0K K3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7 IH0KKworCisjIHMyIGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBNRVJHRSBQ QVJUSVRJT05TIHRoZW4KKyMgczIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRlZCByb3cg YW5kIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlvbi4KKworcGVy bXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitw ZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJj IHMycworCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJzIHMxbWVy ZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWIg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBz MWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicyBzMmkg czJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4 IDE5MzY2OWYyYmMuLjdkZTVkZGI4NzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5 Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJ CWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRB Q0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX01l cmdlUGFydGl0aW9uczoKKwkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOworCQkJ CWJyZWFrOwogCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCQlzdHJ0eXBlID0gIkFERCBJ REVOVElUWSI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNGJmYzRmN2I1ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMCwwICsxLDExOTMgQEAKKy0tCist LSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9u c19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h MjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7 CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVy cm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy MjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9G IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBu YW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIy Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFi bGUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2Zl YjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21h cl9hcHIyMDIyOworRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBjb25m bGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2ph bjIwMjIiCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBz YWxlc19tYXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9O UyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAy MjsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBj b25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVz X2phbjIwMjIiCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf amFuMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0 aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNf ZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2Zl YjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJv dW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIEVSUk9SOiAg cGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIy LCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIy KSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGgg bmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDE6IC4uLmUgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9u cy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9u cyBvcmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0aAorU0VU IHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7CitBTFRF UiBUQUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBNRVJHRSBQQVJU SVRJT05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAyMiwKKyAg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7 CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOwor U0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFj aHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0 cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2Fs ZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgb2lk ICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwg ICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfamFu X2ZlYl9tYXIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVT IEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19hcHIyMDIy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0y MDIyJykKKyBzYWxlc19kZWMyMDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcxMi0w MS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBE RUZBVUxUCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEFk ZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucwor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9z YWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisg ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2Fs ZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBSQU5HRSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworLS0gc2hvdyBw YXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworICAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAy MicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMt MDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisg c2FsZXNfbWFyMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJz ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKwor LS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIy LCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0 aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJl bGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5p bmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICAgICAg ICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhk ZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykK KyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIy JykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxU CisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u c19tZXJnZV9zY2hlbWEyJzsKKyAgICAgICAgc2NoZW1hbmFtZSAgICAgICAgfCAgICAgICB0 YWJsZW5hbWUgICAgICAgfCAgICAgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICAgICAg fCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19m ZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElO REVYIHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxl c19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAg ICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwg R2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAg ICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIy CisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwg MDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAg ICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg ICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxs ZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAg IDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTQg fCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAw IHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAg ICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBv aXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAg ICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgor ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAz LTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAg ICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAg ICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4 MCB8IDA0LTA2LTIwMjIKKygxMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVy czsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCistLSBVc2Ug aW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9G RjsKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJp Y3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAg ICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAg fCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisoMTAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQg cGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNh bGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChz YWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0z MCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAx NTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAg IDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjIt MDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAo MTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywg ICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUg REVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5h bWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVz X2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVz X290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CitzZWxlY3QgKiBmcm9tIHNhbGVzX290aGVy czsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAg ICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwg SGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIy CisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcgcm93cykKKwor LS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRh bG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9p ZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xh c3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0OworICAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGlu ZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXBy MjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgn MDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicp IFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsK Ky0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQg dmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2Rh eSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUwor ICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2Fs ZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0 LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVG QVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVj MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEy LCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgy MDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFY VkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScs IDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5h Z2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgn TWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAor ICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0 KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJPTSBzYWxlc19k YXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBz YWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8 ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIu MDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIu MDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIu MDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2RlYzIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19t b250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwg ICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAg ICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0 ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAx LjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c19mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwg c2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAg ICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwg MSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJPTSBz YWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8 IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8 IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8 IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAg ICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIu MDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbl9mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNf bW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAx MCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoNiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMu MDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAg ICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBv ZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgx LCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAk Qk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0 aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19X SEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFU RSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgor ICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RB VEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy KCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUK KyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJl IGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAg dHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZh bm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9 IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUy MF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworLS0gMiB0 cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmln Z2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVS LCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBh Y3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEg dHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBS T1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEw IHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8IFNt aXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo KTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5z CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor LS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg ZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWly bm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3co KSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1O IGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisg ICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBf NDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorICAgICAg ICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAg ICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgICAg IDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEw OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJv dykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQor ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92Cisg ICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9O IHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIw MjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAg ICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBv aXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAg ICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgor ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAz LTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAg ICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAw MCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAg ICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19hcHIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2FwcjIwMjJfMDFfMTA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBzYWxlc19hcHIyMDIyXzIwXzMwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy CisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9O UyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXBy MjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworU0VMRUNUICogRlJPTSBzYWxlc19y YW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAg ICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEw IHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0y MDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAg ICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAg ICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIK KyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAw My0xOS0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAg ICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAg ICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIw MjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2 YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor KDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBh cnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJ U1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3Bl cnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVz X2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNh bGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNp bmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNhbGVz X2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qy IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIg REVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0 KTsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKy0t IEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFz dCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICAic2FsZXNfZXh0 ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlvbgorLS0gRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwy IiBpcyBub3QgYSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwyKSBJTlRP IHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0 aW9uCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0 aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBN RVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkg SU5UTyBzYWxlc19hbGw7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorRFJPUCBUQUJMRSBzYWxl c19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJMRSBz YWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiBCWSBM SVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxX QVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2Fs ZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRl IERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIElOREVY IHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBi dHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxl c19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFU RSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJh bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0w MycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMt MDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAz LTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0w My0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIy LTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAy Mi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIw MjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcy MDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAn MjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwg JzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAs ICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUw LCAnMjAyMi0wMy0wNScpOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoK K1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRh Y2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJp dHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3Nh bGVzX2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8IHJlbGtpbmQg fCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHNhbGVzX2NlbnRyYWwgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNh bGVzX2Vhc3QgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg SU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKQorIHNhbGVzX25vcmQgICAg fCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywg J1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJykKKyBzYWxlc193ZXN0ICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcpCisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBN RVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFs KSBJTlRPIHNhbGVzX2FsbDsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0 YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdz YWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICBvaWQgICAgICB8IHJlbGtpbmQg fCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpCisgc2FsZXNfbm9yZCAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScp Cisgc2FsZXNfb3RoZXJzIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxU CisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAgICAgIDUw MCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBM aXNib24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAg ICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAgICAgIDY1 MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBM aXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAg ICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBW bGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBC ZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAg ICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBX YXJzYXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAw MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBI ZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAg ICAgOSB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIw MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBP c2xvICAgICAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIw MjIKKyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAg ICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE1heSAg ICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIw MjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAgICAgICAg ICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfYWxsOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlv cmsgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0y MDIyCisgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAg fCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgMTQgfCBQbGF0byAg ICAgICAgICAgIHwgTGlzYm9uICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisg ICAgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAg ICAgIHwgVmxhZGl2b3N0b2sgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgICAgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3 NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwg QmVybGluICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAg MTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgfCAgICAgICAgICAzNTAgfCAw My0xMC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3 ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMTAgcm93cykKKworLS0gVXNl IGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFydGl0aW9u cworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19hbGwg V0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAg ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAg ICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19s aXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAz LTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxF IHNhbGVzX2xpc3Q7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhl ciB0YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBpbnQsIGMg aW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQxcDEgUEFS VElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOworQ1JFQVRF IFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworQ1JF QVRFIFRBQkxFIHQycGEgUEFSVElUSU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBU TyAoJ0MnKTsKK0NSRUFURSBUQUJMRSB0MyAoaSBpbnQsIHQgdGV4dCk7CistLSBFUlJPUjog IHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgor QUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7 CitFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRp b24gInQyIgorLS0gRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbgorQUxURVIgVEFC TEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworRVJST1I6ICAi dDMiIGlzIG5vdCBhIHBhcnRpdGlvbgorRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFCTEUgdDI7 CitEUk9QIFRBQkxFIHQxOworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIHRl bXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1QIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVD VCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVu Y2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8IHQKKyB0cF8x XzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3MpCisKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8y OworLS0gUGFydGl0aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhy ZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAg fCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBf MF8yIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cpCisKK0RST1Ag VEFCTEUgdDsKKy0tCistLSBDaGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhl IHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBw YXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBJ TkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxk IGJlICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorLS0gTm90LW51bGwgY29u c3RyYWludCBuYW1lIHNob3VsZCBiZSAndHBfMV8yX2lfbm90X251bGwnLgorXGQrIHRwXzFf MgorICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9z Y2hlbWEudHBfMV8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCist LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQ YXJ0aXRpb24gY29uc3RyYWludDogKChpIElTIE5PVCBOVUxMKSBBTkQgKGkgPj0gMCkgQU5E IChpIDwgMikpCitJbmRleGVzOgorICAgICJ0cF8xXzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0 cmVlIChpKQorICAgICJ0cF8xXzJfaV9pZHgiIGJ0cmVlIChpKQorTm90LW51bGwgY29uc3Ry YWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisK K0RST1AgVEFCTEUgdDsKKy0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9y YXJ5IHBhcnRpdGlvbnMuCistLQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKyBvaWQgfCByZWxw ZXJzaXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgfCBwCisoMSByb3cp CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAg V0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xh c3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVs cGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8 IHAKKyB0cF8xXzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHAKKygyIHJvd3Mp CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBh IHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEg dGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24g InQiCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGlj OworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3Jh cnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEg dGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24g InQiCitEUk9QIFRBQkxFIHQ7CitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQkVHSU47CitDUkVBVEUgVEFCTEUgdCAoaSBp bnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVD VCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7Cisgb2lk IHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAgIHwgdAor KDEgcm93KQorCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5j ZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0 cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6 OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6 OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAg ICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSkgfCB0CisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikgfCB0Ciso MiByb3dzKQorCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cGdfdGVtcCwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgdGVtcG9yYXJ5IHBhcnRpdGlvbnMg aW50byBhIHBlcnNpc3RlbnQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JPTExCQUNLOworLS0gQ2hl Y2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQorU0VU IHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFU RSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCB0 YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1l IElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdl X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFt ZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgcmVncmVzc190 YmxzcGFjZQorKDIgcm93cykKKworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJs ZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3Rw XzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBP UkRFUiBCWSB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUg fCAgaW5kZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwg cmVncmVzc190YmxzcGFjZQorIHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5IHwgcmVncmVzc190 YmxzcGFjZQorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBw YXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorU0VUIHNl YXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBB Q0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIg aGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JFQVRFIFRB QkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsK K0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBn X2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQg SU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVs bmFtZTsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgIAorLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVh cAorIHRwXzBfMiAgfCBwYXJ0aXRpb25zX21lcmdlX2hlYXAKKygyIHJvd3MpCisKK0RST1Ag VEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7Cist LSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBw YXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0 aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9i OworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9m IHRhYmxlIHRwXzBfMQorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFC TEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMV8yCitSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitS RVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7Cist LSBUZXN0OiB3ZSBjYW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGlmZmVyZW50IG93bmVy cworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworQ1JFQVRF IFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25zX21lcmdl X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBU TyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBf MF8xKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0NSRUFURSBU QUJMRSB0cF8xXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQ1JF QVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQUxURVIgVEFC TEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25zX21lcmdl X2FsaWNlJzoKK1xkdCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBl ICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdy ZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2UKKygxIHJvdykKKworLS0gT3duZXIgaXMgJ3Jl Z3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2InOgorXGR0IHRwXzFfMgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAg ICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMV8y IHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iCisoMSByb3cpCisKKy0t IEVSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJz CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKK0VSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJl bnQgb3duZXJzCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsK K1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVn cmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlv bnNfbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2Jv YjsKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitD UkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxV UyAyLCBSRU1BSU5ERVIgMSk7CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRp dGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFz aC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCistLSBFUlJPUjogIGxpc3Qg b2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CitFUlJPUjog IGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0 ZW1zCitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciBtZXJnZWQgcGFydGl0aW9uIHByb3Bl cnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0 eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlv bmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhl IHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRp b25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcs CisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAx JykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENP TFVNTiB0LmkgSVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRwXzBfMQorKGkgaW50IE5PVCBO VUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8wXzEnLAor IGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicp IFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMF8xLmkgSVMg J3RwXzBfMS5pJzsKK0NSRUFURSBUQUJMRSB0cF8xXzIKKyhpIGludCBOT1QgTlVMTCwKKyB0 IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMV8yJywKKyBiIGJpZ2lu dCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDMtMDMnKSBTVE9SRUQp OworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzFfMi5pIElTICd0cF8xXzIu aSc7CitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBm cm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVTKSBv biBpLCBiIGZyb20gdHBfMF8xOworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERF UEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzFfMjsKK0FMVEVSIFRBQkxFIHQgQUREIENP TlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBD T05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRF UiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1Qg VkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBi IE5PVCBWQUxJRDsKK0lOU0VSVCBJTlRPIHRwXzBfMShpLCB0LCBiKSBWQUxVRVMoMCwgREVG QVVMVCwgMSk7CitJTlNFUlQgSU5UTyB0cF8xXzIoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFV TFQsIDIpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigp IFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4K KyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9 ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsK KyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHRfYmVmb3Jl X2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklH R0VSIHRwXzBfMV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04g dHBfMF8xIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0 aW9uKCd0cF8wXzEnKTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jv d190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKK1xkKyB0cF8wXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAi cGFydGl0aW9uc19tZXJnZV9zY2hlbWEudHBfMF8xIgorIENvbHVtbiB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAg ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9u IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwXzBfMS5pCisgdCAgICAg IHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdHBfMF8xJzo6 dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtYWluICAgIHwgICAgICAgICAgICAg IHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSkKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBO T1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkgPCAxKSkKK0NoZWNrIGNv bnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2No ZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hF Q0sgKGIgPiAwKSBOT1QgVkFMSUQKK1N0YXRpc3RpY3Mgb2JqZWN0czoKKyAgICAicGFydGl0 aW9uc19tZXJnZV9zY2hlbWEudHBfMF8xX3N0YXQiIChkZXBlbmRlbmNpZXMpIE9OIGksIGIg RlJPTSB0cF8wXzEKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0cF8wXzFfaV9ub3Rf bnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwg ImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5z ZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVyBF WEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorICAg IHRwXzBfMV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBf MF8xIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3Rw XzBfMScpCisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8xOworXGQrIHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50 cF8wXzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAg ICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdl ICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwg ICAgICAgICAgICAgIHwgCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgJ2RlZmF1bHRfdCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBleHRlbmRlZCB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAg ICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBk YXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgn MDEtMDEtMjAyMic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwg CitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlv biBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkg QU5EIChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2si IENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5G T1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK05vdC1u dWxsIGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5o ZXJpdGVkKQorICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFM SUQKK1RyaWdnZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUg SU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2Vy X2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBW QUxVRVMoMSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0 aW9uID0gSU5TRVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAg ICAgICB0ICAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tCisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90 cF8wXzEgfCAxIHwgMDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdHBfMV8y IHwgMiB8IDAxLTAxLTIwMjIKKyB0cF8wXzEgICB8IDEgfCBkZWZhdWx0X3QgICAgICB8IDMg fCAwMS0wMS0yMDIyCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9O IHRyaWdnZXJfZnVuY3Rpb24oKTsKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5v dCB2YWxpZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQg UFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBf MF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRF IFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsg KGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIgVEFC TEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkgUkVG RVJFTkNFUyB0IE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBG T1JFSUdOIEtFWQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9z Y2hlbWEudHBfMF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorSW5kZXhl czoKKyAgICAidHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKK1JlZmVyZW5j ZWQgYnk6CisgICAgVEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9ma2V5IiBGT1JF SUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0KGkpIE5PVCBWQUxJRAorCistLSBFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05T VFJBSU5UIHRfZmtfaV9ma2V5OworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIK K0RFVEFJTDogIEtleSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0Ii4KK0RS T1AgVEFCTEUgdF9mazsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9O UyB3aXRoIG5vdCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFC TEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRF IFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIp OworQUxURVIgVEFCTEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdO IEtFWSAoaSkgUkVGRVJFTkNFUyB0IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxk IGJlIE5PVCBFTkZPUkNFRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAi cGFydGl0aW9uc19tZXJnZV9zY2hlbWEudHBfMF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKQorSW5kZXhlczoKKyAgICAidHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBi dHJlZSAoaSkKK1JlZmVyZW5jZWQgYnk6CisgICAgVEFCTEUgInRfZmsiIENPTlNUUkFJTlQg InRfZmtfaV9ma2V5IiBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0KGkpIE5PVCBFTkZP UkNFRAorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFC TEUgdF9mayBBTFRFUiBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEVORk9SQ0VEOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDogIEtleSAoaSk9KDIpIGlzIG5v dCBwcmVzZW50IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUgdF9mazsKK0RST1AgVEFCTEUg dDsKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1 bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdh eXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0so dGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEp OworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93 IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBm b3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBB TkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291 bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworLS0gInRhYl9pZCIgY29sdW1uIChz dG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1 aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBTaG91bGQgYmUgMSBi ZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNh bWUgYXMKKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxF Q1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0 YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQor KDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tCitEUk9Q IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IGE0MjRiZTJhNmIuLjY0NjRhMjM4YWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3Fs IGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAj IFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcg c3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10 ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3Bh cnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNv cnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0 ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJl bG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0 aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBw cmVkaWNhdGUgbnVtYQogCiAjIGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0g YW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5z IERETApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdl LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzhjZjRhZmJmMQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKQEAg LTAsMCArMSw3OTIgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3Ig IkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKwor Q1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmlu ZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykg VE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6 ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIw MjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9h cHIyMDIyOworLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIy MDIyOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAi c2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIw MjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2ph bl9tYXIyMDIyOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2phbjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRp dGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVz X2RlYzIwMjEgYW5kIHNhbGVzX2phbjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBzYWxlc19m ZWIyMDIyKSBJTlRPIHNhbGVzX2RlY19qYW5fZmViMjAyMjsKKy0tIEVSUk9SOiAgcGFydGl0 aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxl c19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyKSBJTlRP IHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3Rv bSBwYXJ0aXRpb25zIG9yZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNlYXJj aF9wYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIsIHB1 YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3Jhbmdl IE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19m ZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAorICBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9m ZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxr aW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJs ZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor Q1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jhbmdl IFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIs ICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAg IDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAo NiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAg ICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAy Mi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisg ICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcy MDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwK KyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgcGdf Y2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisK Ky0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2Ns YXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBu ZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CisKKy0tIHNo b3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBp LmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisg IE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cu dGV4dDsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdz YWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMic7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVy czsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxl X3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hl bWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEt MDEnOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0 aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyks CisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdN dWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCistLSBNZXJnZSBwYXJ0aXRpb25zIChpbmNsdWRlIERF RkFVTFQgcGFydGl0aW9uKSBpbnRvIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lCistLSBuYW1l CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TCisgIChzYWxlc19q YW4yMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19v dGhlcnMpIElOVE8gc2FsZXNfb3RoZXJzOworCitzZWxlY3QgKiBmcm9tIHNhbGVzX290aGVy czsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBw Z19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVS RSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6 cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRi b3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6 cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0g VGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VO RVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBz YWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChz YWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0 ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkg U1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVz IGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVz X21vbnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAo MjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAx KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMg RlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOwor CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwg MTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywg MjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2Vy MicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFu YWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAo J01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsK K1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFu MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsK KworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIs IDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJP TSBzYWxlc19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICog RlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisK K0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlv bnMgb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25f aWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2Fs ZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1Ig VkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBW QUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxw Z3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBj YWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBU R19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9E WSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1l bnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAg Rk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Bl b3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBP TiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJF IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworLS0gMiB0cmln Z2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBm aXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAo MTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUz MF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBm aXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBW QUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9y ZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9N IHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CitEUk9QIEZV TkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVzdDogbWVy Z2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQp OworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlv bnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMw XzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAg VkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3YnKTsKKwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9y ZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRP IHNhbGVzcGVvcGxlMTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7CitzZWxl Y3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxl MTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CisKKy0tCistLSBUZXN0OiBtZXJn ZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIy MDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0NSRUFU RSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUICogRlJPTSBz YWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMl8wMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8x MF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsKKworQUxURVIgVEFC TEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEw LCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVz X2Fwcl9hbGw7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7CisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0K KworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25p bmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBH RU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwK KyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFU RSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJh bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChM SUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxV RVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsK KworCitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVS Uk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwg c2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICAic2FsZXNfZXh0 ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwy KSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQy LCBzYWxlc19lYXN0KSBJTlRPIHNhbGVzX2FsbDsKKworRFJPUCBUQUJMRSBzYWxlc19leHRl cm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJMRSBzYWxlc19s aXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IEJZIExJU1Qg cGFydGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMg QVMgSURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19z dGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFU RSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBJTkRFWCBz YWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRy ZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNf c3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKKwor Q1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFU RSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJh bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz cGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZB TFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMt MDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAz LTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0w My0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjIt MDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIy LTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAy Mi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIw MjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcy MDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAn MjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ09zbG8nLCAgICAgICAgICAgIDgwMCwg JzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAs ICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUw LCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1 MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5 NTAsICcyMDIyLTAzLTA1Jyk7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlv bnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5o ZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2lu aGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9 ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2Nl bnRyYWwpIElOVE8gc2FsZXNfYWxsOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQs IGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworU0VMRUNUICogRlJPTSBz YWxlc19saXN0OworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworU0VMRUNUICogRlJPTSBz YWxlc19hbGw7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRl ciBtZXJnaW5nIHBhcnRpdGlvbnMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VM RUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NF TEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOwor U0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZh bm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfbGlz dDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUu CistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBP RiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0 MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJM RSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7 CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworCistLSBFUlJPUjogIHJlbGF0 aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIg VEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CistLSBF UlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQ QVJUSVRJT05TICh0MnBhLCB0MykgSU5UTyB0MnA7CisKK0RST1AgVEFCTEUgdDM7CitEUk9Q IFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0 aXRpb25zIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBf MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBU RU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UK KyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMg aQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpy ZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpw Z19jYXRhbG9nLnRleHQ7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworCistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRl bXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNl CisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRz IGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6 cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRi b3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6 cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHQ7CisKKy0tCistLSBDaGVjayB0aGUg cGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1l IGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJM RSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisK K0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpOworCitDUkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8x XzI7CisKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtleScgYW5k ICd0cF8xXzJfaV9pZHgnLgorLS0gTm90LW51bGwgY29uc3RyYWludCBuYW1lIHNob3VsZCBi ZSAndHBfMV8yX2lfbm90X251bGwnLgorXGQrIHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7CisK Ky0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5IHBhcnRpdGlvbnMu CistLQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3Rl bXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMg V0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5E IGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFVCBzZWFyY2hfcGF0 aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tIENh bid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRp dGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikg SU5UTyB0cF8wXzI7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLCBwdWJsaWM7CisKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBp bnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0RST1AgVEFCTEUg dDsKKworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEsIHB1YmxpYzsKKworQkVHSU47CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKK1NFTEVDVCBjLm9pZDo6 cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRi b3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmlu aHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQn LCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitTRVQg c2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGlj OworCistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lz dGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CisKKy0tIENoZWNrIHRoZSBuZXcg cGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlc3BhY2UKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAo aSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgdGFibGVuYW1lLCB0 YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAn dHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisg IE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGlu ZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1l IElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdl X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7 CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRz IHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0 aXRpb25zX21lcmdlX2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5k bGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVT SU5HIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBf MV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7 CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdf YW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2NsYXNz LCAndHBfMF8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CitEUk9QIFRBQkxF IHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFwOworCistLSBU ZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJl bnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0aGUg bWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NS RUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h IFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFC TEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOwor CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJM RSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitS RVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05F UiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGlj ZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKKworCistLSBUZXN0OiB3ZSBjYW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGlmZmVy ZW50IG93bmVycworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNl OworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0dSQU5UIEFM TCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRp b25zX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUg VEFCTEUgdHBfMF8xKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsK K0NSRUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8y IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCistLSBPd25lciBpcyAncmVncmVzc19w YXJ0aXRpb25zX21lcmdlX2FsaWNlJzoKK1xkdCB0cF8wXzEKKy0tIE93bmVyIGlzICdyZWdy ZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iJzoKK1xkdCB0cF8xXzIKKworLS0gRVJST1I6ICBw YXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0FMVEVSIFRB QkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor CitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK1JFVk9LRSBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0 aXRpb25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2Vf YWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKKworCist LSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBp bnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRF IFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwg UkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlv bmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworCistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBh cnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CisKK0RST1AgVEFCTEUgdDsK KworCistLSBUZXN0IGZvciBtZXJnZWQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNU QVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxU UyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAq IFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUK Ky0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VORVJB VEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJR0dF UlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorCitD UkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVO REVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwK KyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBB UlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAn dDEuaSc7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRl eHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMF8xJywKKyBiIGJpZ2ludCwK KyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQpOwor QUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzBfMS5pIElTICd0cF8wXzEuaSc7 CisKK0NSRUFURSBUQUJMRSB0cF8xXzIKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RP UkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMV8yJywKKyBiIGJpZ2ludCwKKyBkIGRh dGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDMtMDMnKSBTVE9SRUQpOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzFfMi5pIElTICd0cF8xXzIuaSc7CisKK0NS RUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdDsK K0NSRUFURSBTVEFUSVNUSUNTIHRwXzBfMV9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIg ZnJvbSB0cF8wXzE7CitDUkVBVEUgU1RBVElTVElDUyB0cF8xXzJfc3RhdCAoREVQRU5ERU5D SUVTKSBvbiBpLCBiIGZyb20gdHBfMV8yOworCitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJB SU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RS QUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFC TEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElE OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1Qg VkFMSUQ7CisKK0lOU0VSVCBJTlRPIHRwXzBfMShpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVM VCwgMSk7CitJTlNFUlQgSU5UTyB0cF8xXzIoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQs IDIpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJF VFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAg UkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUs IGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAg UkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgdF9iZWZvcmVf aW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdCBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndCcpOworQ1JFQVRFIFRSSUdH RVIgdHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0 cF8wXzEgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3RwXzBfMScpOworQ1JFQVRFIFRSSUdHRVIgdHBfMV8yX2JlZm9yZV9pbnNlcnRfcm93 X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8xXzIgRk9SIEVBQ0ggUk9XCisgIEVYRUNV VEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzFfMicpOworCitcZCsgdHBfMF8x CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMTsKK1xkKyB0cF8wXzEKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMo MSwgREVGQVVMVCwgMyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBP UkRFUiBCWSBiOworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCk7CisKKworLS0gVGVzdCBNRVJHRSBQQVJUSVRJT05TIHdpdGggbm90IHZhbGlkIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFURSBUQUJMRSB0IChpIElOVCBQUklNQVJZIEtF WSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBf MV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworSU5TRVJU IElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitDUkVBVEUgVEFCTEUgdF9mayAoaSBJTlQpOwor SU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEpLCAoMik7CitBTFRFUiBUQUJMRSB0X2ZrIEFE RCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQg Tk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRw XzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1QgVkFMSUQgRk9SRUlHTiBL RVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0 X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FM VEVSIFRBQkxFIHRfZmsgVkFMSURBVEUgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleTsKKworRFJP UCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCistLSBUZXN0IE1FUkdFIFBBUlRJVElP TlMgd2l0aCBub3QgZW5mb3JjZWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRB QkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JF QVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFU RSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgy KTsKKworQUxURVIgVEFCTEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JF SUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworCistLSBT aG91bGQgYmUgTk9UIEVORk9SQ0VEIEZPUkVJR04gS0VZCitcZCB0cF8wXzIKKy0tIEVSUk9S OiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitBTFRFUiBUQUJMRSB0X2ZrIEFMVEVSIENP TlNUUkFJTlQgdF9ma19pX2ZrZXkgRU5GT1JDRUQ7CisKK0RST1AgVEFCTEUgdF9mazsKK0RS T1AgVEFCTEUgdDsKKworCistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBn ZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBn ZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJB SU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0IFZB TFVFUyAoMCksICgxKTsKKworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRl bnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00g dCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVS RSBpID0gMSk7CisKKy0tICJ0YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1 bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0YXRp b24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworCistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRpdGlvbiBp ZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRpdGlv biBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJF IGkgPSAxKTsKKworRFJPUCBUQUJMRSB0OworCisKK1JFU0VUIHNlYXJjaF9wYXRoOworCist LQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitEUk9QIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7Ci0tIAoyLjQwLjEud2luZG93cy4xCgo= --------------idA7oXwm00VbE6yDVktLrb2V Content-Type: text/plain; charset=UTF-8; name="v45-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v45-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYWVjMWE4NmZhZWJhMGUxNGM5Yjg2MTYzNDQ1YjI4NWZlNmY4OThkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDUgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcwoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBBbGV4YW5kZXIg S29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJbG1hcmkgTWFu bnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29y b3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jpc292ClJldmll d2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4s IEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5OiBEYW5pZWwg R3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3JjL3NnbWwvZGRs LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgOTIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0NjMgKysrKwogc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICA1NiArLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDY4NCAr KysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8 ICAgMTggKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAg IHwgICAxMCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAg ICAgIHwgICAxNiArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAg ICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o ICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oICAgICAg ICAgICAgICAgICB8ICAgIDIgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24t c3BsaXQub3V0ICAgIHwgIDE5MCArKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9z Y2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFy dGl0aW9uLXNwbGl0LnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3Rf ZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgMTkwNSArKysrKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCAgICAgIHwgMTE4OCArKysr KysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAg fCAgICAyICsKIDIwIGZpbGVzIGNoYW5nZWQsIDQ3MjUgaW5zZXJ0aW9ucygrKSwgMjMgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVj dGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9p c29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3Fs CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Rk bC5zZ21sCmluZGV4IDYyYzJiYjU0ZWEuLjQxZTQ3N2VkZGYgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAgLTQ0NjEs NiArNDQ2MSwyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAgICAgICAgICAgICAg ICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAzKSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7 CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBT aW1pbGFybHkgdG8gbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBwYXJ0aXRpb25zLCB0aGVyZSBp cyBhbiBvcHRpb24gZm9yCisgICAgIHNwbGl0dGluZyBhIHNpbmdsZSBwYXJ0aXRpb24gaW50 byBtdWx0aXBsZSB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVydGFi bGUtc3BsaXQtcGFydGl0aW9uIj48Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFS VElUSU9OPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMgZmVhdHVyZSBjb3VsZCBjb21l IGluIGhhbmR5IHdoZW4gb25lIHBhcnRpdGlvbiBncm93cyB0b28gYmlnCisgICAgIGFuZCBu ZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlLiAgSXQncyBpbXBvcnRhbnQgdG8gbm90 ZSB0aGF0CisgICAgIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGhhc2gt cGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcworICAgICBhbiA8bGl0ZXJhbD5BQ0NF U1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBhY3QgaGlnaC1s b2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3RpdmUgbmF0dXJl LiAgRm9yIGV4YW1wbGUsIHdlIGNhbiBzcGxpdAorICAgICB0aGUgcXVhcnRlciBwYXJ0aXRp b24gYmFjayB0byBtb250aGx5IHBhcnRpdGlvbnM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBUQUJMRSBtZWFzdXJlbWVudCBTUExJVCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZx MSBJTlRPCisgICAoUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2bTAxIEZPUiBWQUxVRVMg RlJPTSAoJzIwMDYtMDEtMDEnKSBUTyAoJzIwMDYtMDItMDEnKSwKKyAgICBQQVJUSVRJT04g bWVhc3VyZW1lbnRfeTIwMDZtMDIgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMi0wMScpIFRP ICgnMjAwNi0wMy0wMScpLAorICAgIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMyBG T1IgVkFMVUVTIEZST00gKCcyMDA2LTAzLTAxJykgVE8gKCcyMDA2LTA0LTAxJykpOworPC9w cm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKICAgIDwvc2VjdDM+CiAKICAgIDxzZWN0 MyBpZD0iZGRsLXBhcnRpdGlvbmluZy1kZWNsYXJhdGl2ZS1saW1pdGF0aW9ucyI+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggZTUwM2EwNjAyOC4uZGFhZGI4MzI2YiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtMzcsNiArMzcsMTAgQEAgQUxU RVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQVRUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiB7IEZPUiBW QUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9z cGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0KIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgog ICAgIERFVEFDSCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBd CitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBTUExJVCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5U TworICAgICAgICAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4g fCBERUZBVUxUIH0sCisgICAgICAgICBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3Jl cGxhY2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dKQogQUxURVIgVEFCTEUgWyBJRiBFWElT VFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICAgTUVSR0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkKICAgICAg ICAgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPgpAQCAtMTE1MCw2ICsxMTU0LDcxIEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8 dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0aXRpb24iPgorICAg IDx0ZXJtPjxsaXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRPIChQQVJUSVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFj ZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSwgUEFSVElUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxh Y2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSk8 L2xpdGVyYWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFRoaXMgZm9ybSBzcGxpdHMgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQgdGFi bGUgaW50byBhIG5ldworICAgICAgcGFydGl0aW9ucy4gSGFzaC1wYXJ0aXRpb25lZCB0YXJn ZXQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4gQm91bmRzIG9mIG5ldworICAgICAgcGFydGl0 aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5nIHBhcnRpdGlv bnMKKyAgICAgIChleGNlcHQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgSWYgdGhlIHNwbGl0IHBhcnRpdGlv biBpcyBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwgb25lIG9mCisg ICAgICB0aGUgbmV3IHBhcnRpdGlvbnMgbXVzdCBiZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRl cmFsPi4KKyAgICAgIEluIGNhc2Ugb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBvciBvbmUg b2YgZXhpc3RpbmcgcGFydGl0aW9ucyBpcworICAgICAgPGxpdGVyYWw+REVGQVVMVDwvbGl0 ZXJhbD4sIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbgor ICAgICAgaGF2ZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcy4gIElmIHRoZSBw YXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdAorICAgICAgaGF2ZSBhIDxsaXRlcmFsPkRFRkFV TFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+ CisgICAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIHRoZSBuZXcgcGFy dGl0aW9ucy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEluIGNhc2UgbmV3 IHBhcnRpdGlvbnMgZG8gbm90IGNvbnRhaW4gYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFs PgorICAgICAgcGFydGl0aW9uIGFuZCB0aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3Qg aGF2ZSBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24sIHRo ZSBmb2xsb3dpbmcgbXVzdCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25z CisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUx PC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBzaG91bGQKKyAgICAgIGJlIGVx dWFsIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIE9uZSBvZiB0 aGUgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuIGhhdmUK KyAgICAgIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAo dGhpcyBpcyBzdWl0YWJsZSBpbiBjYXNlIG9mIHNwbGl0dGluZyBhIDxsaXRlcmFsPkRFRkFV TFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb246IHdlIHNwbGl0IGl0LCBidXQgYWZ0ZXIg c3BsaXR0aW5nIHdlIGhhdmUgYSBwYXJ0aXRpb24gd2l0aCB0aGUKKyAgICAgIHNhbWUgbmFt ZSkuICBPbmx5IHNpbXBsZSwgbm9uLXBhcnRpdGlvbmVkIHBhcnRpdGlvbiBjYW4gYmUgc3Bs aXQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBOZXcgcGFydGl0aW9ucyB3 aWxsIGhhdmUgdGhlIHNhbWUgb3duZXIgYXMgdGhlIHBhcmVudCBwYXJ0aXRpb24uCisgICAg ICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFD TDwvYWNyb255bT4gb24gbmV3CisgICAgICBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgVGhlIGluZGV4ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVk IGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0 aXRpb25zLgorICAgICAgRXh0ZW5kZWQgc3RhdGlzdGljcyBhcmVuJ3QgY29waWVkIGZyb20g dGhlIHBhcmVudCB0YWJsZSwgZm9yIGNvbnNpc3RlbmN5IHdpdGgKKyAgICAgIDxjb21tYW5k PkNSRUFURSBUQUJMRSBQQVJUSVRJT04gT0Y8L2NvbW1hbmQ+LgorICAgICAgTmV3IHBhcnRp dGlvbnMgd2lsbCBpbmhlcml0IHRoZSBzYW1lIHRhYmxlIGFjY2VzcyBtZXRob2QsIHBlcnNp c3RlbmNlCisgICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBhcyB0aGUgcGFyZW50IHRhYmxl LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hlbiBwYXJ0aXRpb24gaXMg c3BsaXQsIGFueSBpbmRpdmlkdWFsIG9iamVjdHMgYmVsb25naW5nIHRvIHRoaXMKKyAgICAg IHBhcnRpdGlvbiwgc3VjaCBhcyBjb25zdHJhaW50cyBvciBzdGF0aXN0aWNzIHdpbGwgYmUg ZHJvcHBlZC4gVGhpcyBjY3VycworICAgICAgYmVjYXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJM RSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxl IGl0c2VsZgorICAgICAgYXMgdGhlIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3Rz LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgc3BsaXQgcGFydGl0aW9u IGhhcyBzb21lIG9iamVjdHMgZGVwZW5kZW50IG9uIGl0LCB0aGUgY29tbWFuZCBjYW4KKyAg ICAgIG5vdCBiZSBkb25lICg8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpcyBub3QgdXNl ZCwgYW4gZXJyb3Igd2lsbCBiZSByZXR1cm5lZCkuCisgICAgIDwvcGFyYT4KKyAgICAgPG5v dGU+CisgICAgICA8cGFyYT4KKyAgICAgICBTcGxpdCBwYXJ0aXRpb24gYWNxdWlyZXMgYSA8 bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCisgICAgICAgdGhl IHBhcmVudCB0YWJsZSwgaW4gYWRkaXRpb24gdG8gdGhlIDxsaXRlcmFsPkFDQ0VTUyBFWENM VVNJVkU8L2xpdGVyYWw+CisgICAgICAgbG9jayBvbiB0aGUgdGFibGUgYmVpbmcgc3BsaXQu CisgICAgICA8L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLW1l cmdlLXBhcnRpdGlvbnMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlMg KDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgog CkBAIC0xMjQ0LDcgKzEzMTMsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAg QWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gdGhhdCBh Y3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9saXRl cmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0ZXJhbD5BVFRB Q0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0 ZXJhbD4sCi0gICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2Fu IGJlIGNvbWJpbmVkIGludG8KKyAgIDxsaXRlcmFsPlNQTElUIFBBUlRJVElPTjwvbGl0ZXJh bD4sIGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TPC9saXRlcmFsPgorICAgY2FuIGJl IGNvbWJpbmVkIGludG8KICAgIGEgbGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBi ZSBhcHBsaWVkIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0 byBhZGQgc2V2ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFs CiAgICBjb2x1bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJs eSB1c2VmdWwgd2l0aCBsYXJnZQpAQCAtMTQ4OCw3ICsxNTU4LDcgQEAgV0lUSCAoIE1PRFVM VVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVw bGFjZWFibGU+LCBSRU0KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAg ICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24g b3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKLSAgICAgICAgb3IgdGhlIG5hbWUgb2Yg dGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAgICBvciB0aGUgbmFtZSBvZiBzcGxp dCBwYXJ0aXRpb24sIG9yIHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4K ICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KQEAgLTE5MjEsNiArMTk5MSwyNCBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAg IERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1saXN0 aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2luZ2xlIHBhcnRpdGlv biBvZiB0aGUgcmFuZ2UtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIzIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMyBGT1IgVkFMVUVTIEZS T00gKCcyMDIzLTAyLTAxJykgVE8gKCcyMDIzLTAzLTAxJyksCisgICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wMy0wMScpIFRPICgnMjAyMy0w NC0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIzIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjMtMDQtMDEnKSBUTyAoJzIwMjMtMDUtMDEnKSk7Cis8L3Byb2dyYW1saXN0aW5nPjwv cGFyYT4KKworICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0 aGUgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAgIDxwYXJhPgogICAgVG8gbWVyZ2Ugc2V2 ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxl OgogPHByb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA3 ZTc3MDNjNzk5Li5mNWNkMDlkM2VkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtNzQyLDYgKzc0Miw5IEBAIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lk IGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKIHN0YXRpYyB2b2lkIEFU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJU YWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIEFURXhlY1NwbGl0 UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJ CQkJIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCisJCQkJCQkJCSBBbHRlclRh YmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVm aW5lUmVsYXRpb24KQEAgLTQ4NDAsNiArNDg0MywxMCBAQCBBbHRlclRhYmxlR2V0TG9ja0xl dmVsKExpc3QgKmNtZHMpCiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9j azsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQljbWRf bG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQlkZWZh dWx0OgkJCS8qIG9vcHMgKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVy IHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC01Mjgw LDYgKzUyODcsMTEgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwg QWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJyZWFrOworCQljYXNlIEFU X1NwbGl0UGFydGl0aW9uOgorCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUs IHJlbCwgQVRUX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCS8qIE5vIGNvbW1hbmQtc3BlY2lm aWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CisJCQlicmVhazsK IAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBA IC01Njg0LDYgKzU2OTYsMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwKIAkJCUFURXhlY01lcmdlUGFydGl0aW9ucyh3cXVldWUsIHRhYiwg cmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAogCQkJCQkJCQkgIGNvbnRleHQpOwog CQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQljbWQgPSBBVFBhcnNl VHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAor CQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwp OworCQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpOworCQkJQVRFeGVjU3BsaXRQYXJ0aXRpb24od3F1ZXVlLCB0YWIsIHJlbCwg KFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJIGNvbnRleHQpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUp OwpAQCAtNjcyNiw2ICs2NzQ2LDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0 ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4g RklOQUxJWkUiOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCXJldHVybiAiTUVS R0UgUEFSVElUSU9OUyI7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlyZXR1cm4g IlNQTElUIFBBUlRJVElPTiI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlyZXR1cm4g IkFMVEVSIENPTFVNTiAuLi4gQUREIElERU5USVRZIjsKIAkJY2FzZSBBVF9TZXRJZGVudGl0 eToKQEAgLTIyODg4LDMgKzIyOTEwLDQ0NCBAQCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJLyog UmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICovCiAJU2V0VXNlcklkQW5k U2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7CiB9CisKKworLyoK KyAqIFN0cnVjdCB3aXRoIGNvbnRleHQgb2YgbmV3IHBhcnRpdGlvbiBmb3IgaW5zZXJ0aW5n IHJvd3MgZnJvbSBzcGxpdCBwYXJ0aXRpb24KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3BsaXRQ YXJ0aXRpb25Db250ZXh0Cit7CisJRXhwclN0YXRlICAqcGFydHF1YWxzdGF0ZTsJLyogZXhw cmVzc2lvbiBmb3IgY2hlY2tpbmcgc2xvdCBmb3IgcGFydGl0aW9uCisJCQkJCQkJCSAqIChO VUxMIGZvciBERUZBVUxUIHBhcnRpdGlvbikgKi8KKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0 ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRh YmxlU2xvdCAqZHN0c2xvdDsJLyogc2xvdCBmb3IgaW5zZXJ0aW5nIHJvdyBpbnRvIHBhcnRp dGlvbiAqLworCUFsdGVyZWRUYWJsZUluZm8gKnRhYjsJCS8qIHN0cnVjdG9yZSB3aXRoIGdl bmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lvbnMKKwkJCQkJCQkJICogYW5kIGNoZWNrIGNvbnN0 cmFpbnQgZXhwcmVzc3Npb25zLiAqLworCVJlbGF0aW9uCXBhcnRSZWw7CQkvKiByZWxhdGlv biBmb3IgcGFydGl0aW9uICovCit9IFNwbGl0UGFydGl0aW9uQ29udGV4dDsKKworLyoKKyAq IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogY3JlYXRlIGNvbnRleHQgZm9yIHBhcnRp dGlvbiBhbmQgZmlsbCBpdAorICovCitzdGF0aWMgU3BsaXRQYXJ0aXRpb25Db250ZXh0ICoK K2NyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChSZWxhdGlvbiBwYXJ0UmVsKQoreworCVNw bGl0UGFydGl0aW9uQ29udGV4dCAqcGM7CisKKwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRl eHQgKikgcGFsbG9jMChzaXplb2YoU3BsaXRQYXJ0aXRpb25Db250ZXh0KSk7CisJcGMtPnBh cnRSZWwgPSBwYXJ0UmVsOworCisJLyoKKwkgKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0YXRl IGZvciB0YWJsZV90dXBsZV9pbnNlcnQuIFRoZSBGU00gaXMgZW1wdHksIHNvCisJICogZG9u J3QgYm90aGVyIHVzaW5nIGl0LgorCSAqLworCXBjLT5iaXN0YXRlID0gR2V0QnVsa0luc2Vy dFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgdHVwbGUgc2xvdCBmb3IgbmV3IHBhcnRpdGlvbi4g Ki8KKwlwYy0+ZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHBjLT5wYXJ0UmVsLCBOVUxM KTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAqIGRlbGV0ZVNwbGl0UGFydGl0aW9uQ29u dGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgorICovCitzdGF0aWMgdm9pZAor ZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMs IExpc3QgKip3cXVldWUsIGludCB0aV9vcHRpb25zKQoreworCUxpc3RDZWxsICAgKmx0YWI7 CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHBjLT5kc3RzbG90KTsKKwlGcmVl QnVsa0luc2VydFN0YXRlKHBjLT5iaXN0YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2lu c2VydChwYy0+cGFydFJlbCwgdGlfb3B0aW9ucyk7CisKKwkvKgorCSAqIFdlIGRvbid0IG5l ZWQgcHJvY2VzcyB0aGlzIHBjLT5wYXJ0UmVsIHNvIGRlbGV0ZSB0aGUgQUxURVIgVEFCTEUg cXVldWUKKwkgKiBvZiBpdC4KKwkgKi8KKwlmb3JlYWNoKGx0YWIsICp3cXVldWUpCisJewor CQlBbHRlcmVkVGFibGVJbmZvICp0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBsZmlyc3Qo bHRhYik7CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRS ZWwpKQorCQkJKndxdWV1ZSA9IGxpc3RfZGVsZXRlX2NlbGwoKndxdWV1ZSwgbHRhYik7CisJ fQorCisJcGZyZWUocGMpOworfQorCisvKgorICogbW92ZVNwbGl0VGFibGVSb3dzOiBzY2Fu IHNwbGl0IHBhcnRpdGlvbiAoc3BsaXRSZWwpIG9mIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAo cmVsKSBhbmQgbW92ZSByb3dzIGludG8gbmV3IHBhcnRpdGlvbnMuCisgKgorICogTmV3IHBh cnRpdGlvbnMgZGVzY3JpcHRpb246CisgKiBwYXJ0bGlzdDogbGlzdCBvZiBwb2ludGVycyB0 byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHVyZXMuCisgKiBuZXdQYXJ0UmVsczogbGlz dCBvZiBSZWxhdGlvbnMuCisgKiBkZWZhdWx0UGFydE9pZDogb2lkIG9mIERFRkFVTFQgcGFy dGl0aW9uLCBmb3IgdGFibGUgcmVsLgorICovCitzdGF0aWMgdm9pZAorbW92ZVNwbGl0VGFi bGVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWws IExpc3QgKnBhcnRsaXN0LCBMaXN0ICpuZXdQYXJ0UmVscywgT2lkIGRlZmF1bHRQYXJ0T2lk KQoreworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4g Ki8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOworCUNvbW1h bmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy LAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4cHJD b250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJc25h cHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRleHRz ID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0 aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCWJvb2wJ CWlzT2xkRGVmYXVsdFBhcnQgPSBmYWxzZTsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1h bmRJZCh0cnVlKTsKKworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWZv cmJvdGgobGlzdHB0ciwgcGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxm aXJzdChsaXN0cHRyKTsKKworCQlwYyA9IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dCgo UmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMikpOworCisJCS8qIEZpbmQgdGhlIHdvcmsgcXVl dWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJCXBj LT50YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCBwYy0+cGFydFJlbCk7CisKKwkJYnVp bGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKHBjLT50YWIsIHBjLT5wYXJ0UmVsLCBlc3Rh dGUpOworCisJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQl7CisJCQkvKiBXZSBz aG91bGQgbm90IGNyZWF0ZSBjb25zdHJhaW50IGZvciBkZXRhY2hlZCBERUZBVUxUIHBhcnRp dGlvbi4gKi8KKwkJCWRlZmF1bHRQYXJ0Q3R4ID0gcGM7CisJCX0KKwkJZWxzZQorCQl7CisJ CQlMaXN0CSAgICpwYXJ0Q29uc3RyYWludDsKKworCQkJLyogQnVpbGQgZXhwcmVzc2lvbiBl eGVjdXRpb24gc3RhdGVzIGZvciBwYXJ0aXRpb24gY2hlY2sgcXVhbHMuICovCisJCQlwYXJ0 Q29uc3RyYWludCA9IGdldF9xdWFsX2Zyb21fcGFydGJvdW5kKHJlbCwgc3BzLT5ib3VuZCk7 CisJCQlwYXJ0Q29uc3RyYWludCA9CisJCQkJKExpc3QgKikgZXZhbF9jb25zdF9leHByZXNz aW9ucyhOVUxMLAorCQkJCQkJCQkJCQkJKE5vZGUgKikgcGFydENvbnN0cmFpbnQpOworCQkJ LyogTWFrZSBib29sZWFuIGV4cHJlc3Npb24gZm9yIEV4ZWNDaGVjaygpLiAqLworCQkJcGFy dENvbnN0cmFpbnQgPSBsaXN0X21ha2UxKG1ha2VfYW5kc19leHBsaWNpdChwYXJ0Q29uc3Ry YWludCkpOworCisJCQkvKgorCQkJICogTWFwIHRoZSB2YXJzIGluIHRoZSBjb25zdHJhaW50 IGV4cHJlc3Npb24gZnJvbSByZWwncyBhdHRub3MgdG8KKwkJCSAqIHNwbGl0UmVsJ3MuCisJ CQkgKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbWFwX3BhcnRpdGlvbl92YXJhdHRub3MocGFy dENvbnN0cmFpbnQsCisJCQkJCQkJCQkJCQkJIDEsIHNwbGl0UmVsLCByZWwpOworCisJCQlw Yy0+cGFydHF1YWxzdGF0ZSA9CisJCQkJRXhlY1ByZXBhcmVFeHByKChFeHByICopIGxpbml0 aWFsKHBhcnRDb25zdHJhaW50KSwgZXN0YXRlKTsKKwkJCUFzc2VydChwYy0+cGFydHF1YWxz dGF0ZSAhPSBOVUxMKTsKKwkJfQorCisJCS8qIFN0b3JlIHBhcnRpdGlvbiBjb250ZXh0IGlu dG8gbGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFwcGVuZChwYXJ0Q29udGV4dHMsIHBj KTsKKwl9CisKKwkvKgorCSAqIENyZWF0ZSBwYXJ0aXRpb24gY29udGV4dCBmb3IgREVGQVVM VCBwYXJ0aXRpb24uIFdlIGNhbiBpbnNlcnQgdmFsdWVzCisJICogaW50byB0aGlzIHBhcnRp dGlvbiBpbiBjYXNlIHNwYWNlcyB3aXRoIHZhbHVlcyBiZXR3ZWVuIG5ldyBwYXJ0aXRpb25z LgorCSAqLworCWlmICghZGVmYXVsdFBhcnRDdHggJiYgT2lkSXNWYWxpZChkZWZhdWx0UGFy dE9pZCkpCisJeworCQkvKiBJbmRpY2F0ZSB0aGF0IHdlIGFsbG9jYXRlIGNvbnRleHQgZm9y IG9sZCBERUZBVUxUIHBhcnRpdGlvbiAqLworCQlpc09sZERlZmF1bHRQYXJ0ID0gdHJ1ZTsK KwkJZGVmYXVsdFBhcnRDdHggPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQodGFibGVf b3BlbihkZWZhdWx0UGFydE9pZCwgQWNjZXNzRXhjbHVzaXZlTG9jaykpOworCisJCS8qIEZp bmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIGRlZmF1bHQgcGFydGl0aW9uIHRhYmxlLiAq LworCQlkZWZhdWx0UGFydEN0eC0+dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgZGVm YXVsdFBhcnRDdHgtPnBhcnRSZWwpOworCX0KKworCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVF eHByQ29udGV4dChlc3RhdGUpOworCisJLyogQ3JlYXRlIG5lY2Vzc2FyeSB0dXBsZSBzbG90 LiAqLworCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShzcGxpdFJlbCwgTlVMTCk7CisK KwkvKgorCSAqIE1hcCBjb21wdXRpbmcgZm9yIG1vdmluZyBhdHRyaWJ1dGVzIG9mIHNwbGl0 IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9uCisJICogKGZvciBmaXJzdCBuZXcgcGFydGl0 aW9uLCBidXQgb3RoZXIgbmV3IHBhcnRpdGlvbnMgY2FuIHVzZSB0aGUgc2FtZQorCSAqIG1h cCkuCisJICovCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0 X2hlYWQocGFydENvbnRleHRzKSk7CisJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlf bmFtZShSZWxhdGlvbkdldERlc2NyKHNwbGl0UmVsKSwKKwkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0RGVzY3IocGMtPnBhcnRSZWwpKTsKKworCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4g Ki8KKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7 CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihzcGxpdFJlbCwgc25hcHNob3QsIDAsIE5VTEwp OworCisJLyoKKwkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCBy ZXNldCBpdCBmb3IgZWFjaCB0dXBsZQorCSAqIHByb2R1Y2VkLCBzbyB3ZSBkb24ndCBsZWFr IG1lbW9yeS4KKwkgKi8KKwlvbGRDeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVy VHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOworCisJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0 bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNyY3Nsb3QpKQorCXsKKwkJ Ym9vbAkJZm91bmQgPSBmYWxzZTsKKwkJVHVwbGVUYWJsZVNsb3QgKmluc2VydHNsb3Q7CisK KwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQllY29udGV4dC0+ZWN4dF9zY2FudHVw bGUgPSBzcmNzbG90OworCisJCS8qIFNlYXJjaCBwYXJ0aXRpb24gZm9yIGN1cnJlbnQgc2xv dCBzcmNzbG90LiAqLworCQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJewor CQkJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0cHRyKTsKKwor CQkJaWYgKHBjLT5wYXJ0cXVhbHN0YXRlIC8qIHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8g JiYKKwkJCQlFeGVjQ2hlY2socGMtPnBhcnRxdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCXsK KwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlSZXNldEV4cHJDb250 ZXh0KGVjb250ZXh0KTsKKwkJfQorCQlpZiAoIWZvdW5kKQorCQl7CisJCQkvKiBVc2UgREVG QVVMVCBwYXJ0aXRpb24gaWYgaXQgZXhpc3RzLiAqLworCQkJaWYgKGRlZmF1bHRQYXJ0Q3R4 KQorCQkJCXBjID0gZGVmYXVsdFBhcnRDdHg7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19WSU9MQVRJT04pLAorCQkJCQkJZXJy bXNnKCJjYW4gbm90IGZpbmQgcGFydGl0aW9uIGZvciBzcGxpdCBwYXJ0aXRpb24gcm93Iiks CisJCQkJCQllcnJ0YWJsZShzcGxpdFJlbCkpOworCQl9CisKKwkJaWYgKHR1cGxlX21hcCkK KwkJeworCQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJ CWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QodHVwbGVfbWFwLT5hdHRyTWFw LCBzcmNzbG90LCBwYy0+ZHN0c2xvdCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBFeHRy YWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUuICovCisJCQlzbG90X2dldGFsbGF0dHJzKHNyY3Ns b3QpOworCisJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQlpbnNlcnRz bG90ID0gcGMtPmRzdHNsb3Q7CisKKwkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOwor CisJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVl cywKKwkJCQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQlt ZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJ CQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJRXhlY1N0 b3JlVmlydHVhbFR1cGxlKGluc2VydHNsb3QpOworCQl9CisKKwkJLyoKKwkJICogQ29uc3Ry YWludHMgYW5kIEdFTkVSQVRFRCBleHByZXNzaW9ucyBtaWdodCByZWZlcmVuY2UgdGhlIHRh Ymxlb2lkCisJCSAqIGNvbHVtbiwgc28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVz aXJlZCB2YWx1ZS4gKFdlIG11c3QgZG8KKwkJICogdGhpcyBlYWNoIHRpbWUsIGJlY2F1c2Ug aXQgZ2V0cyBvdmVyd3JpdHRlbiB3aXRoIG5ld3JlbCdzIE9JRCBkdXJpbmcKKwkJICogc3Rv cmluZy4pCisJCSAqLworCQlpbnNlcnRzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHBjLT5wYXJ0UmVsKTsKKworCQkvKgorCQkgKiBOb3csIGV2YWx1YXRlIGFueSBn ZW5lcmF0ZWQgZXhwcmVzc2lvbnMgd2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorCQkgKiB0aGUg bmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRoZXNlIGNvbHVtbnMgd29uJ3QgcmVmZXJlbmNlIGVh Y2gKKwkJICogb3RoZXIsIHNvIHRoYXQgdGhlcmUncyBubyBvcmRlcmluZyBkZXBlbmRlbmN5 LgorCQkgKi8KKwkJZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3Ry YWludHMocGMtPnRhYiwgcGMtPnBhcnRSZWwsCisJCQkJCQkJCQkJCQkJCWluc2VydHNsb3Qs IGVjb250ZXh0KTsKKworCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVs YXRpb24uICovCisJCXRhYmxlX3R1cGxlX2luc2VydChwYy0+cGFydFJlbCwgaW5zZXJ0c2xv dCwgbXljaWQsCisJCQkJCQkgICB0aV9vcHRpb25zLCBwYy0+YmlzdGF0ZSk7CisKKwkJUmVz ZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZEN4dCk7CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4pOworCVVucmVnaXN0ZXJTbmFwc2hv dChzbmFwc2hvdCk7CisKKwlpZiAodHVwbGVfbWFwKQorCQlmcmVlX2NvbnZlcnNpb25fbWFw KHR1cGxlX21hcCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3Qp OworCisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKworCWZvcmVhY2hfcHRyKFNwbGl0 UGFydGl0aW9uQ29udGV4dCwgc3BjLCBwYXJ0Q29udGV4dHMpCisJCWRlbGV0ZVNwbGl0UGFy dGl0aW9uQ29udGV4dChzcGMsIHdxdWV1ZSwgdGlfb3B0aW9ucyk7CisKKwkvKiBOZWVkIHRv IGNsb3NlIHRhYmxlIGFuZCBmcmVlIGJ1ZmZlcnMgZm9yIERFRkFVTFQgcGFydGl0aW9uLiAq LworCWlmIChpc09sZERlZmF1bHRQYXJ0KQorCXsKKwkJUmVsYXRpb24JZGVmYXVsdFBhcnRS ZWwgPSBkZWZhdWx0UGFydEN0eC0+cGFydFJlbDsKKworCQlkZWxldGVTcGxpdFBhcnRpdGlv bkNvbnRleHQoZGVmYXVsdFBhcnRDdHgsIHdxdWV1ZSwgdGlfb3B0aW9ucyk7CisJCS8qIEtl ZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShkZWZhdWx0UGFy dFJlbCwgTm9Mb2NrKTsKKwl9Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BM SVQgUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gSU5UTyA8cGFydGl0aW9uLWxpc3Q+Cisg Ki8KK3N0YXRpYyB2b2lkCitBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJIFBhcnRpdGlvbkNt ZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRp b24Jc3BsaXRSZWw7CisJT2lkCQkJc3BsaXRSZWxPaWQ7CisJY2hhcgkJcmVsbmFtZVtOQU1F REFUQUxFTl07CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwli b29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxF Tl07CisJTGlzdAkgICAqbmV3UGFydFJlbHMgPSBOSUw7CisJT2JqZWN0QWRkcmVzcyBvYmpl Y3Q7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJc2F2ZV91c2VyaWQ7CisJaW50 CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKworCWRlZmF1 bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQ YXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyoKKwkgKiBXZSBhcmUgZ29pbmcgdG8g ZGV0YWNoIGFuZCByZW1vdmUgdGhpcyBwYXJ0aXRpb246IG5lZWQgdG8gdXNlIGV4Y2x1c2l2 ZQorCSAqIGxvY2sgZm9yIHByZXZlbnRpbmcgRE1MLXF1ZXJpZXMgdG8gdGhlIHBhcnRpdGlv bi4KKwkgKi8KKwlzcGxpdFJlbCA9IHRhYmxlX29wZW5ydihjbWQtPm5hbWUsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOworCisJc3BsaXRSZWxPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHNwbGl0 UmVsKTsKKworCS8qIENoZWNrIGRlc2NyaXB0aW9ucyBvZiBuZXcgcGFydGl0aW9ucy4gKi8K Kwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBjbWQtPnBhcnRsaXN0 KQorCXsKKwkJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKworCQlzdHJsY3B5KHJlbG5hbWUsIHNw cy0+bmFtZS0+cmVsbmFtZSwgTkFNRURBVEFMRU4pOworCisJCS8qCisJCSAqIExvb2sgdXAg ZXhpc3RpbmcgcmVsYXRpb24gYnkgbmV3IHBhcnRpdGlvbiBuYW1lLCBjaGVjayB3ZSBoYXZl CisJCSAqIHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0IGFnYWluc3QgY29u Y3VycmVudCBkcm9wLCBhbmQgbWFyaworCQkgKiBzdG10LT5yZWxhdGlvbiBhcyBSRUxQRVJT SVNURU5DRV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcworCQkgKiBzZWxlY3Rl ZC4KKwkJICovCisJCXNwcy0+bmFtZS0+cmVscGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+ cmVscGVyc2lzdGVuY2U7CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFj ZShzcHMtPm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRo aXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkg ZXhpc3RzLiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5p Y2VyIGVycm9yIG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxp dFJlbE9pZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBo YXZlIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFt ZSA9IHRydWU7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwK KwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1l KSk7CisJfQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0 aXRpb25UYWJsZShyZWwsIHNwbGl0UmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAq IFBlcmZvcm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdz IHNhZmUgdG8gZHJvcCBhbGwKKwkgKiBtZXJnaW5nIHBhcnRpdGlvbnMgYmVmb3JlIHdlIGFj dHVhbGx5IGRvIHNvIGxhdGVyLiBBZnRlciBtZXJnaW5nIHJvd3MKKwkgKiBpbnRvIHRoZSBu ZXcgcGFydGl0aW9ucyB2aWEgbW92ZU1lcmdlZFRhYmxlc1Jvd3MsIGFsbCBvbGQgcGFydGl0 aW9ucyBuZWVkCisJICogYmUgZHJvcHBlZC4gSG93ZXZlciwgc2luY2UgdGhlIGRyb3AgYmVo YXZpb3IgaXMgRFJPUF9SRVNUUklDVCBhbmQgdGhlCisJICogbWVyZ2UgcHJvY2VzcyAobW92 ZU1lcmdlZFRhYmxlc1Jvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywgcGVyZm9ybWluZyBh bgorCSAqIGVhcmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0 aXRpb25zIGlzIHByZWZlcmFibGUuCisJICovCisJb2JqZWN0Lm9iamVjdElkID0gc3BsaXRS ZWxPaWQ7CisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2JqZWN0 Lm9iamVjdFN1YklkID0gMDsKKwlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2JqZWN0LCBEUk9Q X1JFU1RSSUNULCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKKworCS8qCisJICogSWYg bmV3IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24gdGhl biB3ZSBzaG91bGQKKwkgKiByZW5hbWUgc3BsaXQgcGFydGl0aW9uIGZvciByZXVzaW5nIG5h bWUuCisJICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGJ1 bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVw bGUKKwkJICogdmlzaWJsZSBmb3IgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOworCQkvKiBSZW5hbWUgcGFydGl0aW9uLiAqLworCQlzcHJpbnRmKHRt cFJlbE5hbWUsICJzcGxpdC0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15 UHJvY1BpZCk7CisJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoc3BsaXRSZWxPaWQsIHRtcFJl bE5hbWUsIHRydWUsIGZhbHNlKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNv bW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICog dmlzaWJsZSBhZnRlciByZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CisJfQorCisJLyogQ3JlYXRlIG5ldyBwYXJ0aXRpb25zIChsaWtlIHNwbGl0IHBh cnRpdGlvbiksIHdpdGhvdXQgaW5kZXhlcy4gKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFy dGl0aW9uU3BlYywgc3BzLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbmV3UGFy dFJlbDsKKworCQluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUod3F1ZXVlLCBz cHMtPm5hbWUsIHJlbCwKKwkJCQkJCQkJCQkgIHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVy KTsKKwkJbmV3UGFydFJlbHMgPSBsYXBwZW5kKG5ld1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsK Kwl9CisKKwkvKgorCSAqIFN3aXRjaCB0byB0aGUgdGFibGUgb3duZXIncyB1c2VyaWQsIHNv IHRoYXQgYW55IGluZGV4IGZ1bmN0aW9ucyBhcmUgcnVuCisJICogYXMgdGhhdCB1c2VyLiAg QWxzbyBsb2NrIGRvd24gc2VjdXJpdHktcmVzdHJpY3RlZCBvcGVyYXRpb25zIGFuZAorCSAq IGFycmFuZ2UgdG8gbWFrZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0byB0aGlzIGNv bW1hbmQuCisJICoKKwkgKiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRldGVybWluZSBuYW1lc3Bh Y2UgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUgY2FsbC4KKwkgKi8KKwlHZXRVc2VySWRBbmRT ZWNDb250ZXh0KCZzYXZlX3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOworCVNldFVzZXJJ ZEFuZFNlY0NvbnRleHQoc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIsCisJCQkJCQkgICBz YXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOworCXNh dmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRo KCk7CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRp dGlvbnMuICovCisJbW92ZVNwbGl0VGFibGVSb3dzKHdxdWV1ZSwgcmVsLCBzcGxpdFJlbCwg Y21kLT5wYXJ0bGlzdCwgbmV3UGFydFJlbHMsIGRlZmF1bHRQYXJ0T2lkKTsKKwkvKiBLZWVw IHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9M b2NrKTsKKworCS8qIEF0dGFjaCBuZXcgcGFydGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJs ZS4gKi8KKwlmb3Jib3RoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQ YXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0 aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbCA9 IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKTsKKworCQkvKgorCQkgKiB3cXVldWUgPSBO VUxMOiB2ZXJpZmljYXRpb24gZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90CisJ CSAqIG5lZWRlZC4KKwkJICovCisJCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwg bmV3UGFydFJlbCwgc3BzLT5ib3VuZCk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29t bWl0LiAqLworCQl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8q IERyb3Agc3BsaXQgcGFydGl0aW9uLiAqLworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25S ZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5v YmplY3RTdWJJZCA9IDA7CisJLyogUHJvYmFibHkgRFJPUF9DQVNDQURFIGlzIG5vdCBuZWVk ZWQuICovCisJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOwor CisJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5j dGlvbnMuICovCisJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkv KiBSZXN0b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KKwlTZXRVc2VySWRB bmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IDQ2YmJkY2JjNzQuLmFlZDc5YjYzZGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtMjU3LDYgKzI1Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUGFydGl0 aW9uRWxlbSAqcGFydGVsZW07CiAJUGFydGl0aW9uU3BlYyAqcGFydHNwZWM7CiAJUGFydGl0 aW9uQm91bmRTcGVjICpwYXJ0Ym91bmRzcGVjOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNp bmdsZXBhcnRzcGVjOwogCVJvbGVTcGVjICAgKnJvbGVzcGVjOwogCVB1YmxpY2F0aW9uT2Jq U3BlYyAqcHVibGljYXRpb25vYmplY3RzcGVjOwogCXN0cnVjdCBTZWxlY3RMaW1pdCAqc2Vs ZWN0bGltaXQ7CkBAIC02NDAsNiArNjQxLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKICV0eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlwZSA8bGlzdD4JCXBhcnRfcGFy YW1zCiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCisldHlwZSA8 c2luZ2xlcGFydHNwZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMKKyV0eXBlIDxsaXN0PgkJcGFy dGl0aW9uc19saXN0CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVm ZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQogCkBAIC03NzAsNyArNzczLDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFT IFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VMRUNUCiAJU0VRVUVOQ0UgU0VR VUVOQ0VTCiAJU0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQg U0VUUyBTRVRPRiBTSEFSRSBTSE9XCi0JU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBT TkFQU0hPVCBTT01FIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCisJU0lNSUxB UiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNQTElUIFNPVVJDRSBTUUxf UCBTVEFCTEUgU1RBTkRBTE9ORV9QCiAJU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RE SU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklOR19QIFNUUklQX1AKIAlT VUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RFTV9Q IFNZU1RFTV9VU0VSCiAKQEAgLTIzMjEsNiArMjMyNCwyMyBAQCBhbHRlcl90YWJsZV9jbWRz OgogCQkJfCBhbHRlcl90YWJsZV9jbWRzICcsJyBhbHRlcl90YWJsZV9jbWQJeyAkJCA9IGxh cHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK3BhcnRpdGlvbnNfbGlzdDoKKwkJCVNpbmdsZVBh cnRpdGlvblNwZWMJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHBhcnRp dGlvbnNfbGlzdCAnLCcgU2luZ2xlUGFydGl0aW9uU3BlYwl7ICQkID0gbGFwcGVuZCgkMSwg JDMpOyB9CisJCTsKKworU2luZ2xlUGFydGl0aW9uU3BlYzoKKwkJCVBBUlRJVElPTiBxdWFs aWZpZWRfbmFtZSBQYXJ0aXRpb25Cb3VuZFNwZWMKKwkJCQl7CisJCQkJCVNpbmdsZVBhcnRp dGlvblNwZWMgKm4gPSBtYWtlTm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjKTsKKworCQkJCQlu LT5uYW1lID0gJDI7CisJCQkJCW4tPmJvdW5kID0gJDM7CisKKwkJCQkJJCQgPSBuOworCQkJ CX0KKwkJOworCiBwYXJ0aXRpb25fY21kOgogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFU VEFDSCBQQVJUSVRJT04gPHRhYmxlX25hbWU+IEZPUiBWQUxVRVMgKi8KIAkJCUFUVEFDSCBQ QVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yMzY1LDYg KzIzODUsMjAgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21k OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5h bWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uX25hbWU+IElOVE8gKCkgKi8KKwkJCXwg U1BMSVQgUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIElOVE8gJygnIHBhcnRpdGlvbnNfbGlz dCAnKScKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRh YmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25D bWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9TcGxpdFBhcnRpdGlvbjsKKwkJCQkJY21k LT5uYW1lID0gJDM7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRs aXN0ID0gJDY7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYg PSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQkvKiBB TFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25f bmFtZT4gKi8KIAkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlz dCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQogCQkJCXsKQEAgLTE3OTYzLDYgKzE3OTk3LDcg QEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBTS0lQCiAJCQl8IFNOQVBTSE9UCiAJCQl8 IFNPVVJDRQorCQkJfCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwgU1RB TkRBTE9ORV9QCkBAIC0xODYwMyw2ICsxODYzOCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgU05BUFNIT1QKIAkJCXwgU09NRQogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJ CXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKaW5kZXggZGEyOTE5ODY0NC4uY2IzNTZjYWJjOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGlj IHZvaWQgdHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs CiAJCQkJCQkJCQkgTGlzdCAqY29uc3RyYWludExpc3QpOwogc3RhdGljIHZvaWQgdHJhbnNm b3JtQ29sdW1uVHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVt bik7CiBzdGF0aWMgdm9pZCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRfc2No ZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQp Oworc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0 ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRyYW5z Zm9ybVBhcnRpdGlvblJhbmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxp c3QsCiAJCQkJCQkJCQkJICAgUmVsYXRpb24gcGFyZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlk YXRlSW5maW5pdGVCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCk7CkBA IC0zNTI5LDYgKzM1MjksMzcgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQg cGFydFJlbE9pZCkKIAlyZWxhdGlvbl9jbG9zZShwYXJ0UmVsLCBBY2Nlc3NTaGFyZUxvY2sp OwogfQogCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFs eXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqCisg KiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFu c2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqIERvZXMgY2hlY2tzIGZvciBib3VuZHMgb2Yg bmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25D bWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRj bWQpCit7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0 T2lkOworCisJLyogVHJhbnNmb3JtIHBhcnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0aXRp b25zIGluIHRoZSBsaXN0OiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVj LCBzcHMsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsKKwkJY3h0LT5wYXJ0Ym91bmQgPSBOVUxM OworCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoY3h0LCBzcHMtPmJvdW5kKTsKKwkJLyogQXNz aWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91bmQuICovCisJCXNw cy0+Ym91bmQgPSBjeHQtPnBhcnRib3VuZDsKKwl9CisKKwlzcGxpdFBhcnRPaWQgPSBSYW5n ZVZhckdldFJlbGlkKHBhcnRjbWQtPm5hbWUsIEFjY2Vzc1NoYXJlTG9jaywgZmFsc2UpOwor CisJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBzcGxpdFBhcnRPaWQpOworCisJLyogVGhlbiB3 ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8K KwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFydE9pZCwgcGFy dGNtZC0+cGFydGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKworCiAvKgogICogdHJhbnNmb3Jt UGFydGl0aW9uQ21kRm9yTWVyZ2UKICAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCkBAIC0zODg3LDcgKzM5MTgsNyBAQCB0cmFuc2Zv cm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJ CXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQt PmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZCk7CisJ CQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21kLT5ib3VuZCk7CiAJCQkJ CS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgcGFydGl0aW9uIGJvdW5kICov CiAJCQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0LnBhcnRib3VuZDsKIAkJCQl9CkBAIC0zODk1 LDYgKzM5MjYsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVy VGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CiAJCQljYXNlIEFU X01lcmdlUGFydGl0aW9uczoKIAkJCQl7CiAJCQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9 IChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWY7CkBAIC0zOTAzLDcgKzM5MzUsMTEgQEAgdHJh bnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwK IAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCQkJZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0 aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcyIpKTsKLQkJCQkJdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwgcGFydGNtZCk7CisKKwkJCQkJaWYg KGNtZC0+c3VidHlwZSA9PSBBVF9TcGxpdFBhcnRpdGlvbikKKwkJCQkJCXRyYW5zZm9ybVBh cnRpdGlvbkNtZEZvclNwbGl0KCZjeHQsIHBhcnRjbWQpOworCQkJCQllbHNlCisJCQkJCQl0 cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKIAkJCQkJbmV3 Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQpAQCAt NDMzOCwxMyArNDM3NCwxMyBAQCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRf c2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSkKIAogLyoKICAqIHRyYW5zZm9ybVBh cnRpdGlvbkNtZAotICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9OIGNv bW1hbmQKKyAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIL1NQTElUIFBBUlRJVElPTiBj b21tYW5kCiAgKgotICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIIFBBUlRJVElPTiBjb21tYW5k LCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCi0gKiB0cmFuc2Zvcm1lZCB2YWx1ZSBv ZiBjbWQtPmJvdW5kLgorICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIL1NQTElUIFBBUlRJVElP TiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCisgKiB0cmFuc2Zvcm1l ZCB2YWx1ZSBvZiBib3VuZC4KICAqLwogc3RhdGljIHZvaWQKLXRyYW5zZm9ybVBhcnRpdGlv bkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKK3RyYW5z Zm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25Cb3Vu ZFNwZWMgKmJvdW5kKQogewogCVJlbGF0aW9uCXBhcmVudFJlbCA9IGN4dC0+cmVsOwogCkBA IC00MzUzLDkgKzQzODksOSBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENv bnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRToKIAkJCS8qIHRyYW5zZm9ybSB0aGUgcGFydGl0aW9uIGJvdW5kLCBpZiBh bnkgKi8KIAkJCUFzc2VydChSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnRSZWwpICE9 IE5VTEwpOwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJCWlmIChib3VuZCAhPSBO VUxMKQogCQkJCWN4dC0+cGFydGJvdW5kID0gdHJhbnNmb3JtUGFydGl0aW9uQm91bmQoY3h0 LT5wc3RhdGUsIHBhcmVudFJlbCwKLQkJCQkJCQkJCQkJCQkJIGNtZC0+Ym91bmQpOworCQkJ CQkJCQkJCQkJCQkgYm91bmQpOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJ T05FRF9JTkRFWDoKIApAQCAtNDM2Myw3ICs0Mzk5LDcgQEAgdHJhbnNmb3JtUGFydGl0aW9u Q21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQkJICog QSBwYXJ0aXRpb25lZCBpbmRleCBjYW5ub3QgaGF2ZSBhIHBhcnRpdGlvbiBib3VuZCBzZXQu ICBBTFRFUgogCQkJICogSU5ERVggcHJldmVudHMgdGhhdCB3aXRoIGl0cyBncmFtbWFyLCBi dXQgbm90IEFMVEVSIFRBQkxFLgogCQkJICovCi0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxM KQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJCQkgZXJy bXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUiLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggMjY2NGM3YjcwOS4uZjc3ZjNkNmEwMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysg Yi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTg0LDE1ICs0 OTg0LDIxIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdTKQog ICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nKQogICoKLSAqIFRo aXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRf Zm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjaGVja19w YXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICogY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3Vu ZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgdXBwZXIgYm91bmQg b2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCi0gKiBzZWNvbmRfYm91bmQuIFRo ZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKiBzZWNvbmRfYm91bmQuIFRoZXNlIGJv dW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdoZW4KKyAqICJkZWZhdWx0UGFydCA9PSB0 cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0aXRpb25zIGlzIERFRkFV TFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGNhbiBi ZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9ib3VuZCBiZWNhdXNlIHNw YWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5jbHVkZWQgaW4KKyAqIERFRkFV TFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQogICog Zmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCiAgKiBmaXJzdF9ib3VuZDoJ CWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgogICogc2Vjb25kX25hbWU6CQluYW1lIG9mIHNl Y29uZCBwYXJ0aXRpb24KICAqIHNlY29uZF9ib3VuZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRp dGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBvZiBzcGxpdCBwYXJ0aXRpb25z IGlzIERFRkFVTFQKICAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0 IGZvciBkZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgogICovCiBzdGF0aWMgdm9pZApAQCAt NTAwMSw2ICs1MDA3LDcgQEAgY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJl bGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZpcnN0X2Jv dW5kLAogCQkJCQkJCQkgIFJhbmdlVmFyICpzZWNvbmRfbmFtZSwKIAkJCQkJCQkJICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwKKwkJCQkJCQkJICBib29sIGRlZmF1bHRQ YXJ0LAogCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIHsKIAlQYXJ0aXRpb25LZXkg a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKQEAgLTUwMjIsNyArNTAy OSw3IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJl bnQsCiAJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJCQkgIHNlY29uZF9s b3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJCQkJCSAgZmFsc2UsIGZp cnN0X3VwcGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZh bCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQogCXsKIAkJUGFydGl0aW9uUmFu Z2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zKTsK IApAQCAtNTEzMyw3ICs1MTQwLDcgQEAgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3Jf bWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5k U3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAogCQkJCQkJCQkJCQkJCSAg KFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAogCQkJCQkJCQkJCQkJ CSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKLQkJ CQkJCQkJCQkJCQkgIHBzdGF0ZSk7CisJCQkJCQkJCQkJCQkJICBmYWxzZSwgcHN0YXRlKTsK IAkJCQl9CiAKIAkJCQkvKgpAQCAtNTE3MSwzICs1MTc4LDY3MiBAQCBjYWxjdWxhdGVfcGFy dGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJIChpbnQpIGtl eS0+c3RyYXRlZ3kpOwogCX0KIH0KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfbm90X292 ZXJsYXBfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcp CisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tfcGFydGl0aW9u c19mb3Jfc3BsaXQoKS4KKyAqIENoZWNrcyB0aGF0IHRoZSB2YWx1ZXMgb2YgdGhlIG5ldyBw YXJ0aXRpb25zIGRvIG5vdCBvdmVybGFwLgorICoKKyAqIHBhcmVudDoJcGFydGl0aW9uZWQg dGFibGUKKyAqIHBhcnRzOglhcnJheSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHMg d2l0aCBpbmZvIGFib3V0IHNwbGl0IHBhcnRpdGlvbnMKKyAqIG5wYXJ0czoJc2l6ZSBvZiBh cnJheSAicGFydHMiCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25zX25vdF9v dmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlv blNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJCQkgIFBhcnNl U3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5IFBHX1VTRURfRk9SX0FTU0VS VFNfT05MWSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJaW50CQkJb3Zl cmxhcF9sb2NhdGlvbiA9IC0xOworCWludAkJCWksCisJCQkJajsKKwlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHMxLAorCQkJICAgKnNwczI7CisJTGlzdAkgICAqb3ZlcmxhcDsKKworCUFz c2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCWZv ciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCXNwczEgPSBwYXJ0c1tpXTsKKwor CQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsgaisrKQorCQl7CisJCQlzcHMyID0gcGFy dHNbal07CisKKwkJCS8qCisJCQkgKiBDYWxjdWxhdGUgaW50ZXJzZWN0aW9uIGJldHdlZW4g dmFsdWVzIG9mIHR3byBwYXJ0aXRpb25zLgorCQkJICovCisJCQlvdmVybGFwID0gbGlzdF9p bnRlcnNlY3Rpb24oc3BzMS0+Ym91bmQtPmxpc3RkYXR1bXMsCisJCQkJCQkJCQkJc3BzMi0+ Ym91bmQtPmxpc3RkYXR1bXMpOworCQkJaWYgKGxpc3RfbGVuZ3RoKG92ZXJsYXApID4gMCkK KwkJCXsKKwkJCQlDb25zdAkgICAqdmFsID0gKENvbnN0ICopIGxmaXJzdChsaXN0X2hlYWQo b3ZlcmxhcCkpOworCisJCQkJb3ZlcmxhcF9sb2NhdGlvbiA9IHZhbC0+bG9jYXRpb247CisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgd291 bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJ CSAgIHNwczEtPm5hbWUtPnJlbG5hbWUsIHNwczItPm5hbWUtPnJlbG5hbWUpLAorCQkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCQkJfQor CQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRf cmFuZ2UKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlvbmluZykKKyAq CisgKiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiAic3BlYyIgYXJlIGlu c2lkZSBib3VuZHMgb2Ygc3BsaXQKKyAqIHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0 T2lkKS4gSWYgZmlyc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBpcworICogdGhl IGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zKSB0aGVuIGxvd2VyIGJvdW5kIG9mICJzcGVjIiBz aG91bGQgYmUgZXF1YWwgKG9yCisgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgaW4gY2FzZSBk ZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdAorICogcGFydGl0aW9u LiBJZiBsYXN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMgdGhlIGxhc3Qgb2Yg bmV3CisgKiBwYXJ0aXRpb25zKSB0aGVuIHVwcGVyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQg YmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvcgorICogZXF1YWwgaW4gY2FzZSBkZWZhdWx0UGFy dD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisgKgorICogcGFy ZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUgb2YgdGhlIG5l dyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG5l dyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICog Zmlyc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGZpcnN0IG9m IG5ldyBwYXJ0aXRpb25zCisgKiBsYXN0OgkJCXRydWUgaW4gY2FzZSBuZXcgcGFydGl0aW9u ICJzcGVjIiBpcyBsYXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBkZWZhdWx0UGFydDoJCXRy dWUgaW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgREVGQVVMVCBwYXJ0aXRpb24KKyAq IHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUg ZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3Vu ZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgIGNoYXIg KnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJ CQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgYm9vbCBmaXJzdCwKKwkJ CQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVmYXVsdFBhcnQsCisJ CQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3Vu ZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtl eS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKwlBc3NlcnQoc3Bl Yy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWxvd2VyID0g bWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVjLT5sb3dlcmRhdHVtcywg dHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNw ZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZpcnN0IGNoZWNrIGlmIHRo ZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBzcGVjaWZpZWQgbG93ZXIK KwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3VuZF9jbXAgY2Fubm90IHJl dHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJvdW5kIGZsYWdzIGFyZSBk aWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5w YXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXkt PnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywgbG93ZXItPmtpbmQs CisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2YWwgIT0gMCk7CisJaWYg KGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVtYXRpYyBrZXkgaW4gdGhl IGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9 IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAxKTsKKworCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0 aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJCWVycmRldGFpbCgiU3BlY2lm aWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlciBi b3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhzcGVjLT5s b3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMt PnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0t PmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVlZCB0byBjaGVjayBmaXJzdCBhbmQgbGFzdCBw YXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcgcGFydGl0aW9ucykgKi8KKwlpZiAoZmlyc3Qg fHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BsaXRfc3BlYyA9IGdldF9w YXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBhcnRPaWQpOworCQlQYXJ0aXRpb25SYW5nZURh dHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91 bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlv bl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJ CQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJ CQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRp b24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJ CQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKworCQkJLyoKKwkJCSAqIExvd2VyIGJvdW5kIG9m ICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorCQkJ ICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYg KGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dl cmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJ ZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0 byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1l KSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24p KTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYgKGNtcHZhbCA8IDApCisJ CQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBhYnMoY21w dmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coImxvd2VyIGJv dW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJ fQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X3VwcGVyOwor CisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwg c3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKworCQkJY21wdmFsID0gcGFydGl0 aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRz dXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAg dXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQsCisJCQkJCQkJCQkJICBmYWxzZSwgc3BsaXRf dXBwZXIpOworCisJCQkvKgorCQkJICogVXBwZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBi ZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVxdWFsIGluCisJCQkgKiBjYXNlIGRlZmF1bHRQ YXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLwor CQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsKKwkJCQlpZiAoY21wdmFsICE9IDApCisJCQkJ eworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21wdmFs KSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFsID4gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0g bGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCQkJCWVycm1zZygidXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwi JXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwK KwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCisvKgor ICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdAorICoKKyAqIChmdW5j dGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91 bmRzIG9mIG5ldyBwYXJ0aXRpb24gYXJlIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0 aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJcGFy dGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlv bgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlv bgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwc3RhdGU6CQkJ cG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0 aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxp dF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAgUGFy dGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICBPaWQgc3BsaXRQYXJ0T2lkLAor CQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0 ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0 aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJ CQl3aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJCW92ZXJsYXBf bG9jYXRpb24gPSAtMTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9T VFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX0xJU1QpOworCUFzc2VydChib3VuZGluZm8gJiYgYm91bmRpbmZvLT5zdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNlYXJjaCBlYWNo IHZhbHVlIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGluIGV4aXN0aW5nIHBhcnRpdGlvbnMu IEFsbAorCSAqIG9mIHRoZW0gc2hvdWxkIGJlIGluIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBP aWQgc3BsaXRQYXJ0T2lkKS4KKwkgKi8KKwlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbCwgc3Bl Yy0+bGlzdGRhdHVtcykKKwl7CisJCW92ZXJsYXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9u OworCQlpZiAoIXZhbC0+Y29uc3Rpc251bGwpCisJCXsKKwkJCWludAkJCW9mZnNldDsKKwkJ CWJvb2wJCWVxdWFsOworCisJCQlvZmZzZXQgPSBwYXJ0aXRpb25fbGlzdF9ic2VhcmNoKCZr ZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQlrZXktPnBhcnRjb2xsYXRpb24sCisJ CQkJCQkJCQkJCWJvdW5kaW5mbywKKwkJCQkJCQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJ CQkJCQkJCQkmZXF1YWwpOworCQkJaWYgKG9mZnNldCA+PSAwICYmIGVxdWFsKQorCQkJewor CQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4ZXNbb2Zmc2V0XTsKKwkJCQlpZiAocGFydGRl c2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJCXsKKwkJCQkJb3ZlcmxhcCA9 IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSB0 aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJ CQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3Zl cmxhcF9sb2NhdGlvbikpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2Nl cHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGluZm8tPm51bGxf aW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQor CQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVs c2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBj YW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90 IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7CisJ CUFzc2VydCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0 aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBh cnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lLCBnZXRfcmVsX25hbWUocGFydGRl c2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVy bGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisvKgorICogZmluZF92YWx1ZV9pbl9uZXdfcGFy dGl0aW9uc19saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmlu ZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaW4gY2FzZSBhbnkgb2YgbmV3IHBh cnRpdGlvbnMgY29udGFpbnMgdmFsdWUgInZhbHVlIi4KKyAqCisgKiBwYXJ0c3VwZnVuYzoJ CWluZm9ybWF0aW9uIGFib3V0IGNvbXBhcmlzb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRo IHRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9uOglwYXJ0aXRpb25pbmcgY29s bGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVyIHRvIGFycmF5IHdpdGggbmV3IHBhcnRpdGlv bnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6CQkJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25z CisgKiB2YWx1ZToJCQl0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IKKyAqIGlz bnVsbDoJCQl0cnVlIGlmIHRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBsb29raW5nIGZvciBpcyBO VUxMCisgKi8KK3N0YXRpYyBib29sCitmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xp c3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIE9pZCAqcGFydGNvbGxhdGlv biwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAg aW50IG5wYXJ0cywKKwkJCQkJCQkJICBEYXR1bSB2YWx1ZSwKKwkJCQkJCQkJICBib29sIGlz bnVsbCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2lu Z2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisKKwkJZm9yZWFjaF9ub2RlKENv bnN0LCB2YWwsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsKKwkJCWlmIChpc251bGwg JiYgdmFsLT5jb25zdGlzbnVsbCkKKwkJCQlyZXR1cm4gdHJ1ZTsKKworCQkJaWYgKCFpc251 bGwgJiYgIXZhbC0+Y29uc3Rpc251bGwpCisJCQl7CisJCQkJaWYgKERhdHVtR2V0SW50MzIo RnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJCXBhcnRj b2xsYXRpb25bMF0sCisJCQkJCQkJCQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJ CQkJCXZhbHVlKSkgPT0gMCkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisJ cmV0dXJuIGZhbHNlOworfQorCisvKgorICogY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdf cGFydGl0aW9ucworICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcp CisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gKHdp dGggT2lkIHBhcnRPaWQpIGNvbnRhaW5zIGluIG5ldworICogcGFydGl0aW9ucy4KKyAqCisg KiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0T2lkOglzcGxpdCBwYXJ0aXRp b24gT2lkCisgKiBwYXJ0czoJcG9pbnRlciB0byBhcnJheSB3aXRoIG5ldyBwYXJ0aXRpb25z IGRlc2NyaXB0aW9ucworICogbnBhcnRzOgludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAq IHBzdGF0ZToJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVy cm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJlbnRfdmFsdWVzX2lu X25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgT2lkIHBhcnRP aWQsCisJCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJ CSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBh cnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBh cnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50 LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNjLT5i b3VuZGluZm87CisJaW50CQkJaTsKKwlib29sCQlmb3VuZCA9IHRydWU7CisJYm9vbAkJc2Vh cmNoTnVsbCA9IGZhbHNlOworCURhdHVtCQlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxM KTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU KTsKKworCS8qCisJICogU3BlY2lhbCBwcm9jZXNzaW5nIGZvciBOVUxMIHZhbHVlLiBTZWFy Y2ggTlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQKKwkgKiBwYXJ0aXRpb24gKHBhcnRPaWQpIGNv bnRhaW5zIGl0LgorCSAqLworCWlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhi b3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+bnVsbF9pbmRleF0g PT0gcGFydE9pZCkKKwl7CisJCWlmICghZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19s aXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xs YXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCB0cnVlKSkKKwkJeworCQkJZm91bmQgPSBm YWxzZTsKKwkJCXNlYXJjaE51bGwgPSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBTZWFy Y2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBwYXJ0T2lkIGluIFBhcnRp dGlvbkRlc2Mgb2YKKwkgKiBwYXJ0aXRpb25lZCB0YWJsZS4KKwkgKi8KKwlmb3IgKGkgPSAw OyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBpKyspCisJeworCQlpZiAocGFydGRlc2MtPm9p ZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBXZSBm b3VuZCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBjb250YWlucy4gKi8KKwkJCWRhdHVt ID0gYm91bmRpbmZvLT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3 X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCSAg IGtleS0+cGFydGNvbGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIGZhbHNlKSkKKwkJ CXsKKwkJCQlmb3VuZCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJ aWYgKCFmb3VuZCkKKwl7CisJCUNvbnN0CSAgICpub3RGb3VuZFZhbDsKKworCQlpZiAoIXNl YXJjaE51bGwpCisKKwkJCS8qCisJCQkgKiBNYWtlIENvbnN0IGZvciBnZXR0aW5nIHN0cmlu ZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91bmQKKwkJCSAqIHZhbHVlLgorCQkJICovCisJ CQlub3RGb3VuZFZhbCA9IG1ha2VDb25zdChrZXktPnBhcnR0eXBpZFswXSwKKwkJCQkJCQkJ CWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cGNvbGxbMF0sCisJ CQkJCQkJCQlrZXktPnBhcnR0eXBsZW5bMF0sCisJCQkJCQkJCQlkYXR1bSwKKwkJCQkJCQkJ CWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJCQkJCWtleS0+cGFydHR5cGJ5dmFsWzBdKTsK KworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZl IHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcyIsCisJCQkJCSAgIHNlYXJjaE51 bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKG5vdEZvdW5kVmFsKSkp OworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0CisgKgorICog Q2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBTUExJVCBQQVJUSVRJT05TIGNvbW1hbmQ6Cisg KiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lLgorICogMi4gTmV3IHBhcnRp dGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzCisgKiAgICAod2l0aCBleGlzdGlu ZyBwYXJ0aXRpb25zIHRvbykuCisgKiAzLiBCb3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZworICogICAgcGFydGl0aW9u cy4KKyAqIDQuIEluIGNhc2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9u LCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKKyAqICAgIHNob3VsZCBiZSBERUZBVUxULgorICog NS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBvciBleGlzdGluZyBwYXJ0aXRpb25zIGNvbnRh aW5zIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiwgbmV3IHBhcnRpdGlvbnMgY2FuIGhhdmUg YW55IGJvdW5kcyBpbnNpZGUgc3BsaXQKKyAqICAgIHBhcnRpdGlvbiBib3VuZCAoY2FuIGJl IHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMgYm91bmRzKS4KKyAqIDYuIEluIGNhc2UgcGFy dGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiwgREVGQVVM VAorICogICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiBuZXcgcGFydGl0 aW9uLgorICogNy4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBub3QgY29udGFpbnMgREVGQVVM VCBwYXJ0aXRpb24gYW5kCisgKiAgICBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZl IERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xsb3dpbmcKKyAqICAgIHNob3VsZCBiZSB0cnVl OiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBlcXVhbAorICogICAg dG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRp b25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBs aXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRv IFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwor dm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJ CQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJ CQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXk7CisJY2hh cgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJYm9vbAkJaXNTcGxpdFBh cnREZWZhdWx0OworCWJvb2wJCWV4aXN0c0RlZmF1bHRQYXJ0OworCWludAkJCWRlZmF1bHRf aW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAq Km5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNQcmV2ID0gTlVMTDsKKwlp bnQJCQlucGFydHMgPSAwOworCisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFy ZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCXN3 aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgor CQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQkvKgorCQkJCSAq IE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGggbmV3IHBhcnRpdGlvbnMgZXhjZXB0IERFRkFV TFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJbmV3X3BhcnRzID0gKFNpbmds ZVBhcnRpdGlvblNwZWMgKiopCisJCQkJCXBhbGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3Qp ICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOworCQkJCWkgPSAwOworCQkJCWZv cmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRsaXN0KQorCQkJCXsK KwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlmIChk ZWZhdWx0X2luZGV4ID49IDApCisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJCWVy cm1zZygiREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIpLAorCQkJCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzLT5uYW1lLT5sb2NhdGlvbikpOworCQkJCQkJ ZGVmYXVsdF9pbmRleCA9IGk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQlu ZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCQkJCQl9CisJCQkJCWkrKzsKKwkJCQl9CisJ CQl9CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIOgorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFi bGUgY2Fubm90IGJlIHNwbGl0IikpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAo aW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFrOworCX0KKworCWlmIChzdHJhdGVneSA9 PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJeworCQlQYXJ0aXRpb25SYW5nZUJvdW5k ICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICoqdG1wX25ld19wYXJ0 czsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxpZnkgY2hlY2sgZm9yIHJhbmdlcyBvZiBuZXcg cGFydGl0aW9ucyBuZWVkIHRvIHNvcnQgYWxsCisJCSAqIHBhcnRpdGlvbnMgaW4gYXNjZW5k aW5nIG9yZGVyIG9mIHRoZW0gYm91bmRzICh3ZSBjb21wYXJlIHVwcGVyCisJCSAqIGJvdW5k IG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQg KiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICop KTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQlmb3IgKGkg PSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsKKwkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vf b25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLAorCQkJCQkJCQkJCQkJCQluZXdfcGFydHNb aV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCX0KKworCQkvKiBTb3J0IGFycmF5 IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRz LCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkgIHFzb3J0X3BhcnRpdGlv bl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCS8qIFJlb3JkZXIgYXJyYXkgb2Yg cGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19wYXJ0cyA9IG5ld19wYXJ0czsKKwkJbmV3X3Bh cnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNp emVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsKKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0 czsgaSsrKQorCQkJbmV3X3BhcnRzW2ldID0gdG1wX25ld19wYXJ0c1tsb3dlcl9ib3VuZHNb aV0tPmluZGV4XTsKKworCQlwZnJlZSh0bXBfbmV3X3BhcnRzKTsKKwkJcGZyZWUobG93ZXJf Ym91bmRzKTsKKwl9CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9m cm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsK KworCS8qIGlzU3BsaXRQYXJ0RGVmYXVsdCBmbGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBE RUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlpc1NwbGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBh cnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKKworCWlmIChpc1NwbGl0UGFydERlZmF1bHQgJiYg ZGVmYXVsdF9pbmRleCA8IDApCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm9uZSBw YXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBw YXJ0aXRpb24gaXMgREVGQVVMVCIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs ICgoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaW5pdGlhbChwYXJ0bGlzdCkpLT5uYW1lLT5s b2NhdGlvbikpOworCX0KKwllbHNlIGlmICghaXNTcGxpdFBhcnREZWZhdWx0ICYmIChkZWZh dWx0X2luZGV4ID49IDApICYmIE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVmID0KKwkJCShTaW5nbGVQYXJ0aXRpb25TcGVj ICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZhdWx0X2luZGV4KTsKKworCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBE RUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cyIpLAorCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIHNwc0RlZi0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJbmRp Y2F0b3IgdGhhdCBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgKG9yIHdpbGwgaGF2ZSkgREVGQVVM VCBwYXJ0aXRpb24gKi8KKwlleGlzdHNEZWZhdWx0UGFydCA9IE9pZElzVmFsaWQoZGVmYXVs dFBhcnRPaWQpIHx8IChkZWZhdWx0X2luZGV4ID49IDApOworCisJZm9yIChpID0gMDsgaSA8 IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gbmV3X3Bh cnRzW2ldOworCisJCWlmIChpc1NwbGl0UGFydERlZmF1bHQpCisJCXsKKwkJCS8qCisJCQkg KiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiB3ZSBjYW4g dXNlIGFueQorCQkJICogZnJlZSByYW5nZXMgLSBhcyB3aGVuIGNyZWF0aW5nIGEgbmV3IHBh cnRpdGlvbi4KKwkJCSAqLworCQkJY2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChzcHMtPm5h bWUtPnJlbG5hbWUsIHBhcmVudCwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCSAgcHN0YXRlKTsK KwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBDaGVja3MgdGhhdCBib3VuZCBvZiBj dXJyZW50IHBhcnRpdGlvbiBpcyBpbnNpZGUgYm91bmQgb2Ygc3BsaXQKKwkJCSAqIHBhcnRp dGlvbi4gRm9yIHJhbmdlIHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgdXBwZXIgYm91bmQg b2YKKwkJCSAqIHByZXZpb3VzIHBhcnRpdGlvbiBpcyBlcXVhbCB0byBsb3dlciBib3VuZCBv ZiBjdXJyZW50CisJCQkgKiBwYXJ0aXRpb24uIEZvciBsaXN0IHBhcnRpdGlvbmluZzogY2hl Y2tzIHRoYXQgc3BsaXQgcGFydGl0aW9uCisJCQkgKiBjb250YWlucyBhbGwgdmFsdWVzIG9m IGN1cnJlbnQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElU SU9OX1NUUkFURUdZX1JBTkdFKQorCQkJeworCQkJCWJvb2wJCWZpcnN0ID0gKGkgPT0gMCk7 CisJCQkJYm9vbAkJbGFzdCA9IChpID09IChucGFydHMgLSAxKSk7CisKKwkJCQljaGVja19w YXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShwYXJlbnQsIHNwcy0+bmFtZS0+cmVs bmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJCQkgICBzcGxpdFBhcnRPaWQsIGZpcnN0 LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAgIGV4aXN0c0RlZmF1bHRQYXJ0LCBwc3RhdGUpOwor CQkJfQorCQkJZWxzZQorCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xp c3QocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJCQkJICBzcHMtPmJv dW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0ZSk7CisJCX0KKworCQkvKiBSYW5nZXMgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQlpZiAoc3RyYXRlZ3kgPT0g UEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmIHNwc1ByZXYpCisJCQljaGVja190d29fcGFy dGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LCBzcHNQcmV2LT5uYW1lLCBzcHNQcmV2LT5i b3VuZCwKKwkJCQkJCQkJCQkJICBzcHMtPm5hbWUsIHNwcy0+Ym91bmQsIGV4aXN0c0RlZmF1 bHRQYXJ0LCBwc3RhdGUpOworCisJCXNwc1ByZXYgPSBzcHM7CisKKwkJLyogQ2hlY2s6IG5l dyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yIChq ID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJU2luZ2xlUGFydGl0aW9uU3Bl YyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsKKworCQkJaWYgKGVxdWFsKHNwcy0+bmFtZSwgc3Bz Mi0+bmFtZSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9E VVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJuYW1lIFwiJXNcIiBpcyBhbHJlYWR5 IHVzZWQiLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIHNwczItPm5hbWUtPmxvY2F0aW9uKSk7CisJCX0KKwl9CisKKwlpZiAoc3Ry YXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1ZXMgb2Yg bmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQljaGVja19wYXJ0aXRp b25zX25vdF9vdmVybGFwX2xpc3QocGFyZW50LCBuZXdfcGFydHMsIG5wYXJ0cywKKwkJCQkJ CQkJCQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICogTmVlZCB0byBjaGVjayB0aGF0IGFsbCB2 YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zIGluIG5ldworCQkgKiBwYXJ0aXRp b25zLiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3RzLgorCQkg Ki8KKwkJaWYgKCFleGlzdHNEZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92YWx1ZXNf aW5fbmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkJCQkg IG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19wYXJ0cyk7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggM2Q2ZTZiZGJmZC4uM2Ux Njg5YjExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTM3MDcsMyAr MTM3MDcsMjEgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0 dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoKKyAqIGdldF9saXN0X3BhcnR2 YWx1ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9uZSBsaXN0 IHBhcnRpdGlvbiB2YWx1ZQorICovCitjaGFyICoKK2dldF9saXN0X3BhcnR2YWx1ZV9zdHJp bmcoQ29uc3QgKnZhbCkKK3sKKwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlTdHJpbmdJ bmZvCWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwltZW1zZXQoJmNvbnRleHQsIDAsIHNp emVvZihkZXBhcnNlX2NvbnRleHQpKTsKKwljb250ZXh0LmJ1ZiA9IGJ1ZjsKKworCWdldF9j b25zdF9leHByKHZhbCwgJmNvbnRleHQsIC0xKTsKKworCXJldHVybiBidWYtPmRhdGE7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNjQyNDhiNWIxZi4uYzBlOTE4OTUxYSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjcyMSw3ICsyNzIxLDcgQEAgbWF0Y2hf cHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNF VCIsICJWQUxJREFURSBDT05TVFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIs ICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElPTiIsICJGT1JD RSBST1cgTEVWRUwgU0VDVVJJVFkiLAotCQkJCQkgICJNRVJHRSBQQVJUSVRJT05TICgiLAor CQkJCQkgICJTUExJVCBQQVJUSVRJT04iLCAiTUVSR0UgUEFSVElUSU9OUyAoIiwKIAkJCQkJ ICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAqLwogCWVsc2Ug aWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAgLTI5 NzcsMTAgKzI5NzcsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQs CiAJCUNPTVBMRVRFX1dJVEgoIkZST00gKCIsICJJTiAoIiwgIldJVEggKCIpOwogCiAJLyoK LQkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERFVEFDSCBQQVJUSVRJT04sIHBy b3ZpZGUgYSBsaXN0IG9mCisJICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRB Q0h8U1BMSVQgUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgogCSAqIHBhcnRpdGlvbnMg b2YgPGZvbz4uCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBN YXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iKSkKKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIfFNQTElUIiwgIlBBUlRJVElPTiIp KQogCXsKIAkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXYzX3dkKTsKIAkJQ09NUExF VEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CkBA IC0yOTg4LDYgKzI5ODgsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5f aWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRF VEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNV UlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElU IFBBUlRJVElPTiA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJM RSIsIE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQorCQlDT01Q TEVURV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8bmFt ZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi VEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQogCXsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiOGUyYTY3OWNkLi4wMWFhNGIyZTY0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05NjMsMTUgKzk2MywyNiBAQCB0eXBlZGVmIHN0 cnVjdCBQYXJ0aXRpb25SYW5nZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tl biBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURhdHVt OwogCisvKgorICogUGFydGl0aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlv biBmb3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlwZWRl ZiBzdHJ1Y3QgU2luZ2xlUGFydGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisKKwlS YW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0aW9u Qm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCit9IFNp bmdsZVBhcnRpdGlvblNwZWM7CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBpbmZvIGZvciBB TFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBjb21tYW5kcwogICov CiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJh bmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFj aC9tZXJnZSAqLworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24g dG8gYXR0YWNoL2RldGFjaC9tZXJnZS9zcGxpdCAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAq Ym91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLwotCUxpc3QJICAgKnBhcnRs aXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25zLCBmb3IgTUVSR0UKKwlMaXN0CSAgICpwYXJ0 bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1FUkdFL1NQTElUCiAJCQkJCQkJ CSAqIFBBUlRJVElPTiBjb21tYW5kICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFydGl0 aW9uQ21kOwpAQCAtMjQ3NSw2ICsyNDg2LDcgQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVU eXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFDSCBQQVJUSVRJT04gKi8KIAlB VF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFj aFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRBQ0ggUEFSVElUSU9OIEZJTkFMSVpFICovCisJ QVRfU3BsaXRQYXJ0aXRpb24sCQkJLyogU1BMSVQgUEFSVElUSU9OICovCiAJQVRfTWVyZ2VQ YXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBBUlRJVElPTlMgKi8KIAlBVF9BZGRJZGVudGl0eSwJ CQkJLyogQUREIElERU5USVRZICovCiAJQVRfU2V0SWRlbnRpdHksCQkJCS8qIFNFVCBpZGVu dGl0eSBjb2x1bW4gb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDkwZThjZGRm OGIuLjY2Yzg4NzY2NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQyMSw2ICs0MjEsNyBA QCBQR19LRVlXT1JEKCJzbWFsbGludCIsIFNNQUxMSU5ULCBDT0xfTkFNRV9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgic25hcHNob3QiLCBTTkFQU0hPVCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic29tZSIsIFNPTUUsIFJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzb3VyY2UiLCBTT1VSQ0Us IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInNwbGl0Iiwg U1BMSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNx bCIsIFNRTF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJzdGFibGUiLCBTVEFCTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInN0YW5kYWxvbmUiLCBTVEFOREFMT05FX1AsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmlu ZGV4IDY5MGQyNTk2MTkuLjQ1YjFmYTFkZTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuaApAQCAtMTQzLDYgKzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRpdGlv bl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBp bnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZv LAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2 b2lkIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJ CQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwK KwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBleHRlcm4gdm9pZCBjYWxjdWxh dGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJ CQkJCQlMaXN0ICpwYXJ0TmFtZXMsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggNWYyZWEyZTRkMC4uNjIwNDNkM2JmNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvcnVsZXV0aWxzLmgKQEAgLTU0LDQgKzU0LDYgQEAgZXh0ZXJuIGNoYXIgKmdldF9y YW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcyk7CiAKIGV4dGVybiBj aGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CiAK K2V4dGVybiBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwpOwor CiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0IGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uNWQ5ZThiMDkyNQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CkBAIC0wLDAg KzEsMTkwIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMx YjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElU SU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVf MjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7Cisg aXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQor MjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47 CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0 XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQw NQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dz KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBh cnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04g dHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJU SVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVw IHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTog SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAK Ky0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1 CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJy IHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRw YXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9O IHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFS VElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6 IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1Qg KiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4 dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJz CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOwor c3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8x MF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxV RVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0 ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczog U0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUK KyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0 cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZP UiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQw NQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dz KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmIgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7 CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0 XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTog SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAK Ky0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1 CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMg czFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0 IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRw YXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElU SU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBz MmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4u Pgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg czJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAg IAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0 MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFi cyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAg czJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgor c3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAor LS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUK KzM1fHRleHQzNQorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2No ZWR1bGUKaW5kZXggMGRjYTY4NDk1NS4uNDA0YTdmZDgzMiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRp b24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMDgsNiArMTA4LDcgQEAgdGVzdDogcGFydGl0 aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDog cGFydGl0aW9uLWtleS11cGRhdGUtNAogdGVzdDogcGFydGl0aW9uLW1lcmdlCit0ZXN0OiBw YXJ0aXRpb24tc3BsaXQKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29u ZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgYi9zcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDg3MjM5YTRhMQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwpAQCAtMCww ICsxLDU0IEBACisjIFZlcmlmeSB0aGF0IFNQTElUIG9wZXJhdGlvbiBsb2NrcyBETUwgb3Bl cmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFC TEUgSUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4 dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAg UEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JF QVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9O IE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJM RSB0cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1 LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUn KTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lv biBzMQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElP TiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFzcGx0CXsgQUxURVIgVEFCTEUgdHBh cnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04g dHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJU SVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7IH0KK3N0 ZXAgczFjCXsgQ09NTUlUOyB9CisKKworc2Vzc2lvbiBzMgorc3RlcCBzMmIJeyBCRUdJTjsg fQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 IH0KK3N0ZXAgczJicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0K K3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IH0K K3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7 IH0KKworCisjIHMxIHN0YXJ0cyBTUExJVCBQQVJUSVRJT04gdGhlbiBzMiB0cnlpbmcgdG8g aW5zZXJ0IHJvdyBhbmQKKyMgd2FpdHMgdW50aWwgczEgZmluaXNoZWQgU1BMSVQgb3BlcmF0 aW9uLgorCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Bl cm11dGF0aW9uIHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMxYnJy IHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQg czJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJicyBz MmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJiIHMyaSBzMWMg czJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJz CitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFy c2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBh cnNlLmMKaW5kZXggN2RlNWRkYjg3OC4uMTdkNzJlNDEyZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYworKysgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCkBA IC0yOTYsNiArMjk2LDkgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElP Tl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCQlzdHJ0 eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKIAkJCQlicmVhazsKKwkJ CWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJc3RydHlwZSA9ICJTUExJVCBQQVJUSVRJ T04iOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJc3Ry dHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi5hYTM0NDQwYzY1Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC0wLDAg KzEsMTkwNSBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRF UiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBT Q0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9u X3NwbGl0X3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0t IFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVz X2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5v dCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNf eHh4IiBkb2VzIG5vdCBleGlzdAorLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAy MiIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ph bjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCistLSBFUlJP UjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24K K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJ TiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVj aWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJT04g c2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJP UjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19t YXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBlbXB0 eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIK K0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU3BlY2lmaWVkIGxvd2VyIGJvdW5kICgn MDMtMDEtMjAyMicpIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlciBib3VuZCAo JzAyLTAxLTIwMjInKS4KKy0tRVJST1I6ICBsaXN0IG9mIHNwbGl0IHBhcnRpdGlvbnMgc2hv dWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMTAtMDEnKSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxk IGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3Mg dGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkg dXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBh cyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0 aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBh bHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLi4uCisgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAgICAgICAg ICAgICAgICBeCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBh IHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElUSU9OIGNhbm5vdCBi ZSBwZXJmb3JtZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0RFVEFJ TDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KKy0tIEVS Uk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBncmVh dGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBh cnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgY29uZmxpY3RzIHdpdGgg dXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0xJTkUgMzogICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gVGVzdHMgZm9yIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxk IGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzOworLS0gRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0 byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u CitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5v dCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19y YW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUg InBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAg ICB8ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Cisgc2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisg c2FsZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2Fs ZXNfYW1vdW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNf ZGF0ZSAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24g a2V5OiBSQU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEyLnNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRP ICgnMDUtMDEtMjAyMicpLAorICAgICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIu c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0w MS0yMDIyJyksCisgICAgICAgICAgICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjIn KSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEt MjAyMicpIFRPICgnMDItMDEtMjAyMicpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitE Uk9QIFRBQkxFIHNhbGVzX290aGVyczsKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlv bmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAg IDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAg ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAx ODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8 IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAy MgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAg ICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgIDE0IHwgU21p dGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAx LTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAy MjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0 IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1 MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FT Q0FERTsKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8g cGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CistLSBTcGxpdCBwYXJ0aXRpb24sIGFsc28gY2hlY2sgc2NoZW1hIHF1YWxp ZmljYXRpb24gb2YgbmV3IHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9O IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0 aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor XGQrIHNhbGVzX3JhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRp b25lZCB0YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZSIKKyAgICAg IENvbHVtbiAgICAgIHwgICAgICAgICBUeXBlICAgICAgICAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgaW50ZWdlciAgICAgICAgICAgICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAg ICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgY2hhcmFjdGVyIHZhcnlpbmcoMzApIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAg ICAgfCAKKyBzYWxlc19hbW91bnQgICAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAg fCAKKyBzYWxlc19kYXRlICAgICAgIHwgZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAK K1BhcnRpdGlvbiBrZXk6IFJBTkdFIChzYWxlc19kYXRlKQorUGFydGl0aW9uczogcGFydGl0 aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMy0w MS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKSwKKyAg ICAgICAgICAgIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicp IFRPICgnMDMtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJyksCisgICAgICAgICAg ICBzYWxlc19vdGhlcnMgREVGQVVMVAorCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1h eSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAg ICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgor ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAx LTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAg ICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAg IHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAg NyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAg ICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEt MjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAg ICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIy CisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwg MDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAg ICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFs ZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAg ICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCiso MyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAg IDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAw IHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1 LTA0LTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOwor LS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0g ICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1 ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElO VCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAg KExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19t b250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIs ICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxU ICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEp IFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgy MDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2Fs ZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFY VkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgn TWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCks CisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIs IDQpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIy LCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywg MjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCAqIEZS T00gc2FsZXNfZGF0ZTsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVz X21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCist LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAg fCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAg ICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAg IDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAg IDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAg IDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFy IHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0 bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEg ICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEu MTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIw MjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBh cnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOwor IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19k YXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAg ICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19k YXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIu MDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBh cnRtZW50CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8g KDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFt ZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFu YWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3ll YXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBh cnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2Vy MSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAy MS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAg MjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAy Mi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAy IHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAy Mi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAz IHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAy Mi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRl cGFydG1lbnQKKygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2Rh eSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAg ICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVh ciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFy dG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIy LjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEg fCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2Fs ZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50Ciso MyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisoMyByb3dzKQorCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIy IiBkb2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK0VS Uk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorTElO RSAxOiBTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworICAgICAgICAgICAgICAg ICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6 IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtl eTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9p ZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjIt MDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdics ICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisg ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nz b24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwK KyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0 bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAg JzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcp OworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAy LTEwLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgt MjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgIDEyIHwg UGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAg ICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIy CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwg IHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgIHwgdGFibGVzcGFj ZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu ZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCB8ICAgICAg ICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IE9OIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKQorKDEgcm93KQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGlu ZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4g PSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIg fCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIw MjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUg fCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2Fs ZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9z ZXFzY2FuID0gT047CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwg ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNw YWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIHwgc2FsZXNfZmViMjAyMiB8IHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9p ZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0 ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hl bWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAg ICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfbWFyMjAyMiB8IHNhbGVzX21hcjIw MjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX21h cjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19t YXIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBG Uk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFt ZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAg IGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfYXByMjAy MiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRF IElOREVYIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0 X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVz X290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JE RVIgQlkgaW5kZXhuYW1lOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1l ICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNh bGVzX290aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgfCAgICAgICAgICAg IHwgQ1JFQVRFIElOREVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgT04gcGFydGl0 aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp CisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBU ZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZl cmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChs b3dlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0 aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAx KSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK K0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxp Y3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMy MDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMTIzMCkgVE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRo IHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5k IG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEw MSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEw MSkgVE8gKDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiCitMSU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vy cm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0 cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGxvd2VyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJv dW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0xJTkUgMzogICAg UEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgy MDIxLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChl eGFjdGx5IHRoZSBzYW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJl dmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRP ICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVy cyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19l cnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9u ICJzYWxlc19kZWMyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9S IFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBvbmUgcGFy dGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGlzIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAx KSBUTyAoMjAyMjAzMDEpKTsKK0VSUk9SOiAgb25lIHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBz aG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitM SU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gbm8gZXJyb3I6 IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjIgYW5k IHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBl cXVhbCB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjIgYW5kIHNh bGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19u b2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGgg Q0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxl CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4g MSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25r ZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJf YXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0K KyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsy fQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3Bs ZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwg ezF9CisoMiByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CistLSBX ZSBzaG91bGQgc2VlIHRoZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBj b25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3Nh bGVzX2ZlYjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAg ICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sg IHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVz cGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2Zr ZXkgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQp LCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0g J3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hl Y2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lk X2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihv aWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlk ID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7Owor ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29u a2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRf Y2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VT IHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29u X2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVs YXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVz X3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRp b24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3Jh bmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5z ICgxLCAwLCAwMy0xMS0yMDIyKS4KKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0 YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi c2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworRVJST1I6ICBpbnNlcnQgb3Ig dXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IgorREVUQUlMOiAg S2V5IChzYWxlc3BlcnNvbl9pZCk9KC0xKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAic2Fs ZXNwZW9wbGUiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwg MTAsICcyMDIyLTAzLTExJyk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CitE Uk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFy dGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlH TiBLRVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQp OworQ1JFQVRFIFRBQkxFIHNhbGVzIChzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAg KDEsICAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMTksICdJdmFub3YnKSwKKyAg KDIwLCAnU21pcm5vZmYnKSwKKyAgKDMwLCAnRm9yZCcpOworSU5TRVJUIElOVE8gc2FsZXMg VkFMVUVTCisgICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpLAorICAoMSwgIDExMCwgJzIwMjIt MDMtMDInKSwKKyAgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyksCisgICgxMCwgOTAsICAnMjAy Mi0wMy0wMycpLAorICAoMTksIDIwMCwgJzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1MCwgICcy MDIyLTAzLTEyJyksCisgICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpLAorICAoMzAsIDMwLCAg JzIwMjItMDMtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAg ICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQor CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUx MF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQw IEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworU0VMRUNUICogRlJPTSBzYWxlc3Bl b3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2ly b3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzIwOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAxOSB8 IEl2YW5vdgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTIwXzMwOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMzBfNDA7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworLS0gRVJST1I6ICBpbnNl cnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVz IFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVw ZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVyc29u X2lkKT0oNDApIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCistLSBv aworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOwor RFJPUCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVND QURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJs ZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVy c29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9O IE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdn ZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKwlSQUlTRSBOT1RJQ0Ug J3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywg VEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxM OworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNw ZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBh ZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CitDUkVBVEUgVFJJR0dF UiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNF UlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUg UFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKy0t IDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdn ZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIs IGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFj dGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0 cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZTEwXzQwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNw ZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0g Uk9XCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9w bGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9S IFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMw XzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworLS0gMiB0cmlnZ2VycyBzaG91 bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVv cGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJP VworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNF UlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91 bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxV RVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVk OiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUx MF8yMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAg ICAgICAgICAgMTkgfCBJdmFub3YKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNw ZW9wbGUyMF8zMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDIwIHwgU21p cm5vZmYKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTMwXzQwOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoMSByb3cpCisKK0RS T1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNo IGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVu dGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNv bHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNv bl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxXzIgUEFSVElUSU9OIE9GIHNhbGVz cGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0 aXRpb24gd2l0aCBpZGVudGl0eSBjb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUy XzUoc2FsZXNwZXJzb25faWQgSU5UIE5PVCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2Fs ZXNwZW9wbGUyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZh bm92Jyk7CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9N IHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Bl b3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAg ICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAg ICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dz KQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBn X2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3Bs ZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAg ICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAg ICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dz KQorCistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5IGNvbHVtbjoKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyks CisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAo NCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBU TyAoNSkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZB TFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxXzI7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMl8zOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDIgfCBJdmFub3YKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBz YWxlc3Blb3BsZTNfNDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwg TWF5CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGU0XzU7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEZvcmQKKygxIHJvdykKKworU0VMRUNU IGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUg V0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFz czo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRp dHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNh bGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0 dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUxXzInOjpyZWdjbGFz czo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRp dHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNh bGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworLS0gTmV3IHBh cnRpdGlvbnMgaGF2ZSBpZGVudGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4g MCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5l cmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25h bWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4g MCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5l cmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25h bWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4g MCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGU0XzUnOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5l cmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25h bWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3Bs ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQg Y29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl MDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDEwKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVt bnM6CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2Fs ZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBW QUxVRVMKKyAgKCdkdW1teSB2YWx1ZSAxJywgMTksIDEwMCwgbm93KCksICdJdmFub3YnKSwK KyAgKCdkdW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Bl b3BsZTEwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRU QUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3Qn KSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisg ICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgz MCkgVE8gKDQwKSk7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxl Y3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBfMjA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDEwIHwgTWF5CisoMiByb3dzKQor CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMjBfMzA7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20g c2FsZXNwZW9wbGUzMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDMw IHwgRm9yZAorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7Cist LQorLS0gVGVzdDogc3BsaXQgc3ViLXBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJ TkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBi dHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAg KDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9m ZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIw MjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAor ICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJv dCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyks CisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFs ZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwg ICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdT bWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jh bmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAg ICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAg fCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAg ICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIw MjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAg fCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAg ICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAg ICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAz LTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwg ICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJ T04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8x MCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy Ml8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAx JykpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWly bm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAg ICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAg ICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAg MTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDUg fCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAg ICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIw MjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAg ICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAg ICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMl8wMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8x MF8yMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMjBfMzA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBC WSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMg Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QK KyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwK KyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVz X2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxp bicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJPUjog IG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVy IChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdE ZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAorICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsK K0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRo IGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgorTElORSAzOiAu Li4gRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdI ZWxzaW5raScuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVz X2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAg IFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0xpc2JvbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxl c193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxl c19jZW50cmFsIgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJz YWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0 aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAi c2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRp dGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnNfd2VzdCBGT1IgVkFMVUVTIElOICgn TGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMg dmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhh dmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitM SU5FIDI6IC4uLnN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJywgJ01lbGJvdXJuZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlv biBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkg ZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04g c2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBE RUZBVUxUKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNh dXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitMSU5FIDU6ICAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAgICAgXgor RFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJv cnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRv IG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAg ICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRp dGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9p ZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBW QVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9y ZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAn U3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdL eWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25z IGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4g KCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7 CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNw bGl0IHBhcnRpdGlvbiBkb2VzCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBo YXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxF IHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRy YWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CitFUlJPUjog IG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFy dGl0aW9uIGRvZXMKKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25l CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdO ZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxV RVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElP TiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5 aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElP TiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBERUZBVUxUIHBhcnRpdGlvbiBz aG91bGQgYmUgb25lCitMSU5FIDY6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFV TFQpOworICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0Owor LS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0 aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBT RVJJQUwsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBW QVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlz dF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxl c3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lk eCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn SGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxpbics ICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50 LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAg IDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAg ICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJn JywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAg ICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAg ICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAg ICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAg ICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0 b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAg ICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdIZWxzaW5r aScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlk JywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYn LCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJz YXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlz Ym9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworU0VMRUNUICogRlJP TSBzYWxlc19saXN0OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBz YWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwg QmVqaW5nICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAg ICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDEx NTAgfCAwMy0wOS0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwg V2Fyc2F3ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwg S3lpdiAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAx NTAgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwg U3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgICAgICAgICAg ICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEy MDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwg T3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAg ICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgICA4 MDAgfCAwMy0wMi0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwg TmV3IFlvcmsgICAgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAg ICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwg TWFkcmlkICAgICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAg ICAgMTQgfCBQbGF0byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICA5 NTAgfCAwMy0wNS0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc193ZXN0 OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsgICAgfCAgICAg ICAgICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgTGlzYm9uICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAg ICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgfCAgICAgICAgICA2 NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgICAgIHwg TGlzYm9uICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisoNCByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2Vhc3Q7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAg ICAgfCBCZWppbmcgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAg ICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFkaXZvc3RvayB8ICAgICAgICAgMTE1 MCB8IDAzLTA5LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJn IHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgorICAgICAgICAgICAgICA3IHwgTWF5ICAg ICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAy MgorICAgICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICAgICB8IE9zbG8gICAgICAgICAg IHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAy MgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAw My0wNC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVybGlu ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBT bWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0y MDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAg fCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoNCByb3dzKQorCistLSBVc2UgaW5kZXhz Y2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3BsaXR0aW5nIHBhcnRpdGlvbgorU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NF TEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcn OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAg ICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAg ICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fy c2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0 ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwg ICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25h bWUgPSAnSXZhbm92JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRB QkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVM VCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsK Ky0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04g Y29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisg ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNf amFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFk ZWNhZGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAyLTA5LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAg ICAgICAxNTAgfCAwMi0wNy0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X21hcjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorKDEg cm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisg ICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQt MzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAg fCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEw IHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAg ICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0y MDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDggcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0t CistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8g cGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20g b3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwK KyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp LAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA0LTEwJykpOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFkZWNhZGU7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAg ICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTA5LTIw MjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAg fCAwMi0wNy0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjJf MWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAg ICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8IFNt aXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisgICAgICAgICAg ICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgor ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVy ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAx MCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAg ICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTkt MjAyMgorKDggcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0 IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24g KyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDUtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAo MSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisg ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90 JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcy MDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwK KyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScp LAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBz YWxlc19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBN YXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAg ICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAg ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEz LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwg ICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8 IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAg ICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8 IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhh bGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgor KDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAg ICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAg IHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAg ICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2U7CistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVy IHRhYmxlLgorLS0KK0NSRUFURSBUQUJMRSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04g QlkgTElTVCAodCk7CitDUkVBVEUgVEFCTEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZB TFVFUyBJTiAoJ0EnKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElU SU9OIEJZIFJBTkdFICh0KTsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBh IHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJU SVRJT04gdDFwYSBJTlRPCisgICAoUEFSVElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdB JykgVE8gKCdCJyksCisgICAgUEFSVElUSU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykg VE8gKCdDJykpOworRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHJlbGF0aW9uICJ0MiIKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworLS0K Ky0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NS RUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JF QVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVu Y2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJp dHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3Qn OjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz OjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAg ICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDIpIHwgdAorKDEgcm93KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikp OworLS0gUGFydGl0aW9ucyBzaG91bGQgYmUgdGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcs IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAg IHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRw XzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAorIHRwXzFfMiB8IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93cykKKworRFJPUCBUQUJMRSB0Owor LS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQgcGFyZW50J3MgdGFibGVzcGFj ZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190 YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykg QU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkg dGFibGVuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNz X3RibHNwYWNlCisgdHBfMF8xICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8 IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4 bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElO ICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u X3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxl c3BhY2U7CisgdGFibGVuYW1lIHwgIGluZGV4bmFtZSAgfCAgICB0YWJsZXNwYWNlICAgIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAg ICAgfCB0X3BrZXkgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCB0cF8w XzFfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIgICAgfCB0cF8xXzJfcGtleSB8 IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKKy0tIENoZWNr IG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QK K0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUg SEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NS RUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVs bmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxh bSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJl Z2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CisgcmVs bmFtZSB8ICAgICAgICBhbW5hbWUgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8wXzEgIHwg cGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8xXzIgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAK KygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRp b25fc3BsaXRfaGVhcDsKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBu ZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0aW9u IHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJST1I6ICBtdXN0 IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FM VEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitB TFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9O IHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJST1I6ICBtdXN0IGJlIG93bmVy IG9mIHRhYmxlIHRwXzBfMgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIg VEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElP TiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBf MV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JF Vk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworLS0g U3BsaXQgcGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxlIHdoZW4gb25lIG9mIHRoZSBw YXJ0aXRpb25zIGFmdGVyCistLSBzcGxpdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcGFy dGl0aW9uIGJlaW5nIHNwbGl0CitDUkVBVEUgVEVNUCBUQUJMRSB0IChhIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzAgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cF8wIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRz IG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQgKAorICBiIGJpZ2lu dCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFVTFQgMTAxLAorICBr IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykKK1BBUlRJVElPTiBC WSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVsdCBQQVJUSVRJT04g T0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYmVm b3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hl bWEudF9iaWdpbnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBT dGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJp Z2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMg YXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0 aXRpb24ga2V5OiBSQU5HRSAoYikKK1BhcnRpdGlvbnM6IHRfYmlnaW50X2RlZmF1bHQgREVG QVVMVAorCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRfZGVm YXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAg ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIg KyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBv ZjogdF9iaWdpbnQgREVGQVVMVAorTm8gcGFydGl0aW9uIGNvbnN0cmFpbnQKKworQUxURVIg VEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgSU5UTwor ICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEw KSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IERFRkFVTFQpOworLS0gU2hvdyBk ZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2lu dF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAi cGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBU eXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQg ICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxh aW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxU CitQYXJ0aXRpb24gY29uc3RyYWludDogKE5PVCAoKGIgSVMgTk9UIE5VTEwpIEFORCAoKGIg Pj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8ICcxMCc6OmJpZ2ludCkpKSkKKworXGQrIHRfYmln aW50XzAxXzEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUg InBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRfMDFfMTAiCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAg ICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFp biAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IEZPUiBWQUxV RVMgRlJPTSAoJzAnKSBUTyAoJzEwJykKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGIgSVMg Tk9UIE5VTEwpIEFORCAoYiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50 KSkKKworRFJPUCBUQUJMRSB0X2JpZ2ludDsKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0 aXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24K K0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxM IE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIoaSBpbnQpOworUkVTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBf MiBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBO YW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzBfMiB8IHRhYmxl IHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygxIHJvdykKKworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAgfCAg TmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8wXzEgfCB0YWJs ZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisKK1xkdCB0cF8x XzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAg ICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25l ciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIHwgdHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZQorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CistLSBUZXN0OiBp bmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3du ZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRB QkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRw XzEwXzIwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitJ TlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEpLCAoMTYpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gcnVuX21lKGludGVnZXIpIFJFVFVSTlMgaW50ZWdlciBBUyAkJAorQkVHSU4KKyAg UkFJU0UgTk9USUNFICd5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgJScsIENVUlJFTlRfVVNFUjsK KyAgUkVUVVJOICQxOworRU5ECiskJCBMQU5HVUFHRSBQTFBHU1FMIElNTVVUQUJMRTsKKy0t IE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5E RVggT04gdCAocnVuX21lKGkpKTsKK05PVElDRTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorTk9USUNFOiAgeW91IGFyZSBydW5uaW5n IG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzEwXzIwIElO VE8KKyAgKFBBUlRJVElPTiB0cF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorICAgUEFSVElUSU9OIHRwXzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkp OworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2UKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21l KGludGVnZXIpOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25l ZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsK K0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RV TFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKKy0tIEVSUk9SOiAg cGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CitB TFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRw MV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCksCisgICBQQVJU SVRJT04gdHAxXzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAyKSk7 CitFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBi ZSBzcGxpdAorLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250 YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMg NCwgUkVNQUlOREVSIDApKTsKK0VSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91 bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0RST1AgVEFCTEUgdDsKKy0tIEFkZGl0 aW9uYWwgdGVzdHMgZm9yIGVycm9yIG1lc3NhZ2VzCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25fbmFtZSB2YXJjaGFyKDMwKSwg c2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDUtMDEnKTsKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0gVGVzdCBmb3Igc3BsaXQgcGFydGl0 aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVO VCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9y IHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFH RSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5U UyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0 aW9uZWQgdGFibGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwK KyB0IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2Rl ZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcy MDIyLTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01N RU5UIE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRwX3gKKyhpIGlu dCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBf eCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAy LTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF94IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfeC5pIElT ICd0cF94LmknOworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9u IGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJ RVMpIG9uIGksIGIgZnJvbSB0cF94OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0 X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQg dF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQg QUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FM VEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElE OworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJ TlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdn ZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElD RSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUn LCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7 CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3Ry aWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NF RFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF94X2JlZm9y ZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJP VworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94Jyk7CitcZCsg dHBfeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94IgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAg ICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0 aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwX3guaQorIHQgICAg ICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3RwX3gnOjp0 ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbWFpbiAgICB8ICAgICAgICAgICAg ICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMi0wMi0yMDIyJzo6ZGF0ZSkgc3RvcmVk IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMg Tk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBj b25zdHJhaW50czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9j aGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENI RUNLIChiID4gMCkgTk9UIFZBTElECitTdGF0aXN0aWNzIG9iamVjdHM6CisgICAgInBhcnRp dGlvbl9zcGxpdF9zY2hlbWEudHBfeF9zdGF0IiAoZGVwZW5kZW5jaWVzKSBPTiBpLCBiIEZS T00gdHBfeAorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwX3hfaV9ub3RfbnVsbCIg Tk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChp bmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jv d190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKyAgICB0cF94X2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNI IFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKQorCitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF94IElOVE8KKyAgKFBBUlRJVElPTiB0cF8w XzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfeCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEudHBfeCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0 b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICAgfCAgICAgICAgICAgICAgfCAKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGQgICAg ICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMg YXMgKCcwMS0wMS0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAgICAgICAgICAg ICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKQorUGFy dGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+ PSAxKSBBTkQgKGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9j aGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5P VCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImki IChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5P VCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJF Rk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmln Z2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBi KSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDog YWN0aW9uID0gSU5TRVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKKyB0YWJsZW9pZCB8IGkg fCAgICAgIHQgICAgICAgfCBiIHwgICAgIGQgICAgICAKKy0tLS0tLS0tLS0rLS0tKy0tLS0t LS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0KKyB0cF8wXzEgICB8IDAgfCBkZWZhdWx0X3Rw X3ggfCAxIHwgMDEtMDEtMjAyMgorIHRwX3ggICAgIHwgMSB8IGRlZmF1bHRfdHBfeCB8IDIg fCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAxIHwgZGVmYXVsdF90ICAgIHwgMyB8IDAxLTAx LTIwMjIKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jdGlvbigpOworLS0gVGVzdCBmb3IgcmVjb21wdXRhdGlvbiBvZiBzdG9yZWQgZ2Vu ZXJhdGVkIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2Vu ZXJhdGVkIGFsd2F5cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdF IChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIGNjIENIRUNL KHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgx KTsKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJv dyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5E IHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50 IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKKy0tICJ0YWJfaWQiIGNvbHVtbiAoc3Rv cmVkIGdlbmVyYXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUgcmVxdWly ZXMKKy0tIHJlY29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZv ciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlm aWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkg PSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsK KyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CitS RVNFVCBzZWFyY2hfcGF0aDsKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA2NDY0YTIzOGFjLi5hOThhZWY3Y2ExIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0 OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNz IHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMs IHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhp cyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlv bl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBw YXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNv bXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRpdGlv bl9tZXJnZSBwYXJ0aXRpb25fc3BsaXQgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5l IHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFy dGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0 cyBwcmVkaWNhdGUgbnVtYQogCiAjIGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVf YW0gYW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBy dW5zIERETApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3Nw bGl0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjgxNmM5MTU5NwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwK QEAgLTAsMCArMSwxMTg4IEBACistLQorLS0gUEFSVElUSU9OX1NQTElUCistLSBUZXN0cyBm b3IgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gLi4uIiBjb21tYW5kCistLQor CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitDUkVBVEUgU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u X3NwbGl0X3NjaGVtYSwgcHVibGljOworCistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5n CistLQorCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25fbmFtZSB2YXJj aGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNh bGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc194eHggSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBpbnZhbGlkIGJvdW5kIHNw ZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAxJywgJzIw MjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CisKKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKKy0tRVJST1I6ICBsaXN0IG9mIHNwbGl0IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRh aW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMTAt MDEnKSk7CisKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAic2Fs ZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRl IHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQg Y2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9S OiAgbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAy MiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19hcHIyMDIyIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3Bs aXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CisKKy0tIEVS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBjb25mbGlj dHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2ZlYjIw MjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIFRlc3RzIGZvciBz cGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3aXRo b3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBERVRBQ0gg UEFSVElUSU9OIHNhbGVzX290aGVyczsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBv ZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKwor LS0gQ2hlY2sgdGhlIHNvdXJjZSBwYXJ0aXRpb24gbm90IGluIHRoZSBzZWFyY2ggcGF0aAor U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIsIHB1YmxpYzsKK0FM VEVSIFRBQkxFIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UKK1NQTElUIFBB UlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSwgcHVibGljOworXGQrIHNhbGVzX3JhbmdlCisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsKKworLS0KKy0tIEFkZCByb3dz IGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhlbiBzcGxpdCBwYXJ0aXRpb24KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz X3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBz YWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyOworU0VMRUNUICog RlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIEFkZCBzcGxpdCBwYXJ0 aXRpb24sIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gU3BsaXQgcGFydGl0 aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBwYXJ0aXRpb25z CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5nZQorCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisg ICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcy MDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwK KyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcp LAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0 Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9N IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICog Y29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0t ICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwg c2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIo MTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0 LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcu JyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19k ZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp OworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0 ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9S IFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwg NyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIy LCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywg MjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2Vy MScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFu YWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VM RUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmVi MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0FMVEVSIFRBQkxFIHNhbGVz X2RhdGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIw MjIsIDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworCitJTlNFUlQgSU5UTyBzYWxlc19k YXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIy JywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVy OworCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBl eGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKworRFJPUCBUQUJMRSBz YWxlc19kYXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRp dGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVy IHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JF QVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyczsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5h bWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGluZGV4c2Nh biBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VU IGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNf bWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJP TSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0g T047CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2Fs ZXNfZmViMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScg T1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRh YmxlbmFtZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25f c3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CitTRUxFQ1QgKiBGUk9NIHBnX2lu ZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1l ID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVD VCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBh bmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRl eG5hbWU7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRl c3Q6IHNvbWUgY2FzZXMgZm9yIHNwbGl0dGluZyBERUZBVUxUIHBhcnRpdGlvbiAoZGlmZmVy ZW50IGJvdW5kcykKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29u X2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAo bG93ZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRp dGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAyMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIw MSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBl ciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKwor LS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGluc2lkZSBi b3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJv ciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJz YWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0g c2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGV4YWN0bHkgdGhl IHNhbWUgYm91bmRzKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0 aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAy MDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworCistLSBFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERF RkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAy MjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworCistLSBubyBlcnJv cjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMiBh bmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEp IFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJy b3IgYXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAy MiBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAy MDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdDogc3BsaXQgcGFy dGl0aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRp dGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChz YWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihv aWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlk ID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29u bmFtZTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBXZSBzaG91 bGQgc2VlIHRoZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1l LCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2Zl YjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgY29ubmFtZTs7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29u bmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxl c19hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKworLS0gRVJS T1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hl Y2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworLS0gRVJS T1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9m a2V5IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAz LTExJyk7CistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwg JzIwMjItMDMtMTEnKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJP UCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFy dGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlH TiBLRVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQp OworQ1JFQVRFIFRBQkxFIHNhbGVzIChzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBP RiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVT CisgICgxLCAgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92Jyks CisgICgyMCwgJ1NtaXJub2ZmJyksCisgICgzMCwgJ0ZvcmQnKTsKKworSU5TRVJUIElOVE8g c2FsZXMgVkFMVUVTCisgICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpLAorICAoMSwgIDExMCwg JzIwMjItMDMtMDInKSwKKyAgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyksCisgICgxMCwgOTAs ICAnMjAyMi0wMy0wMycpLAorICAoMTksIDIwMCwgJzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1 MCwgICcyMDIyLTAzLTEyJyksCisgICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpLAorICAoMzAs IDMwLCAgJzIwMjItMDMtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEw OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzQwOworCitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAor ICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8g KDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAo MzApIFRPICg0MCkpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7CitTRUxF Q1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxl MjBfMzA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMzBfNDA7CisKKy0tIEVSUk9SOiAg aW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBz YWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CistLSBvaworSU5TRVJUIElO VE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworCitEUk9QIFRBQkxF IHNhbGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0 cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNh bGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2Vy IExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0 cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRH X0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsK K0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNw ZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBh ZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFURSBUUklH R0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElO U0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VU RSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOwor CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdn ZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBf NDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBT UExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElU SU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAg IFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0 MCkpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVu dCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsK Ky0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzcGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfMjA7CitTRUxF Q1QgKiBGUk9NIHNhbGVzcGVvcGxlMjBfMzA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxl MzBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJ T04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0tCistLSBUZXN0OiBzcGxpdCBw YXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBzcGxpdCBwYXJ0aXRpb24g Y29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBvZiBuZXcgcGFydGl0aW9ucyBh cmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl KHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1B UlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMV8yIFBB UlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0t IENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHkgY29sdW1uOgorQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMl81KHNhbGVzcGVyc29uX2lkIElOVCBOT1QgTlVMTCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRB Q0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUp OworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVT ICgnUG9pcm90JyksICgnSXZhbm92Jyk7CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0 eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRu dW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBn X2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3Bs ZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0gU3BsaXQgcGFydGl0 aW9uIGhhcyBpZGVudGl0eSBjb2x1bW46CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHks IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBh dHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0 bnVtOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNw ZW9wbGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxVRVMg RlJPTSAoMikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxV RVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlNF81IEZPUiBW QUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNh bGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKKworU0VMRUNUICog RlJPTSBzYWxlc3Blb3BsZTFfMjsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUyXzM7CitT RUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlM180OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3Bs ZTRfNTsKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNw ZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9p ZCBPUkRFUiBCWSBhdHRudW07CistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNv bHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9N IHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Bl b3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5h bWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUg YXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6 b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNw bGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQp OworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0 aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBL RVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUg MScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIw LCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUx MF80MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJP UCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1O IGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz cGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScp LAorICAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBB UlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2Fs ZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElU SU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisK K3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNw ZW9wbGUxMF8yMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUyMF8zMDsKK3NlbGVjdCAq IGZyb20gc2FsZXNwZW9wbGUzMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVND QURFOworCistLQorLS0gVGVzdDogc3BsaXQgc3ViLXBhcnRpdGlvbgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CisKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyks CisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwg ICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcn KSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1 LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsK KworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXBy X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8g KCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxF Q1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEwOworU0VMRUNUICogRlJPTSBzYWxl c19hcHIyMDIyXzEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25p bmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFy dGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9p ZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBW QVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19u b3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0 LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywg J0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0 aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0 KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElU IFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9S IFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxh ZGl2b3N0b2snLCAnSGVsc2lua2knKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZP UiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9S OiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3Ro ZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxo aScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnTGlzYm9uJywgJ0t5aXYnKSk7CisKKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2 YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4g KCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7 CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUg dGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBG T1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQ QVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxp bicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERF RkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFS VElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CisKK0RS T1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJv cnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRv IG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAg ICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRp dGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9p ZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBW QVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19u b3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScs ICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywg J0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0 aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcwor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04g c2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2 JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdL eWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CisKKy0tIEVSUk9SICBERUZBVUxU IHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElU IFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9S IFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxh ZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworCitE Uk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlv bmluZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19saXN0Cisoc2FsZXNwZXJzb25faWQgU0VSSUFMLAorIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElO VCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUp OworCitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBz YWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRF WCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVl IChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVy ZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2 b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisg ICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAor ICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwK KyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyks CisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcp LAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcn KSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0w NicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMt MDknKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAz LTExJyksCisgICgnSGFsZGVyJywgICAnSGVsc2lua2knLCAgICAgICAgODAwLCAnMjAyMi0w My0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjIt MDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIy LTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAy Mi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIw MjItMDMtMDUnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04g c2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyks CisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdLeWl2JykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX3dlc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Vhc3Q7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWw7CisK Ky0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBzcGxpdHRpbmcg cGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFz Y2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNf c3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxl c19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNh bGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBP TjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7 CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0 byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRv bSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5JyksCisg ICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcy MDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKSwK KyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcp LAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0 Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA0LTEwJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsK K1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBz YWxlc19tYXIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRl Y2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQg cGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7Cist LSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNv bW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNf amFuMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00g c2FsZXNfYXByMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24t REVGQVVMVCBwYXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCist LSB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisg ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwK KyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp LAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21p dGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jh bmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBU cnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRB QkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBU QUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRF IFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworCist LSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRp b24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQxcGEgSU5UTworICAg KFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicpLAorICAgIFBB UlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsKKworRFJPUCBU QUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0 aW9uIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworU0VMRUNUIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBC WSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVG QVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJ T04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIFBhcnRpdGlvbnMgc2hv dWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywg cGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBl cnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBn X2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVu dCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNr IHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdzIHRhYmxlc3BhY2UKK0NSRUFU RSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisg IFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hl bWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFt ZSwgdGFibGVzcGFjZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFj ZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEn LCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScK KyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CitEUk9QIFRB QkxFIHQ7CisKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRh YmxlIGFjY2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxp dF9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFU RSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRp b25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lO IHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdj bGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBC WSBjLnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0 aW9uX3NwbGl0X2hlYXA7CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNl ciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0 aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsK KworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK K0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMik7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElO VE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisg ICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRw XzBfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8x IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047 CisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworCistLSBTcGxp dCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRp dGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRp b24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQgKGEgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSksCisgICBQQVJUSVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7 CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBv ZiBuZXcgcGFydGl0aW9ucworQ1JFQVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQs CisgIGkgaW50IERFRkFVTFQgKDMrMTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkg UkFOR0UgKGIpOworQ1JFQVRFIFRBQkxFIHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9G IHRfYmlnaW50IERFRkFVTFQ7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9y ZSBTUExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludAorXGQrIHRfYmlnaW50X2RlZmF1bHQK K0FMVEVSIFRBQkxFIHRfYmlnaW50IFNQTElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0 IElOVE8KKyAgKFBBUlRJVElPTiB0X2JpZ2ludF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxMCksCisgICBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUKTsKKy0t IFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYWZ0ZXIgU1BMSVQgUEFSVElUSU9OCitcZCsg dF9iaWdpbnRfZGVmYXVsdAorXGQrIHRfYmlnaW50XzAxXzEwCitEUk9QIFRBQkxFIHRfYmln aW50OworCisKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0 aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworCitD UkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitD UkVBVEUgVEFCTEUgdHBfMF8yKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TjsKKworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVT IEZST00gKDApIFRPICgyKTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlJzoKK1xkdCB0cF8wXzIKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsKKworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZSc6CitcZHQgdHBfMF8xCitcZHQgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKK1JFVk9L RSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9hbGljZTsKKworCistLSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQg YmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorQ1JF QVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgx Nik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJO UyBpbnRlZ2VyIEFTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmlu ZyBtZSBhcyAlJywgQ1VSUkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdV QUdFIFBMUEdTUUwgSU1NVVRBQkxFOworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2UnOgorQ1JFQVRFIElOREVYIE9OIHQgKHJ1bl9tZShpKSk7CitSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMTBfMjAgSU5UTworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSksCisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9N ICgxNSkgVE8gKDIwKSk7CisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21l KGludGVnZXIpOworCitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CisKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0 aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0go aSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CisKKy0tIEVS Uk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNw bGl0CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElU SU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCksCisg ICBQQVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRF UiAyKSk7CisKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29u dGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVT IDQsIFJFTUFJTkRFUiAwKSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBBZGRpdGlvbmFs IHRlc3RzIGZvciBlcnJvciBtZXNzYWdlcworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVz X2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19h cHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CisKK0RST1AgVEFCTEUgc2FsZXNf cmFuZ2U7CisKKworLS0gVGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3BlcnRpZXM6Cist LSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBE RUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxl CistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQg dGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMg R0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICog VFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQorCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdF IEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJp Z2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9S RUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQu aSBJUyAndDEuaSc7CisKK0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisg dCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50 LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7 CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKKwor Q1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0 OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIg ZnJvbSB0cF94OworCitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBD SEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sx IENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RS QUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUg dCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CisKK0lOU0VS VCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElO VE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CisKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFO R1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJp Z2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19B UkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7 CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dl ciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJF IHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2lu c2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsKKworXGQrIHRw X3gKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0 cF94IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94CisKK0lOU0VSVCBJ TlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKK0RST1AgVEFCTEUgdDsKK0RST1Ag RlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworCisKKy0tIFRlc3QgZm9yIHJlY29tcHV0 YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkg aW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQg Q09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElO VE8gdCBWQUxVRVMgKDApLCAoMSk7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFy dGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQg V0hFUkUgaSA9IDEpOworCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQg Y29sdW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1 dGF0aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5U TworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAg IFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBT aG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBp PTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cg d2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJf aWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworRFJPUCBUQUJM RSB0OworCisKK1JFU0VUIHNlYXJjaF9wYXRoOworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEy OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBhODM0NmNkYTYzLi41NmFjNDQ3 Mjg4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjc2MCw2ICsyNzYwLDcg QEAgU2ltcGxlU3RhdHMKIFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBsZVN0cmluZ0xpc3RDZWxs CiBTaW5nbGVCb3VuZFNvcnRJdGVtCitTaW5nbGVQYXJ0aXRpb25TcGVjCiBTaXplCiBTa2lw UGFnZXMKIFNraXBTdXBwb3J0CkBAIC0yODI2LDYgKzI4MjcsNyBAQCBTcGVjaWFsSm9pbklu Zm8KIFNwaW5EZWxheVN0YXR1cwogU3BsaXRJbnRlcnZhbAogU3BsaXRMUgorU3BsaXRQYXJ0 aXRpb25Db250ZXh0CiBTcGxpdFBhZ2VMYXlvdXQKIFNwbGl0UG9pbnQKIFNwbGl0VGV4dE91 dHB1dERhdGEKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------idA7oXwm00VbE6yDVktLrb2V--