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 1rsjBe-008sdz-4V for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Apr 2024 13:00:56 +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 1rsjBd-00FPkU-BZ for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Apr 2024 13:00:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rsjBc-00FPkL-Gj for pgsql-hackers@lists.postgresql.org; Fri, 05 Apr 2024 13:00:52 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rsjBV-000n3Z-QF for pgsql-hackers@lists.postgresql.org; Fri, 05 Apr 2024 13:00:51 +0000 Received: from [172.30.11.66] (unknown [172.30.11.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 0B54FE2102B; Fri, 5 Apr 2024 16:00:44 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1712322044; bh=jESLpHt2UmIO5iWSAaPKdcPHeJEO7nYnpUFGGHrp6f4=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=lAGwgQGYIVZckrqDHl++1Oy057bgzYHdv/Q03fqpOr27j6z7czz+fE8wVqIMfkFSp QHTKxRhfMK0xcsUj/NnJme7kk6VxCgsQ+C1Lh/GviCMZXn5/AwWih34Vxff4pbqYHm rk6hJp9Ce99G4NlGhTbojw6nNsBvzgMAYMBCiNpkAct5j0pz1r2YbRaNdnmnAGAe8/ J7sVPbJO+LcBmiiHiK6rDhjNPx2NdZNq8WQHaUL8S3xtFcMYEh4w8JVfCbtZocGKGt ZzzcCm4w13Gazw/osRYGXf4R2xsP7BcVMUImZat0XraJqbPtRInp8QdIq2qyxXwcPy 2RlhbA9RSd7EA== Content-Type: multipart/mixed; boundary="------------zvgZ3AVND0XMAdKBco4vZL9d" Message-ID: Date: Fri, 5 Apr 2024 16:00:44 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Alexander Korotkov Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <171085858750.2046434.12246066729700037354.pgcf@coridan.postgresql.org> <909e16b4-9eda-435c-b033-8294ae4adc05@postgrespro.ru> <3a4b9c1c-3edf-4e29-9629-b4113aefb0f3@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------zvgZ3AVND0XMAdKBco4vZL9d Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! > I've revised the patchset. Thanks for the corrections (especially ddl.sgml). Could you also look at a small optimization for the MERGE PARTITIONS command (in a separate file v31-0003-Additional-patch-for-ALTER-TABLE-.-MERGE-PARTITI.patch, I wrote about it in an email 2024-03-31 00:56:50)? Files v31-0001-*.patch, v31-0002-*.patch are the same as v30-0001-*.patch, v30-0002-*.patch (after rebasing because patch stopped applying due to changes in upstream). -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------zvgZ3AVND0XMAdKBco4vZL9d Content-Type: text/plain; charset=UTF-8; name="v31-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v31-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4OGJhOTVjMWNiZGM0OTgzZjI3OTg1YmQ0NDBkNzE5NzBlNjk2ODhjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogVHVlLCAyIEFwciAyMDI0IDIzOjI0OjMyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2MzEgMS8zXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzCi0tLQogZG9jL3NyYy9zZ21sL2Rk bC5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICA3NyArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgMzU0ICsrKysrKysrLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDIyICstCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAgODkgKysr CiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jICAgICAgICAgfCAyMDcg KysrKysKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8 ICAxNCArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCAgICAgICAg IHwgICA2ICsKIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dCAg ICB8IDE5OSArKysrKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSAg ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVy Z2Uuc3BlYyB8ICA1NCArKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJz ZS5jICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X21lcmdlLm91dCB8IDczMiArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCAgICAgIHwgNDMwICsrKysrKysrKysKIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxNyBm aWxlcyBjaGFuZ2VkLCAyMTg5IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24t bWVyZ2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L3BhcnRpdGlvbi1tZXJnZS5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbAoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCA2 YmM0M2FkMTBjLi5mOWYyNzc4YjNkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00Mzc5LDYgKzQzNzksMjUgQEAg QUxURVIgVEFCTEUgbWVhc3VyZW1lbnRfeTIwMDZtMDIgQUREIFVOSVFVRSAoY2l0eV9pZCwg bG9nZGF0ZSk7CiBBTFRFUiBJTkRFWCBtZWFzdXJlbWVudF9jaXR5X2lkX2xvZ2RhdGVfa2V5 CiAgICAgQVRUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMl9jaXR5X2lkX2xv Z2RhdGVfa2V5OwogLi4uCis8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBUaGVyZSBpcyBhbHNvIGFuIG9wdGlvbiBmb3IgbWVyZ2luZyBtdWx0 aXBsZSB0YWJsZSBwYXJ0aXRpb25zIGludG8KKyAgICAgYSBzaW5nbGUgcGFydGl0aW9uIHVz aW5nIHRoZQorICAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0 aXRpb25zIj48Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUzwvY29t bWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUgc2ltcGxpZmllcyB0aGUgbWFuYWdl bWVudCBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgYnkgYWxsb3dpbmcKKyAgICAgYWRtaW5pc3Ry YXRvcnMgdG8gY29tYmluZSBwYXJ0aXRpb25zIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQg YXMKKyAgICAgc2VwYXJhdGUgZW50aXRpZXMuICBJdCdzIGltcG9ydGFudCB0byBub3RlIHRo YXQgdGhpcyBvcGVyYXRpb24gaXMgbm90CisgICAgIHN1cHBvcnRlZCBmb3IgaGFzaC1wYXJ0 aXRpb25lZCB0YWJsZXMgYW5kIGFjcXVpcmVzIGFuCisgICAgIDxsaXRlcmFsPkFDQ0VTUyBF WENMVVNJVkU8L2xpdGVyYWw+IGxvY2ssIHdoaWNoIGNvdWxkIGltcGFjdCBoaWdoLWxvYWQK KyAgICAgc3lzdGVtcyBkdWUgdG8gdGhlIGxvY2sncyByZXN0cmljdGl2ZSBuYXR1cmUuICBG b3IgZXhhbXBsZSwgd2UgY2FuCisgICAgIG1lcmdlIHRocmVlIG1vbnRobHkgcGFydGl0aW9u cyBpbnRvIG9uZSBxdWFydGVyIHBhcnRpdGlvbjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVS IFRBQkxFIG1lYXN1cmVtZW50CisgICAgTUVSR0UgUEFSVElUSU9OUyAobWVhc3VyZW1lbnRf eTIwMDZtMDEsCisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZtMDIs CisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZtMDMpIElOVE8gbWVh c3VyZW1lbnRfeTIwMDZxMTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJhPgogICAg PC9zZWN0Mz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCA2Y2RjZDc3OWVm Li5lMGE5OGJjNTM4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC0zNyw2 ICszNyw5IEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFDSCBQQVJUSVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CiBBTFRFUiBUQUJM RSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4KICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsgQ09OQ1VSUkVOVExZ IHwgRklOQUxJWkUgXQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAgTUVSR0UgUEFSVElU SU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkKKyAgICAgICAgSU5UTyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgogCiA8 cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY3Rpb248L3Jl cGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTExMTgsMTQgKzExMjEsNzQg QEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVy aWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLW1l cmdlLXBhcnRpdGlvbnMiPgorICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlMg KDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgor CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdl dCB0YWJsZS4KKyAgICAgIEhhc2gtcGFydGl0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQuICBJ ZiBERUZBVUxUIHBhcnRpdGlvbiBpcyBub3QgaW4gdGhlCisgICAgICBsaXN0IG9mIHBhcnRp dGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06CisgICAgICA8aXRlbWl6ZWRs aXN0PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3Ig cmFuZ2UtcGFydGl0aW9uZWQgdGFibGVzIGlzIG5lY2Vzc2FyeSB0aGF0IHRoZSByYW5nZXMK KyAgICAgICAgIG9mIHRoZSBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBb LCAuLi5dIGNhbgorICAgICAgICAgYmUgbWVyZ2VkIGludG8gb25lIHJhbmdlIHdpdGhvdXQg c3BhY2VzIGFuZCBvdmVybGFwcyAob3RoZXJ3aXNlIGFuIGVycm9yCisgICAgICAgICB3aWxs IGJlIGdlbmVyYXRlZCkuICBUaGUgY29tYmluZWQgcmFuZ2Ugd2lsbCBiZSB0aGUgcmFuZ2Ug Zm9yIHRoZSBwYXJ0aXRpb24KKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICA8L3BhcmE+Cisg ICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgor ICAgICAgICAgRm9yIGxpc3QtcGFydGl0aW9uZWQgdGFibGVzIHRoZSB2YWx1ZXMgbGlzdHMg b2YgYWxsIHBhcnRpdGlvbnMKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBb LCAuLi5dIGFyZQorICAgICAgICAgY29tYmluZWQgYW5kIGZvcm0gYSBsaXN0IG9mIHZhbHVl cyBvZiBwYXJ0aXRpb24KKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICA8L3BhcmE+CisgICAg ICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgSWYgREVGQVVM VCBwYXJ0aXRpb24gaXMgaW4gdGhlIGxpc3Qgb2YgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBs YWNlYWJsZT4gWywgLi4uXToKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBwYXJ0aXRpb24gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAg ICAgICAgIHdpbGwgYmUgdGhlIERFRkFVTFQgcGFydGl0aW9uLgorICAgICAgICA8L3BhcmE+ CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJh PgorICAgICAgICAgRm9yIHJhbmdlLSBhbmQgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZXMgdGhl IHJhbmdlcyBhbmQgbGlzdHMgb2YgdmFsdWVzCisgICAgICAgICBvZiB0aGUgbWVyZ2VkIHBh cnRpdGlvbnMgY2FuIGJlIGFueS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9uIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+CisgICAgICBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgbWVyZ2Vk IHBhcnRpdGlvbnMuICBPbmx5IHNpbXBsZSwKKyAgICAgIG5vbi1wYXJ0aXRpb25lZCBwYXJ0 aXRpb25zIGNhbiBiZSBtZXJnZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPG5vdGU+CisgICAg ICA8cGFyYT4KKyAgICAgICBUaGlzIGNvbW1hbmQgYWNxdWlyZXMgYW4gPGxpdGVyYWw+QUND RVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jay4KKyAgICAgICBUaGlzIGlzIGEgc2lnbmlm aWNhbnQgbGltaXRhdGlvbiwgd2hpY2ggbGltaXRzIHRoZSB1c2FnZSBvZiB0aGlzCisgICAg ICAgY29tbWFuZCB3aXRoIGxhcmdlIHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2gg bG9hZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCiAg IDxwYXJhPgogICAgQWxsIHRoZSBmb3JtcyBvZiBBTFRFUiBUQUJMRSB0aGF0IGFjdCBvbiBh IHNpbmdsZSB0YWJsZSwgZXhjZXB0CiAgICA8bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+LCA8 bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKLSAgIDxsaXRlcmFsPkFUVEFDSCBQQVJU SVRJT048L2xpdGVyYWw+LCBhbmQKLSAgIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xp dGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElU SU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCisg ICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJp bmVkIGludG8KICAgIGEgbGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBs aWVkIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQg c2V2ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBj b2x1bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2Vm dWwgd2l0aCBsYXJnZQpAQCAtMTM2OCw3ICsxNDMxLDggQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgog ICAgICAgIDxwYXJhPgotICAgICAgICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNo IGFzIGEgbmV3IHBhcnRpdGlvbiBvciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLgorICAg ICAgICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3IHBhcnRpdGlv biBvciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLAorICAgICAgICBvciB0aGUgbmFtZSBv ZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9s aXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xNzg0LDYgKzE4NDgsMTMgQEAg QUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVt ZW50X3kyMDE1bTEyOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+Cisg ICBUbyBtZXJnZSBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byBvbmUgcGFydGl0aW9uIG9mIHRo ZSB0YXJnZXQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2Nl bnRyYWwpCisgICAgSU5UTyBzYWxlc19hbGw7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4K KwogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCmluZGV4IDMxN2I4OWY2N2MuLjA1ZTg2ZGU4ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCkBAIC02NzAsNiArNjcwLDggQEAgc3RhdGljIHZvaWQgQVREZXRhY2hDaGVj a05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdl dEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29tcHJl c3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQs IGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKIAorc3RhdGljIHZvaWQgQVRFeGVjTWVyZ2VQ YXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRp b24gcmVsLAorCQkJCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0 eUNvbnRleHQgKmNvbnRleHQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRp b24KQEAgLTQ3MzgsNiArNDc0MCwxMCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3Qg KmNtZHMpCiAJCQkJY21kX2xvY2ttb2RlID0gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrOwog CQkJCWJyZWFrOwogCisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQljbWRfbG9j a21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0 OgkJCS8qIG9vcHMgKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRh YmxlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC01MTU3LDYg KzUxNjMsMTEgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0 ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRl ZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJyZWFrOworCQljYXNlIEFUX01l cmdlUGFydGl0aW9uczoKKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCBy ZWwsIEFUVF9UQUJMRSk7CisJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVk ICovCisJCQlwYXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJ CS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUg dHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTU1NCw2ICs1NTY1 LDE0IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs CiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQlhZGRyZXNzID0gQVRF eGVjRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBhcnRpdGlvbkNtZCAqKSBjbWQt PmRlZiktPm5hbWUpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgor CQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZh bHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOworCQkJQXNz ZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY01lcmdlUGFydGl0aW9ucyh3 cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkg IGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAo aW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjU0OCw2ICs2NTY3LDggQEAgYWx0ZXJfdGFibGVf dHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJldHVybiAiREVU QUNIIFBBUlRJVElPTiI7CiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJ CQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKKwkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CisJCQlyZXR1cm4gIk1FUkdFIFBBUlRJVElPTlMiOwogCQljYXNl IEFUX0FkZElkZW50aXR5OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIEFERCBJREVO VElUWSI7CiAJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CkBAIC0xOTA0Miw2ICsxOTA2MywzNyBA QCBRdWV1ZVBhcnRpdGlvbkNvbnN0cmFpbnRWYWxpZGF0aW9uKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHNjYW5yZWwsCiAJfQogfQogCisvKgorICogYXR0YWNoUGFydGl0aW9uVGFibGU6 IGF0dGFjaCBuZXcgcGFydGl0aW9uIHRvIHBhcnRpdGlvbmVkIHRhYmxlCisgKgorICogd3F1 ZXVlOiB0aGUgQUxURVIgVEFCTEUgd29yayBxdWV1ZTsgY2FuIGJlIE5VTEwgd2hlbiBub3Qg cnVubmluZyBhcyBwYXJ0CisgKiAgIG9mIGFuIEFMVEVSIFRBQkxFIHNlcXVlbmNlLgorICog cmVsOiBwYXJ0aXRpb25lZCByZWxhdGlvbjsKKyAqIGF0dGFjaHJlbDogcmVsYXRpb24gb2Yg YXR0YWNoZWQgcGFydGl0aW9uOworICogYm91bmQ6IGJvdW5kcyBvZiBhdHRhY2hlZCByZWxh dGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2F0dGFjaFBhcnRpdGlvblRhYmxlKExpc3QgKip3 cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0YWNocmVsLCBQYXJ0aXRpb25Cb3Vu ZFNwZWMgKmJvdW5kKQoreworCS8qIE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4gIFJlc3Qg b2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KKwlDcmVhdGVJbmhlcml0YW5jZShh dHRhY2hyZWwsIHJlbCwgdHJ1ZSk7CisKKwkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIGVudHJ5 LiAqLworCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0YWNocmVsLCByZWwsIGJvdW5kKTsKKwor CS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVzIGluIHRo ZSBwYXJ0aXRpb24uICovCisJQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3cXVldWUs IHJlbCwgYXR0YWNocmVsKTsKKworCS8qIGFuZCB0cmlnZ2VycyAqLworCUNsb25lUm93VHJp Z2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7CisKKwkvKgorCSAqIENsb25lIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0 aW5nIHVwCisJICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24uCisJICov CisJQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7 Cit9CisKIC8qCiAgKiBBTFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElPTiA8cGFy dGl0aW9uLW5hbWU+IEZPUiBWQUxVRVMKICAqCkBAIC0xOTI0NCwyMyArMTkyOTYsOCBAQCBB VEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0 aXRpb25DbWQgKmNtZCwKIAljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGF0dGFjaHJlbCksIHJlbCwKIAkJCQkJCQkgIGNtZC0+Ym91bmQsIHBz dGF0ZSk7CiAKLQkvKiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBj aGVja3MgcGVyZm9ybWVkIHRoZXJlICovCi0JQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVs LCByZWwsIHRydWUpOwotCi0JLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KLQlT dG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBjbWQtPmJvdW5kKTsKLQotCS8q IEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVzIGluIHRoZSBw YXJ0aXRpb24uICovCi0JQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3cXVldWUsIHJl bCwgYXR0YWNocmVsKTsKLQotCS8qIGFuZCB0cmlnZ2VycyAqLwotCUNsb25lUm93VHJpZ2dl cnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKgotCSAqIENsb25lIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5n IHVwCi0JICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24uCi0JICovCi0J Q2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisJ LyogQXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuICov CisJYXR0YWNoUGFydGl0aW9uVGFibGUod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCwgY21kLT5i b3VuZCk7CiAKIAkvKgogCSAqIEdlbmVyYXRlIHBhcnRpdGlvbiBjb25zdHJhaW50IGZyb20g dGhlIHBhcnRpdGlvbiBib3VuZCBzcGVjaWZpY2F0aW9uLgpAQCAtMjA4MTQsMyArMjA4NTEs Mjg2IEBAIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpz dG9yYWdlbW9kZSkKIAogCXJldHVybiBjc3RvcmFnZTsKIH0KKworLyoKKyAqIGNyZWF0ZVBh cnRpdGlvblRhYmxlOiBjcmVhdGUgdGFibGUgZm9yIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZl biBuYW1lCisgKiAobmV3UGFydE5hbWUpIGxpa2UgdGFibGUgKG1vZGVsUmVsTmFtZSkKKyAq CisgKiBFbXVsYXRlcyBjb21tYW5kOiBDUkVBVEUgVEFCTEUgPG5ld1BhcnROYW1lPiAoTElL RSA8bW9kZWxSZWxOYW1lPgorICogSU5DTFVESU5HIEFMTCBFWENMVURJTkcgSU5ERVhFUyBF WENMVURJTkcgSURFTlRJVFkpCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVQYXJ0aXRpb25U YWJsZShSYW5nZVZhciAqbmV3UGFydE5hbWUsIFJhbmdlVmFyICptb2RlbFJlbE5hbWUsCisJ CQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJQ3JlYXRlU3Rt dCAqY3JlYXRlU3RtdDsKKwlUYWJsZUxpa2VDbGF1c2UgKnRsYzsKKwlQbGFubmVkU3RtdCAq d3JhcHBlcjsKKworCWNyZWF0ZVN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsKKwljcmVh dGVTdG10LT5yZWxhdGlvbiA9IG5ld1BhcnROYW1lOworCWNyZWF0ZVN0bXQtPnRhYmxlRWx0 cyA9IE5JTDsKKwljcmVhdGVTdG10LT5pbmhSZWxhdGlvbnMgPSBOSUw7CisJY3JlYXRlU3Rt dC0+Y29uc3RyYWludHMgPSBOSUw7CisJY3JlYXRlU3RtdC0+b3B0aW9ucyA9IE5JTDsKKwlj cmVhdGVTdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisJY3JlYXRlU3RtdC0+dGFi bGVzcGFjZW5hbWUgPSBOVUxMOworCWNyZWF0ZVN0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxz ZTsKKworCXRsYyA9IG1ha2VOb2RlKFRhYmxlTGlrZUNsYXVzZSk7CisJdGxjLT5yZWxhdGlv biA9IG1vZGVsUmVsTmFtZTsKKworCS8qCisJICogSW5kZXhlcyB3aWxsIGJlIGluaGVyaXRl ZCBvbiAiYXR0YWNoIG5ldyBwYXJ0aXRpb25zIiBzdGFnZSwgYWZ0ZXIgZGF0YQorCSAqIG1v dmluZy4KKwkgKi8KKwl0bGMtPm9wdGlvbnMgPSBDUkVBVEVfVEFCTEVfTElLRV9BTEwgJiB+ KENSRUFURV9UQUJMRV9MSUtFX0lOREVYRVMgfCBDUkVBVEVfVEFCTEVfTElLRV9JREVOVElU WSk7CisJdGxjLT5yZWxhdGlvbk9pZCA9IEludmFsaWRPaWQ7CisJY3JlYXRlU3RtdC0+dGFi bGVFbHRzID0gbGFwcGVuZChjcmVhdGVTdG10LT50YWJsZUVsdHMsIHRsYyk7CisKKwkvKiBO ZWVkIHRvIG1ha2UgYSB3cmFwcGVyIFBsYW5uZWRTdG10LiAqLworCXdyYXBwZXIgPSBtYWtl Tm9kZShQbGFubmVkU3RtdCk7CisJd3JhcHBlci0+Y29tbWFuZFR5cGUgPSBDTURfVVRJTElU WTsKKwl3cmFwcGVyLT5jYW5TZXRUYWcgPSBmYWxzZTsKKwl3cmFwcGVyLT51dGlsaXR5U3Rt dCA9IChOb2RlICopIGNyZWF0ZVN0bXQ7CisJd3JhcHBlci0+c3RtdF9sb2NhdGlvbiA9IGNv bnRleHQtPnBzdG10LT5zdG10X2xvY2F0aW9uOworCXdyYXBwZXItPnN0bXRfbGVuID0gY29u dGV4dC0+cHN0bXQtPnN0bXRfbGVuOworCisJUHJvY2Vzc1V0aWxpdHkod3JhcHBlciwKKwkJ CQkgICBjb250ZXh0LT5xdWVyeVN0cmluZywKKwkJCQkgICBmYWxzZSwKKwkJCQkgICBQUk9D RVNTX1VUSUxJVFlfU1VCQ09NTUFORCwKKwkJCQkgICBOVUxMLAorCQkJCSAgIE5VTEwsCisJ CQkJICAgTm9uZV9SZWNlaXZlciwKKwkJCQkgICBOVUxMKTsKK30KKworLyoKKyAqIG1vdmVN ZXJnZWRUYWJsZXNSb3dzOiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIChtZXJnaW5n UGFydGl0aW9uc0xpc3QpCisgKiBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgKHJlbCkgYW5k IG1vdmUgcm93cyBpbnRvIHRoZSBuZXcgcGFydGl0aW9uCisgKiAobmV3UGFydFJlbCkuCisg Ki8KK3N0YXRpYyB2b2lkCittb3ZlTWVyZ2VkVGFibGVzUm93cyhSZWxhdGlvbiByZWwsIExp c3QgKm1lcmdpbmdQYXJ0aXRpb25zTGlzdCwKKwkJCQkJIFJlbGF0aW9uIG5ld1BhcnRSZWwp Cit7CisJQ29tbWFuZElkCW15Y2lkOworCisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9u J3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNF UlRfU0tJUF9GU007CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlCdWxrSW5zZXJ0U3RhdGUg YmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlU dXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJ ZCh0cnVlKTsKKworCS8qIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1 cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkv KiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJZHN0c2xvdCA9IE1ha2VTaW5n bGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKG5ld1BhcnRSZWwpLAorCQkJCQkJ CQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MobmV3UGFydFJlbCkpOworCUV4ZWNTdG9yZUFs bE51bGxUdXBsZShkc3RzbG90KTsKKworCWZvcmVhY2gobGlzdHB0ciwgbWVyZ2luZ1BhcnRp dGlvbnNMaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbiA9IChSZWxhdGlv bikgbGZpcnN0KGxpc3RwdHIpOworCQlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwkJVHVw bGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwkJ U25hcHNob3QJc25hcHNob3Q7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBw YXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcihtZXJnaW5nUGFydGl0aW9uKSwKKwkJCQkJCQkJCQkgICB0YWJsZV9z bG90X2NhbGxiYWNrcyhtZXJnaW5nUGFydGl0aW9uKSk7CisKKwkJLyoKKwkJICogTWFwIGNv bXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2YgbWVyZ2VkIHBhcnRpdGlvbiB0byBu ZXcKKwkJICogcGFydGl0aW9uLgorCQkgKi8KKwkJdHVwbGVfbWFwID0gY29udmVydF90dXBs ZXNfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKG1lcmdpbmdQYXJ0aXRpb24pLAorCQkJCQkJ CQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IobmV3UGFydFJlbCkpOworCisJCS8qIFNjYW4gdGhy b3VnaCB0aGUgcm93cy4gKi8KKwkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExh dGVzdFNuYXBzaG90KCkpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0 aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMKTsKKworCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRu ZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJCXsKKwkJ CVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90OworCQkJYm9vbAkJaW5zZXJ0X2luZGV4ZXM7 CisKKwkJCS8qIEV4dHJhY3QgZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJCXNsb3RfZ2V0 YWxsYXR0cnMoc3Jjc2xvdCk7CisKKwkJCWlmICh0dXBsZV9tYXApCisJCQl7CisJCQkJLyog TmVlZCB0byB1c2UgbWFwIGZvciBjb3B5IGF0dHJpYnV0ZXMuICovCisJCQkJaW5zZXJ0c2xv dCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJNYXAsIHNyY3Nsb3Qs IGRzdHNsb3QpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIENvcHkgYXR0cmlidXRl cyBkaXJlY3RseS4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZHN0c2xvdDsKKworCQkJCUV4ZWND bGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192 YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJCQkJCSAgIHNpemVvZihEYXR1bSkgKiBz cmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVs bCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xv dC0+dHRzX252YWxpZCk7CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xv dCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBu ZXcgcmVsYXRpb24uICBXZSBpZ25vcmUgdGhlCisJCQkgKiAnaW5zZXJ0X2luZGV4ZXMnIGZs YWcgc2luY2UgbmV3UGFydFJlbCBoYXMgbm8gaW5kZXhlcyBhbnl3YXkuCisJCQkgKi8KKwkJ CSh2b2lkKSB0YWJsZV90dXBsZV9pbnNlcnQobmV3UGFydFJlbCwgaW5zZXJ0c2xvdCwgbXlj aWQsCisJCQkJCQkJCQkgIHRpX29wdGlvbnMsIGJpc3RhdGUsICZpbnNlcnRfaW5kZXhlcyk7 CisKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKworCQl0YWJsZV9lbmRzY2Fu KHNjYW4pOworCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCisJCWlmICh0dXBs ZV9tYXApCisJCQlmcmVlX2NvbnZlcnNpb25fbWFwKHR1cGxlX21hcCk7CisKKwkJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNzbG90KTsKKwl9CisKKwlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KGRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUoYmlzdGF0 ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQobmV3UGFydFJlbCwgdGlfb3B0aW9u cyk7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8 cGFydGl0aW9uLWxpc3Q+IElOVE8gPHBhcnRpdGlvbi1uYW1lPgorICovCitzdGF0aWMgdm9p ZAorQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRl clRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24JbmV3UGFydFJl bDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyOworCUxpc3QJICAgKm1lcmdpbmdQYXJ0aXRpb25z TGlzdCA9IE5JTDsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwljaGFyCQl0bXBSZWxOYW1l W05BTUVEQVRBTEVOXTsKKwlSYW5nZVZhciAgICptZXJnZVBhcnROYW1lID0gY21kLT5uYW1l OworCWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxzZTsKKworCS8qCisJICogTG9jayBhbGwgbWVy Z2VkIHBhcnRpdGlvbnMsIGNoZWNrIHRoZW0gYW5kIGNyZWF0ZSBsaXN0IHdpdGggcGFydGl0 aW9ucworCSAqIGNvbnRleHRzLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgY21kLT5wYXJ0 bGlzdCkKKwl7CisJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxp c3RwdHIpOworCQlSZWxhdGlvbgltZXJnaW5nUGFydGl0aW9uOworCisJCS8qCisJCSAqIFdl IGFyZSBnb2luZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0aGlzIHBhcnRpdGlvbjogbmVlZCB0 byB1c2UKKwkJICogZXhjbHVzaXZlIGxvY2sgZm9yIHByZXZlbnQgRE1MLXF1ZXJpZXMgdG8g dGhlIHBhcnRpdGlvbi4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9vcGVu cnYobmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJaWYgKG1lcmdpbmdQYXJ0aXRp b24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJ CSBlcnJtc2coImNhbm5vdCBtZXJnZSBub24tdGFibGUgcGFydGl0aW9uIFwiJXNcIiIsCisJ CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobWVyZ2luZ1BhcnRpdGlvbikpKSk7CisK KwkJLyoKKwkJICogQ2hlY2tpbmcgdGhhdCB0d28gcGFydGl0aW9ucyBoYXZlIHRoZSBzYW1l IG5hbWUgd2FzIGJlZm9yZSwgaW4KKwkJICogZnVuY3Rpb24gdHJhbnNmb3JtUGFydGl0aW9u Q21kRm9yTWVyZ2UoKS4KKwkJICovCisJCWlmIChlcXVhbChuYW1lLCBjbWQtPm5hbWUpKQor CQkJLyogT25lIG5ldyBwYXJ0aXRpb24gY2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBtZXJn ZWQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisKKwkJLyogU3RvcmUg YSBuZXh0IG1lcmdpbmcgcGFydGl0aW9uIGludG8gdGhlIGxpc3QuICovCisJCW1lcmdpbmdQ YXJ0aXRpb25zTGlzdCA9IGxhcHBlbmQobWVyZ2luZ1BhcnRpdGlvbnNMaXN0LAorCQkJCQkJ CQkJCW1lcmdpbmdQYXJ0aXRpb24pOworCX0KKworCS8qIERldGFjaCBhbGwgbWVyZ2VkIHBh cnRpdGlvbnMuICovCisJZGVmYXVsdFBhcnRPaWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJv bV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKSk7CisJZm9y ZWFjaChsaXN0cHRyLCBtZXJnaW5nUGFydGl0aW9uc0xpc3QpCisJeworCQlSZWxhdGlvbglt ZXJnaW5nUGFydGl0aW9uID0gKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyog UmVtb3ZlIHRoZSBwZ19pbmhlcml0cyByb3cgZmlyc3QuICovCisJCVJlbW92ZUluaGVyaXRh bmNlKG1lcmdpbmdQYXJ0aXRpb24sIHJlbCwgZmFsc2UpOworCQkvKiBEbyB0aGUgZmluYWwg cGFydCBvZiBkZXRhY2hpbmcuICovCisJCURldGFjaFBhcnRpdGlvbkZpbmFsaXplKHJlbCwg bWVyZ2luZ1BhcnRpdGlvbiwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKwl9CisKKwkvKiBD cmVhdGUgdGFibGUgZm9yIG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBh cyBtb2RlbC4gKi8KKwlpZiAoaXNTYW1lTmFtZSkKKwl7CisJCS8qIENyZWF0ZSBwYXJ0aXRp b24gdGFibGUgd2l0aCBnZW5lcmF0ZWQgdGVtcGFyYXJ5IG5hbWUuICovCisJCXNwcmludGYo dG1wUmVsTmFtZSwgIm1lcmdlLSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg TXlQcm9jUGlkKTsKKwkJbWVyZ2VQYXJ0TmFtZSA9IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNw YWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCisJCQkJCQkJCQkgdG1wUmVs TmFtZSwgLTEpOworCX0KKwljcmVhdGVQYXJ0aXRpb25UYWJsZShtZXJnZVBhcnROYW1lLAor CQkJCQkJIG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1l c3BhY2UocmVsKSksCisJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCks IC0xKSwKKwkJCQkJCSBjb250ZXh0KTsKKworCS8qCisJICogT3BlbiB0aGUgbmV3IHBhcnRp dGlvbiBhbmQgYWNxdWlyZSBleGNsdXNpdmUgbG9jayBvbiBpdC4gIFRoaXMgd2lsbAorCSAq IHN0b3AgYWxsIHRoZSBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUuICBUaGlz IG1pZ2h0IHNlZW0KKwkgKiBleGNlc3NpdmUsIGJ1dCB0aGlzIGlzIHRoZSB3YXkgd2UgbWFr ZSBzdXJlIG5vYm9keSBpcyBwbGFubmluZyBxdWVyaWVzCisJICogaW52b2x2aW5nIG1lcmdp bmcgcGFydGl0aW9ucy4KKwkgKi8KKwluZXdQYXJ0UmVsID0gdGFibGVfb3BlbnJ2KG1lcmdl UGFydE5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJLyogQ29weSBkYXRhIGZyb20g bWVyZ2VkIHBhcnRpdGlvbnMgdG8gbmV3IHBhcnRpdGlvbi4gKi8KKwltb3ZlTWVyZ2VkVGFi bGVzUm93cyhyZWwsIG1lcmdpbmdQYXJ0aXRpb25zTGlzdCwgbmV3UGFydFJlbCk7CisKKwkv KgorCSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxl LiB3cXVldWUgPSBOVUxMOgorCSAqIHZlcmlmaWNhdGlvbiBmb3IgZWFjaCBjbG9uZWQgY29u c3RyYWludCBpcyBub3QgbmVlZC4KKwkgKi8KKwlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxM LCByZWwsIG5ld1BhcnRSZWwsIGNtZC0+Ym91bmQpOworCisJLyogVW5sb2NrIGFuZCBkcm9w IG1lcmdlZCBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2gobGlzdHB0ciwgbWVyZ2luZ1BhcnRp dGlvbnNMaXN0KQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJCVJlbGF0aW9uCW1l cmdpbmdQYXJ0aXRpb24gPSAoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRyKTsKKworCQkvKiBH ZXQgcmVsYXRpb24gaWQgYmVmb3JlIHRhYmxlX2Nsb3NlKCkgY2FsbC4gKi8KKwkJb2JqZWN0 Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChtZXJnaW5nUGFydGl0aW9uKTsKKwkJb2Jq ZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5vYmplY3RTdWJJ ZCA9IDA7CisKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRhYmxl X2Nsb3NlKG1lcmdpbmdQYXJ0aXRpb24sIE5vTG9jayk7CisKKwkJcGVyZm9ybURlbGV0aW9u KCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCX0KKwlsaXN0X2ZyZWUobWVyZ2luZ1Bh cnRpdGlvbnNMaXN0KTsKKworCS8qIFJlbmFtZSBuZXcgcGFydGl0aW9uIGlmIGl0IGlzIG5l ZWRlZC4gKi8KKwlpZiAoaXNTYW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVt cCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIG5ldyBwYXJ0aXRpb24gdHVwbGUK KwkJICogdmlzaWJsZSBmb3IgcmVuYW1lLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNy ZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KKwkJUmVuYW1lUmVsYXRpb25J bnRlcm5hbChSZWxhdGlvbkdldFJlbGlkKG5ld1BhcnRSZWwpLAorCQkJCQkJCSAgIGNtZC0+ bmFtZS0+cmVsbmFtZSwgZmFsc2UsIGZhbHNlKTsKKwl9CisJLyogS2VlcCB0aGUgbG9jayB1 bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKK30K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IDZlYTY4NzIyZTMuLjFmY2RiMjUxNDIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQpAQCAtNzYxLDcgKzc2MSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ T1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMg T1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJBTUVURVIg UEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAorCVBBUkFM TEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFSVElUSU9OUyBQQVNT SU5HIFBBU1NXT1JEIFBBVEgKIAlQRVJJT0QgUExBQ0lORyBQTEFOIFBMQU5TIFBPTElDWQog CiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBB UkVEIFBSSU1BUlkKQEAgLTIzMTcsNiArMjMxNyw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJ CW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQz OwogCQkJCQljbWQtPmJvdW5kID0gJDQ7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOVUxMOwog CQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikg Y21kOwogCkBAIC0yMzMxLDYgKzIzMzIsNyBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5z dWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJ CQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOVUxMOwogCQkJ CQljbWQtPmNvbmN1cnJlbnQgPSAkNDsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwog CkBAIC0yMzQ0LDYgKzIzNDYsMjEgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlw ZSA9IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOwogCQkJCQljbWQtPm5hbWUgPSAkMzsK IAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOVUxMOwor CQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikg Y21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJLyogQUxURVIgVEFCTEUg PG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCisJ CQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8g cXVhbGlmaWVkX25hbWUKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9k ZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQ YXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9NZXJnZVBhcnRpdGlvbnM7 CisJCQkJCWNtZC0+bmFtZSA9ICQ3OworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJ Y21kLT5wYXJ0bGlzdCA9ICQ0OwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC0y MzYwLDYgKzIzNzcsNyBAQCBpbmRleF9wYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBl ID0gQVRfQXR0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21k LT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOVUxMOwogCQkJCQljbWQt PmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBA IC0xNzY2OCw2ICsxNzY4Niw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSU0VS CiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwg UEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQQVRICkBAIC0xODI5Miw2ICsxODMxMSw3 IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJ CXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNT V09SRAogCQkJfCBQQVRICmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBj N2VmZDhkOGNlLi40OGEyM2M3Y2E0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMKQEAgLTU4LDYgKzU4LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlci5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgorI2luY2x1ZGUg InBhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRl TWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgpAQCAtMzQxMyw2ICszNDE1LDgwIEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVT dG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIH0KIAogCisvKgorICogdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJM TEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZAorICoKKyAqIERvZXMgc2ltcGxlIGNo ZWNrcyBmb3IgbWVyZ2VkIHBhcnRpdGlvbnMuIENhbGN1bGF0ZXMgYm91bmQgb2YgcmVzdWx0 CisgKiBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25D bWRGb3JNZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRj bWQpCit7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJcGFydE9pZDsKKwlSZWxh dGlvbglwYXJlbnQgPSBjeHQtPnJlbDsKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0 cmF0ZWd5OworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9v bAkJaXNEZWZhdWx0UGFydCA9IGZhbHNlOworCUxpc3QJICAgKnBhcnRPaWRzID0gTklMOwor CisJaWYgKHBhcmVudC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURf VEFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFy dGl0aW9uZWQgdGFibGUiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnQpKSkpOwor CisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9 IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCWlmIChzdHJhdGVneSA9PSBQQVJU SVRJT05fU1RSQVRFR1lfSEFTSCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygicGFydGl0aW9u IG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKSk7CisKKwkv KiBJcyBjdXJyZW50IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAqLworCWRlZmF1 bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoCisJCQkJCQkJCQkJ CQkgICBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwlmb3Jl YWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFt ZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogUGFydGl0aW9ucyBp biB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNo X2NlbGwobGlzdHB0cjIsIHBhcnRjbWQtPnBhcnRsaXN0LCBsbmV4dChwYXJ0Y21kLT5wYXJ0 bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCVJhbmdlVmFyICAgKm5hbWUyID0gKFJhbmdlVmFy ICopIGxmaXJzdChsaXN0cHRyMik7CisKKwkJCWlmIChlcXVhbChuYW1lLCBuYW1lMikpCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RB QkxFKSwKKwkJCQkJCSBlcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGFscmVh ZHkgdXNlZCIsIG5hbWUtPnJlbG5hbWUpKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihj eHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisJCX0KKworCQkvKiBTZWFyY2ggREVG QVVMVCBwYXJ0aXRpb24gaW4gdGhlIGxpc3QuICovCisJCXBhcnRPaWQgPSBSYW5nZVZhckdl dFJlbGlkKG5hbWUsIE5vTG9jaywgZmFsc2UpOworCQlpZiAocGFydE9pZCA9PSBkZWZhdWx0 UGFydE9pZCkKKwkJCWlzRGVmYXVsdFBhcnQgPSB0cnVlOworCQlwYXJ0T2lkcyA9IGxhcHBl bmRfb2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBv ZiByZXN1bHQgcGFydGl0aW9uLiAqLworCUFzc2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxM KTsKKwlwYXJ0Y21kLT5ib3VuZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisK KwkvKiBGaWxsIHBhcnRpdGlvbiBib3VuZC4gKi8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRl Z3kgPSBzdHJhdGVneTsKKwlwYXJ0Y21kLT5ib3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0 Y21kLT5ib3VuZC0+aXNfZGVmYXVsdCA9IGlzRGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1 bHRQYXJ0KQorCQljYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQs IHBhcnRjbWQtPnBhcnRsaXN0LAorCQkJCQkJCQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91 bmQsCisJCQkJCQkJCQkJCWN4dC0+cHN0YXRlKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFs dGVyVGFibGVTdG10IC0KICAqCQlwYXJzZSBhbmFseXNpcyBmb3IgQUxURVIgVEFCTEUKQEAg LTM2ODMsNiArMzc1OSwxOSBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQs IEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMs IGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJ CXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQt PmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikK KwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCSBlcnJtc2coImxpc3Qgb2YgbmV3IHBh cnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVtcyIpKSk7CisJCQkJ CXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOworCQkJCQlu ZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisK IAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmMKaW5kZXggYzI4NjM5ZDJlMy4uOWVkODBkNzIxZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTc3LDMgKzQ5NzcsMjEwIEBAIHNhdGlzZmll c19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX0JPT0wo cm93SGFzaCAlIG1vZHVsdXMgPT0gcmVtYWluZGVyKTsKIH0KKworLyoKKyAqIGNoZWNrX3R3 b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFO R0UgcGFydGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9y IGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KCkgYW5kCisgKiBjYWxjdWxhdGVfcGFydGl0 aW9uX2JvdW5kX2Zvcl9tZXJnZSgpLgorICogVGhpcyBmdW5jdGlvbiBjb21wYXJlcyB1cHBl ciBib3VuZCBvZiBmaXJzdF9ib3VuZCBhbmQgbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9i b3VuZC4gVGhlc2UgYm91bmRzIHNob3VsZCBiZSBlcXVhbHMgZXhjZXB0IGNhc2UKKyAqICJk ZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0 aXRpb25zIGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZp cnN0X2JvdW5kIGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9i b3VuZCBiZWNhdXNlIHNwYWNlIGJldHdlZW4gb2YgdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5j bHVkZWQgaW4KKyAqIERFRkFVTFQgcGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0 aXRpb25lZCB0YWJsZQorICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9u CisgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgorICogc2Vjb25k X25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIHNlY29uZF9ib3VuZDoJYm91 bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBv ZiBzcGxpdCBwYXJ0aXRpb25zIGlzIERFRkFVTFQKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRv IFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwor c3RhdGljIHZvaWQKK2NoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlv biBwYXJlbnQsCisJCQkJCQkJCSAgUmFuZ2VWYXIgKmZpcnN0X25hbWUsCisJCQkJCQkJCSAg UGFydGl0aW9uQm91bmRTcGVjICpmaXJzdF9ib3VuZCwKKwkJCQkJCQkJICBSYW5nZVZhciAq c2Vjb25kX25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91 bmQsCisJCQkJCQkJCSAgYm9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJICBQYXJzZVN0YXRl ICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9u S2V5KHBhcmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqZmlyc3RfdXBwZXI7CisJUGFy dGl0aW9uUmFuZ2VCb3VuZCAqc2Vjb25kX2xvd2VyOworCWludAkJCWNtcHZhbDsKKworCUFz c2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisKKwlm aXJzdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgZmlyc3Rf Ym91bmQtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisJc2Vjb25kX2xvd2VyID0gbWFrZV9vbmVf cGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zLCB0 cnVlKTsKKworCS8qCisJICogbG93ZXIxPWZhbHNlICh0aGUgc2Vjb25kIHRvIGxhc3QgYXJn dW1lbnQpIGZvciBjb3JyZWN0IGNvbXBhcmlzb24gbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91 bmRzLgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5h dHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0 Y29sbGF0aW9uLAorCQkJCQkJCQkgIHNlY29uZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93 ZXItPmtpbmQsCisJCQkJCQkJCSAgZmFsc2UsIGZpcnN0X3VwcGVyKTsKKwlpZiAoKCFkZWZh dWx0UGFydCAmJiBjbXB2YWwpIHx8IChkZWZhdWx0UGFydCAmJiBjbXB2YWwgPCAwKSkKKwl7 CisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vjb25kX2JvdW5k LT5sb3dlcmRhdHVtcyk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImxvd2VyIGJv dW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2Yg cHJldmlvdXMgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQlzZWNvbmRfbmFtZS0+cmVsbmFt ZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwl9Cit9CisKKy8qCisgKiBnZXRfcGFydGl0aW9u X2JvdW5kX3NwZWMKKyAqCisgKiBSZXR1cm5zIGRlc2NyaXB0aW9uIG9mIHBhcnRpdGlvbiB3 aXRoIE9pZCAicGFydE9pZCIgYW5kIG5hbWUgIm5hbWUiLgorICovCitzdGF0aWMgUGFydGl0 aW9uQm91bmRTcGVjICoKK2dldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCwg UmFuZ2VWYXIgKm5hbWUpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsK Kwlib29sCQlpc251bGw7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZHNwZWMgPSBOVUxM OworCisJLyogVHJ5IGZldGNoaW5nIHRoZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNoZSwgZm9y IHNwZWVkLiAqLworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFydE9pZCk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkgbmFtZS0+cmVsbmFt ZSk7CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJ CUFudW1fcGdfY2xhc3NfcmVscGFydGJvdW5kLAorCQkJCQkJCSZpc251bGwpOworCWlmIChp c251bGwpCisJCWVsb2coRVJST1IsICJwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uIFwi JXNcIiBpcyBudWxsIiwKKwkJCSBuYW1lLT5yZWxuYW1lKTsKKworCWJvdW5kc3BlYyA9IHN0 cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisKKwlpZiAoIUlzQShi b3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5kU3BlYykpCisJCWVsb2coRVJST1IsICJleHBlY3Rl ZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkgbmFtZS0+ cmVsbmFtZSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCXJldHVybiBib3VuZHNw ZWM7Cit9CisKKy8qCisgKiBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZQor ICoKKyAqIENhbGN1bGF0ZXMgdGhlIGJvdW5kIG9mIG1lcmdlZCBwYXJ0aXRpb24gInNwZWMi IGJ5IHVzaW5nIHRoZSBib3VuZHMgb2YKKyAqIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkLgor ICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydE5hbWVzOgkJbmFt ZXMgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQKKyAqIHBhcnRPaWRzOgkJT2lkcyBvZiBw YXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICogc3BlYyAob3V0KToJCWJvdW5kcyBzcGVjaWZp Y2F0aW9uIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0 byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8K K3ZvaWQKK2NhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBh cmVudCwKKwkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCUxpc3QgKnBhcnRP aWRzLAorCQkJCQkJCQkJUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJUGFy c2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBh cnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CisKKwlB c3NlcnQoIXNwZWMtPmlzX2RlZmF1bHQpOworCisJc3dpdGNoIChrZXktPnN0cmF0ZWd5KQor CXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0U6CisJCQl7CisJCQkJaW50CQkJ aTsKKwkJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQkJCWludAkJ CW5wYXJ0cyA9IGxpc3RfbGVuZ3RoKHBhcnRPaWRzKTsKKwkJCQlMaXN0CSAgICpib3VuZHMg PSBOSUw7CisKKwkJCQlsb3dlcl9ib3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikK KwkJCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7 CisKKwkJCQkvKgorCQkJCSAqIENyZWF0ZSBhcnJheSBvZiBsb3dlciBib3VuZHMgYW5kIGxp c3Qgb2YKKwkJCQkgKiBQYXJ0aXRpb25Cb3VuZFNwZWMuCisJCQkJICovCisJCQkJZm9yIChp ID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0 aW9uX2JvdW5kX3NwZWMobGlzdF9udGhfb2lkKHBhcnRPaWRzLCBpKSwKKwkJCQkJCQkJCQkJ CQkgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaSkpOworCisJCQkJCWxvd2Vy X2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLCBib3VuZC0+ bG93ZXJkYXR1bXMsIHRydWUpOworCQkJCQlib3VuZHMgPSBsYXBwZW5kKGJvdW5kcywgYm91 bmQpOworCQkJCX0KKworCQkJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLwor CQkJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJh bmdlQm91bmQgKiksCisJCQkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9p ZCAqKSBrZXkpOworCisJCQkJLyogUmFuZ2VzIG9mIHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBv dmVybGFwLiAqLworCQkJCWZvciAoaSA9IDE7IGkgPCBucGFydHM7IGkrKykKKwkJCQl7CisJ CQkJCWludAkJCWluZGV4ID0gbG93ZXJfYm91bmRzW2ldLT5pbmRleDsKKwkJCQkJaW50CQkJ cHJldl9pbmRleCA9IGxvd2VyX2JvdW5kc1tpIC0gMV0tPmluZGV4OworCisJCQkJCWNoZWNr X3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShwYXJlbnQsCisJCQkJCQkJCQkJCQkJICAo UmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJ CQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2lu ZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMs IGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9u dGgoYm91bmRzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJICBmYWxzZSwgcHN0YXRlKTsKKwkJ CQl9CisKKwkJCQkvKgorCQkJCSAqIExvd2VyIGJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbiBp cyBhIGxvd2VyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8K KwkJCQlzcGVjLT5sb3dlcmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICop IGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzWzBdLT5pbmRleCkpLT5sb3dlcmRhdHVt czsKKworCQkJCS8qCisJCQkJICogVXBwZXIgYm91bmQgb2YgbGFzdCBwYXJ0aXRpb24gaXMg YSB1cHBlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJ CQkJc3BlYy0+dXBwZXJkYXR1bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBs aXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1tucGFydHMgLSAxXS0+aW5kZXgpKS0+dXBw ZXJkYXR1bXM7CisKKwkJCQlwZnJlZShsb3dlcl9ib3VuZHMpOworCQkJCWxpc3RfZnJlZShi b3VuZHMpOworCQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZ X0xJU1Q6CisJCQl7CisJCQkJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCQkJCSAgICpsaXN0 cHRyMjsKKworCQkJCS8qIENvbnNvbGlkYXRlIGJvdW5kcyBmb3IgYWxsIHBhcnRpdGlvbnMg aW4gdGhlIGxpc3QuICovCisJCQkJZm9yYm90aChsaXN0cHRyLCBwYXJ0T2lkcywgbGlzdHB0 cjIsIHBhcnROYW1lcykKKwkJCQl7CisJCQkJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VW YXIgKikgbGZpcnN0KGxpc3RwdHIyKTsKKwkJCQkJT2lkCQkJY3VyT2lkID0gbGZpcnN0X29p ZChsaXN0cHRyKTsKKworCQkJCQlib3VuZCA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhj dXJPaWQsIG5hbWUpOworCQkJCQlzcGVjLT5saXN0ZGF0dW1zID0gbGlzdF9jb25jYXQoc3Bl Yy0+bGlzdGRhdHVtcywgYm91bmQtPmxpc3RkYXR1bXMpOworCQkJCX0KKwkJCQlicmVhazsK KwkJCX0KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGFydGl0 aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+c3RyYXRlZ3kpOworCX0KK30K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA3NmQ5MWU1NDdiLi42ZThhMmI1OWU4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05MzcsNiArOTM3LDE3IEBAIHR5cGVkZWYg c3RydWN0IFBhcnRpdGlvblJhbmdlRGF0dW0KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRv a2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFBhcnRpdGlvblJhbmdlRGF0 dW07CiAKKy8qCisgKiBQYXJ0aXRpb25EZXNjIC0gaW5mbyBhYm91dCBzaW5nbGUgcGFydGl0 aW9uIGZvciBBTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT04gY29tbWFuZAorICovCit0eXBl ZGVmIHN0cnVjdCBTaW5nbGVQYXJ0aXRpb25TcGVjCit7CisJTm9kZVRhZwkJdHlwZTsKKwor CVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gKi8KKwlQYXJ0aXRp b25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KK30g U2luZ2xlUGFydGl0aW9uU3BlYzsKKwogLyoKICAqIFBhcnRpdGlvbkNtZCAtIGluZm8gZm9y IEFMVEVSIFRBQkxFL0lOREVYIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9OIGNvbW1hbmRzCiAg Ki8KQEAgLTk0NSw2ICs5NTYsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIAlO b2RlVGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRp b24gdG8gYXR0YWNoL2RldGFjaCAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8q IEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworCUxpc3QJICAgKnBhcnRsaXN0OwkJLyog bGlzdCBvZiBwYXJ0aXRpb25zLCBmb3IgU1BMSVQgUEFSVElUSU9OCisJCQkJCQkJCSAqIGNv bW1hbmQgKi8KIAlib29sCQljb25jdXJyZW50OwogfSBQYXJ0aXRpb25DbWQ7CiAKQEAgLTIz OTgsNiArMjQxMSw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFj aFBhcnRpdGlvbiwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0 aW9uLAkJCS8qIERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5h bGl6ZSwgLyogREVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX01lcmdlUGFydGl0 aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8q IEFERCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkg Y29sdW1uIG9wdGlvbnMgKi8KIAlBVF9Ecm9wSWRlbnRpdHksCQkJLyogRFJPUCBJREVOVElU WSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDJkNGEwYzZhMDcuLmE0ODM0ZWI5YjcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMzNCw2ICszMzQsNyBAQCBQR19LRVlXT1JEKCJwYXJh bWV0ZXIiLCBQQVJBTUVURVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInBhcnNlciIsIFBBUlNFUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicGFydGlhbCIsIFBBUlRJQUwsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBBUlRJVElPTiwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGFydGl0aW9ucyIs IFBBUlRJVElPTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInBhc3NpbmciLCBQQVNTSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXRoIiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgK aW5kZXggM2Q5Y2MxMDMxZi4uMDMyOWQ3YmQ4NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNCArMTQzLDEwIEBAIGV4dGVybiBpbnQJcGFydGl0 aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJu IGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGlu Zm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJu IHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFy ZW50LAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJCQkJTGlzdCAq cGFydE9pZHMsCisJCQkJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJ CQkJCQkJCQlQYXJzZVN0YXRlICpwc3RhdGUpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSVEJP VU5EU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFy dGl0aW9uLW1lcmdlLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRp b24tbWVyZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjk4 NDQ2YWFhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0 ZWQvcGFydGl0aW9uLW1lcmdlLm91dApAQCAtMCwwICsxLDE5OSBAQAorUGFyc2VkIHRlc3Qg c3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkg czJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOwor c3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3Rl cCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBU QUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjAp IElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRF IHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4u Pgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg czJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAg ICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAg CisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSBy b3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJyciBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBh cnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJF R0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hl cmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAq IEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQw NSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAg CiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6 IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQw MScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJH RSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBf MjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0g J3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENP TU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0t LS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2Rp ZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMg czJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUg UkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzog QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6 IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7Cisg aXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0 MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBz MWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNP TEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1l cmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0 cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8 dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1 ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMyaSBz MmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVy ZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRw YXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz MnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0 ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7 CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0 ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUg ICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJj IHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiOiBC RUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05T ICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMy YjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlm JyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8 dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1 ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMmJzIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0 ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYn IHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0 ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUg ICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMyYnMgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVw IHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTog SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOwor c3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0 XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJl IGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwu Li4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBG Uk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUg ICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAor MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xh dGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlCmluZGV4IDE4OGZjMDRmODUuLjhiY2FhOGE2MjUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTAzLDYgKzEwMyw3IEBAIHRlc3Q6IHBh cnRpdGlvbi1rZXktdXBkYXRlLTEKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRl c3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRl LTQKK3Rlc3Q6IHBhcnRpdGlvbi1tZXJnZQogdGVzdDogcGxwZ3NxbC10b2FzdAogdGVzdDog Y2x1c3Rlci1jb25mbGljdAogdGVzdDogY2x1c3Rlci1jb25mbGljdC1wYXJ0aXRpb24KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3Bl YyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lYzQ4NzMyYzU4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5z cGVjCkBAIC0wLDAgKzEsNTQgQEAKKyMgVmVyaWZ5IHRoYXQgTUVSR0Ugb3BlcmF0aW9uIGxv Y2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAKK3sK KyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChp IGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0 cGFydF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MTApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8z MCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAg Q1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7 CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMjUsICd0ZXh0MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgz NSwgJ3RleHQzNScpOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0Owor fQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsgQkVH SU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMWJzCXsgQkVH SU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMW1lcmcJeyBBTFRF UiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBf MjApIElOVE8gdHBhcnRfMDBfMjA7IH0KK3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKworc2Vz c2lvbiBzMgorc3RlcCBzMmIJeyBCRUdJTjsgfQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczJicwl7IEJFR0lOIElTT0xB VElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IH0KK3N0ZXAgczJ1CXsgVVBEQVRFIHRwYXJ0IFNF VCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7 IH0KK3N0ZXAgczJzCXsgU0VMRUNUICogRlJPTSB0cGFydDsgfQorCisKKyMgczIgaW5zZXJ0 cyByb3cgaW50byB0YWJsZS4gczEgc3RhcnRzIE1FUkdFIFBBUlRJVElPTlMgdGhlbgorIyBz MiB0cnlpbmcgdG8gdXBkYXRlIGluc2VydGVkIHJvdyBhbmQgd2FpdHMgdW50aWwgczEgZmlu aXNoZWQKKyMgTUVSR0Ugb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBz MWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJj IHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJp IHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMy YnJyIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMmJyciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJt dXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK KworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJj IHMycworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxf ZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggNDg1NjNiMmNmMC4uNjk5MjA3NTdi MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3Rf ZGRsX2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uv dGVzdF9kZGxfZGVwYXJzZS5jCkBAIC0zMDAsNiArMzAwLDkgQEAgZ2V0X2FsdGVydGFibGVf c3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRp b25GaW5hbGl6ZToKIAkJCQlzdHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFM SVpFIjsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXN0 cnR5cGUgPSAiTUVSR0UgUEFSVElUSU9OUyI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUX0Fk ZElkZW50aXR5OgogCQkJCXN0cnR5cGUgPSAiQUREIElERU5USVRZIjsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdl Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yYmEwZWM0N2Q5Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVy Z2Uub3V0CkBAIC0wLDAgKzEsNzMyIEBACistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0g VGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1h bmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworU0VUIHNl YXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBC WSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNt YW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjEtMTItMDEnKSBUTyAoJzIwMjEtMTItMzEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc21hbl9p ZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjog IHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwg c2FsZXNfbWFyMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIw MjI7CitFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVh ZHkgdXNlZAorTElORSAxOiAuLi5lIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGNh bm5vdCBtZXJnZSBub24tdGFibGUgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2Fs ZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7 CitFUlJPUjogIGNhbm5vdCBtZXJnZSBub24tdGFibGUgcGFydGl0aW9uICJzYWxlc19hcHIy MDIyIgorLS0gRVJST1I6ICBpbnZhbGlkIHBhcnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlvbiAi c2FsZXNfbWFyMjAyMiIgY2FuIG5vdCBiZSBtZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVuIHNl Y3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIy MDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIEVSUk9SOiAgaW52YWxp ZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNhbiBub3Qg YmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFu ZCBzYWxlc19qYW4yMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5U TyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfamFuMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJl dmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gTk8gRVJST1I6IHRlc3QgZm9y IGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19qYW4y MDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MK KyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxv Zy50ZXh0OworICAgICAgICAgIG9pZCAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hw ZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHNhbGVzX2FwcjIwMjIgICAgICAgICB8IHAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisg c2FsZXNfZGVjMjAyMSAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxl c19qYW5fZmViX21hcjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX290 aGVycyAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAor KDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBBZGQgcm93cyBp bnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBP TiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVD VCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNz KTsKKyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJBTkdF IChzYWxlc19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQs IGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8 IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIy JykKKyBzYWxlc19mZWIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19q YW4yMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00g KCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIy JykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBz YWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIHNob3cgcGFy dGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJl bGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsK KyAgICAgICAgICBvaWQgICAgICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8 ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxl c19mZWJfbWFyX2FwcjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ph bjIwMjIgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfb3RoZXJz ICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3Nh bGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJn ZV9zY2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgIHwgICAgICAgdGFibGVuYW1l ICAgICAgIHwgICAgICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgICAgIHwgdGFibGVz cGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19mZWJfbWFyX2FwcjIw MjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSBy b3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAg ICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAy MgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwg VHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgor ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIw MjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAg fCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAg MTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAg ICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAg ICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMTAg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx IHJvdykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzCitTRVQgZW5hYmxl X3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3 aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAz ODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMTAgcm93cykKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUg cGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jh bmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAg ICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUw LCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMt MTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworLS0gTWVyZ2UgcGFydGl0 aW9ucyAoaW5jbHVkZSBERUZBVUxUIHBhcnRpdGlvbikgaW50byBwYXJ0aXRpb24gd2l0aCB0 aGUgc2FtZQorLS0gbmFtZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfb3RoZXJzKSBJTlRP IHNhbGVzX290aGVyczsKK3NlbGVjdCAqIGZyb20gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0y MDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEt MjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAx NzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoNyByb3dzKQorCistLSBzaG93IHBhcnRp dGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxp ZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBC WSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVG QVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7Cisg ICAgICBvaWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykg VE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0y MDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBE RUZBVUxUCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVS QVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNf ZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNf eWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwg MiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JF RCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBh cnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAx LCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgy MDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CitJTlNFUlQg SU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRo LCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpOworSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVD VCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNh bGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQg CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAg ICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2Fs ZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAg MTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIy LjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAy MDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVw YXJ0bWVudAorKDkgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNh bGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBz YWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8 ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIu MDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8 IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAg ICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc21hbl9uYW1lIHwg c2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNh bGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1h bmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAy MDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAg ICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKwor QUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIy LCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8g c2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2RhdGU7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19t b250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAg MjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwg ICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0 IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4w Mi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAg ICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNh bGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIw MjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAg ICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwg MjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfamFuX2ZlYjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBz YWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50 IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAy Mi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAg ICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8 IFNhbGVzIGRlcGFydG1lbnQKKyg2IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3Ro ZXI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwg MjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRl cGFydG1lbnQKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKy0tCistLSBU ZXN0OiBtZXJnZSBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dl cnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZ IEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9G IHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUg c2FsZXNtYW5zMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczIwXzMwIFBBUlRJVElPTiBP RiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJM RSBzYWxlc21hbnMzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJP TSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1Bv aXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQK K0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwg d2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19M RVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VS IHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJ TlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBF WEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycp OworQ1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgor ICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFJPVwor ICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNt YW5zJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVu dCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNF OiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0g QUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVk OiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0t IDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNt YW5zMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxl c21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0g Uk9XCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNtYW5z MTBfMjAsIHNhbGVzbWFuczIwXzMwLCBzYWxlc21hbnMzMF80MCkgSU5UTyBzYWxlc21hbnMx MF80MDsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50 KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK05P VElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hl biA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNh bGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5U CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNh bGVzbWFuczEwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNh bGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwg PSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczEwXzQw OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAxOSB8IEl2YW5vdgor ICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAzMCB8IEZvcmQKKyg0IHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVs ZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0g Q3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBU QUJMRSBzYWxlc21hbnMxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBz YWxlc21hbnMyMF8zMChzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQw KHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF8yMCBWQUxVRVMgKCdkdW1t eSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczIwXzMw IFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMz MF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc21h bnMxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczIwXzMwIERS T1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMzBfNDAgRFJPUCBDT0xVTU4g ZDM7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMx MF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgc2FsZXNt YW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgy MCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElUSU9OIHNh bGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5U TyBzYWxlc21hbnMgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21h bnMgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAo MzAsICdGb3JkJyk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIwXzMwLCBzYWxlc21hbnMzMF80MCkgSU5UTyBz YWxlc21hbnMxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDEgfCBQb2lyb3QKKyAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgIDEw IHwgTWF5CisgICAgICAgICAgMjAgfCBTbWlybm9mZgorICAgICAgICAgIDMxIHwgUG9wb3YK KyAgICAgICAgICAzMCB8IEZvcmQKKyg2IHJvd3MpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNt YW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitz ZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEwXzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTkgfCBJ dmFub3YKKyAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAg ICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzbWFuczsKKy0tCistLSBUZXN0OiBtZXJnZSBzdWItcGFydGl0aW9u cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxl c21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Zl YjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2Fs ZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEw Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0 LTIwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Yg c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIy LTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lk eCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0z MScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjIt MDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEz LCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5 ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAg ICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy CisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAz LTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAg fCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAg ICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAg ICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRo ICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEg fCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCiso NCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBf MjA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyXzIwXzMwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAg ICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVz X2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNf YXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxs OworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAy MgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAw Mi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgor ICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIw MjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAy MDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK Ky0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZp YyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElU WSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIo MjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9O IEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNi dXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworQ1JFQVRF IFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNU IChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywg J0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdDIgREVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElL RSBzYWxlc19saXN0KTsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJD SEFSKDUpKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2Fs ZXNfZXh0ZXJuYWwiIGlzIG51bGwKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8g c2FsZXNfYWxsOworRVJST1I6ICBwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxl c19leHRlcm5hbCIgaXMgbnVsbAorLS0gRVJST1I6ICBwYXJ0aXRpb24gYm91bmQgZm9yIHJl bGF0aW9uICJzYWxlc19leHRlcm5hbDIiIGlzIG51bGwKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0 ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciBy ZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwyIiBpcyBudWxsCistLSBFUlJPUjogIHJlbGF0aW9u ICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19s aXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193 ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjog IHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9u ICJzYWxlc19saXN0IgorRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxF IHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJMRSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVSR0Ug UEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNh bGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNf YW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2Fs ZXNfc3RhdGUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHgg T04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNtYW5fbmFtZSk7CitDUkVBVEUgSU5E RVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJl ZSAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAn SGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAs ICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWly bm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycs IDIwMDAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21h bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMg KCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdEZWV2JywgICAgICdMaXNib24nLCAg ICAgICAgICAyNTAsICcyMDIyLTAzLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdIZWxz aW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIy LTAzLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAg ICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdIYWxkZXInLCAgICdPc2xvJywgICAgICAgICAgICA4MDAs ICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNdWxs ZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAg ICAzNTAsICcyMDIyLTAzLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21h bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMg KCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQbGF0bycsICAgICdMaXNib24nLCAg ICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBj b25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtp bmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgIG9pZCAgICAg IHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9leHByICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfY2VudHJhbCB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpCisgc2FsZXNfZWFzdCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpCisgc2Fs ZXNfbm9yZCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJ TiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKQorIHNhbGVzX3dlc3Qg ICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNh bGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGgg Y29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxr aW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgIG9pZCAgICAg IHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYWxsICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsICdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2JykKKyBzYWxlc19ub3JkICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywg J0hlbHNpbmtpJykKKyBzYWxlc19vdGhlcnMgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdDsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAy IHwgU21pcm5vZmYgICAgICB8IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMt MDMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8IExpc2JvbiAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMDctMjAyMgorICAgICAgICAgIDExIHwgTXVsbGVyICAg ICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAg ICAgICAgIDE0IHwgUGxhdG8gICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAg OTUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICB8IEJlamlu ZyAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICA4IHwg TGkgICAgICAgICAgICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDkt MjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwg ICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICB8IEJlcmxpbiAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAg ICAgIDEyIHwgU21pdGggICAgICAgICB8IEt5aXYgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IFdhcnNhdyAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAy MgorICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAg ICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICB8 IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAgODAwIHwg MDMtMDItMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMt MDUtMjAyMgorICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IEhlbHNpbmtpICAgICAg IHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAgICAg ICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAg ODAwIHwgMDMtMDItMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGw7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgfCBOZXcgWW9yayAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIw MjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCBMaXNib24gICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgfCBN YWRyaWQgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAxNCB8 IFBsYXRvICAgICAgICAgfCBMaXNib24gICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIw MjIKKyAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgfCBCZWppbmcgICAgICB8ICAgICAg ICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgfCBW bGFkaXZvc3RvayB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIw MjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCBCZXJsaW4gICAgICB8ICAgICAg ICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgfCBL eWl2ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIw MjIKKygxMCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMgYWZ0 ZXIgbWVyZ2UgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNU ICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAg ICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUw IHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdI RVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9u YW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBXYXJzYXcgICAg ICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc21hbl9uYW1lID0g J0l2YW5vdic7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8 IDAzLTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRB QkxFIHNhbGVzX2xpc3Q7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hl bWE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBlOTE4NGI1YTQwLi4w YmQxNDQ0NzY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExOSw3 ICsxMTksNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRv bWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVz dCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBj YW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9u X2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBh cnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29t cHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUKK3Rlc3Q6IHBhcnRpdGlvbl9tZXJn ZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQg aW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQg ZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZQogCiAjIGV2ZW50 X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0gYW5kIGNhbm5vdCBydW4gY29uY3VycmVu dGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5zIERETApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uYmI0NjFlNjYyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKQEAgLTAsMCArMSw0MzAgQEAKKy0tCistLSBQ QVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQ QVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0t CistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIw MjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAi c2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19m ZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgY2Fubm90 IG1lcmdlIG5vbi10YWJsZSBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19t YXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0t IEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX21h cjIwMjIiIGNhbiBub3QgYmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBz YWxlc19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5U TyBzYWxlc19qYW5fbWFyMjAyMjsKKy0tIEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRpb25zIG9y ZGVyLCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNhbiBub3QgYmUgbWVyZ2VkCistLSAo c3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIy KQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZGVj MjAyMSwgc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFu X2ZlYjIwMjI7CisKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBv cmRlcgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf ZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5f ZmViX21hcjIwMjI7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5y ZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2Nh dGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGku aW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0 YWJsZSB0aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVB VEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJ TkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywg ICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwg J1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHBnX2NhdGFsb2cu cGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MpOworCistLSBzaG93 IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5p bmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBP UkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkg PSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRl eHQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmVi X21hcl9hcHIyMDIyOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgor U0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFj aHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0 cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2Fs ZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhl cyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSc7CisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBNZXJnZSBzb21lIHBhcnRpdGlv bnMgaW50byBERUZBVUxUIHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFU RSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMt MTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAg IDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCistLSBNZXJnZSBwYXJ0aXRpb25z IChpbmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBpbnRvIHBhcnRpdGlvbiB3aXRoIHRoZSBz YW1lCistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19vdGhlcnMpIElOVE8gc2Fs ZXNfb3RoZXJzOworCitzZWxlY3QgKiBmcm9tIHNhbGVzX290aGVyczsKKworLS0gc2hvdyBw YXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAg ICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsK Ky0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19kYXRlIChzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwg c2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIo MTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0 LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcu JyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19k ZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp OworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0 ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFM VUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAo MjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy IFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkg VE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpOworSU5TRVJUIElOVE8gc2Fs ZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNf ZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUICogRlJP TSBzYWxlc19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICog RlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVz X2phbl9mZWIyMDIyOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIx JywgMjAyMiwgMSwgMTApOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1l LCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2Vy MicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VMRUNU ICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAy MjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0 ZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFi bGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5f aWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAx XzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTAp OworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMy MF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMzBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFu cyBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc21h bnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0Ug J3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKwlSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkg Y2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwg VEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJP RFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVu dF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNtYW5zCisgICAgRk9S IEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jv d190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5zX2Fm dGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVz bWFucworICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxk IGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBW QUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93 KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzIwIFZBTFVFUyAoMTksICdJdmFub3YnKTsK KworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzbWFuczEw XzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBfNDApIElOVE8gc2FsZXNtYW5zMTBf NDA7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50 KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0t IDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNt YW5zMTBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc21h bnMwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfNDA7CisKK0RST1AgVEFCTEUg c2FsZXNtYW5zOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsK KworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkZWxldGVkIGNvbHVtbnMK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c21hbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBwYXJ0 aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNt YW5zMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMjBf MzAoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMzMF80MChzYWxlc21hbl9p ZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkp OworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF8yMCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAx JywgMTksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczIwXzMwIFZBTFVFUyAo MjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMzMF80MCBWQUxV RVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzIw IERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMjBfMzAgRFJPUCBDT0xV TU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMzMF80MCBEUk9QIENPTFVNTiBkMzsKKwor QUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfMjAg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBB VFRBQ0ggUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21h bnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBz YWxlc21hbnMgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMg VkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAs ICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBNRVJHRSBQQVJUSVRJT05TIChz YWxlc21hbnMxMF8yMCwgc2FsZXNtYW5zMjBfMzAsIHNhbGVzbWFuczMwXzQwKSBJTlRPIHNh bGVzbWFuczEwXzQwOworCitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczsKK3NlbGVjdCAqIGZy b20gc2FsZXNtYW5zMDFfMTA7CitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEwXzQwOworCitE Uk9QIFRBQkxFIHNhbGVzbWFuczsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRp b25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIg KHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NC0xMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9G IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAy Mi0wNC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9O IE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgn MjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVz X2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcy MDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fw cjIwMjJfMjBfMzA7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNf YXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19hcHJfYWxsOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0g QlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJv cnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xp c3QKKyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBz YWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAor IHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJ U1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywg J0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCisKK0NSRUFURSBU QUJMRSBzYWxlc19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAo c2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBz YWxlc19saXN0MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdI ZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QyIERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsIChM SUtFIHNhbGVzX2xpc3QpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsMiAodmNoIFZB UkNIQVIoNSkpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24g InNhbGVzX2V4dGVybmFsIiBpcyBudWxsCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJ TlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlv biAic2FsZXNfZXh0ZXJuYWwyIiBpcyBudWxsCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFs MikgSU5UTyBzYWxlc19hbGw7CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIg aXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3Jk Miwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CisKK0RST1AgVEFCTEUgc2FsZXNfZXh0 ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUgc2FsZXNf bGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNU IHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFT IElERU5USVRZLAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUg VkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQ QVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgSU5ERVggc2FsZXNf bGlzdF9zYWxlc21hbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxl c21hbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBP TiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJM RSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdP c2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBz YWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdUcnVtcCcs ICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5U TyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50 LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1 MDAsICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9u YW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdG b3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNf YW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAg ICAgICA3NTAsICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxl c21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwg c2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQb2lyb3QnLCAgICdCZXJsaW4n LCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0 IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRl KSBWQUxVRVMgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAz LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19z dGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdMaScsICAgICAgICdW bGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxl c19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcy MDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBz YWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdIYWxkZXIn LCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5U TyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50 LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2 NTAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9u YW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdT bWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNf YW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAg ICAgICAxNTAsICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxl c21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7 CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVn Y2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdf Y2F0YWxvZy50ZXh0OworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNf YWxsOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcs IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdI RVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6 OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6 OnBnX2NhdGFsb2cudGV4dDsKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0OworU0VMRUNU ICogRlJPTSBzYWxlc19ub3JkOworU0VMRUNUICogRlJPTSBzYWxlc19hbGw7CisKKy0tIFVz ZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcyBhZnRlciBtZXJnZSBwYXJ0aXRpb25zCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxsIFdI RVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Qg V0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlz dCBXSEVSRSBzYWxlc21hbl9uYW1lID0gJ0l2YW5vdic7CisKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg ZjNiODY0MWQ3Ni4uZWFkYjMzZTYxNyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTI2MjgsNiArMjYyOCw3IEBAIFNpbXBsZVN0YXRzCiBTaW1wbGVTdHJpbmdMaXN0CiBT aW1wbGVTdHJpbmdMaXN0Q2VsbAogU2luZ2xlQm91bmRTb3J0SXRlbQorU2luZ2xlUGFydGl0 aW9uU3BlYwogU2l6ZQogU2tpcFBhZ2VzCiBTbGFiQmxvY2sKLS0gCjIuNDAuMS53aW5kb3dz LjEKCg== --------------zvgZ3AVND0XMAdKBco4vZL9d Content-Type: text/plain; charset=UTF-8; name="v31-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v31-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyOGU1YjVlMDI1NzA5Mjk0MGM1MjYxN2Q4MjA1ZWY2NDM2OTJlODQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogVHVlLCAyIEFwciAyMDI0IDIzOjI3OjI5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2MzEgMi8zXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcwotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAg ICAgIHwgICA2NSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAg ICAgICAgIHwgIDQxMSArKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgICAzOCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYyAgICAgICAgICAgIHwgICA2MiArLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYyAgICAgICAgIHwgIDY1NyArKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgICAxOCArCiBzcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCAgICAgICAgIHwgICAgNSArCiBzcmMvaW5jbHVk ZS91dGlscy9ydWxldXRpbHMuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKIC4uLi9pc29s YXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dCAgICB8ICAxOTAgKysrCiBzcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIHNy Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYyB8ICAgNTQgKwog Li4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyAr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAxNDE3 ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f c3BsaXQuc3FsICAgICAgfCAgODMzICsrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgIDEgKwogMTkgZmlsZXMgY2hhbmdlZCwg Mzc2NiBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3Bs aXQuc3BlYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX3NwbGl0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggZjlmMjc3OGIzZC4uY2Q4 MzA0ZWY3NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9kZGwuc2dtbApAQCAtNDQwMCw2ICs0NDAwLDI1IEBAIEFMVEVSIFRBQkxFIG1l YXN1cmVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZtMDMp IElOVE8gbWVhc3VyZW1lbnRfeTIwMDZxMTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9w YXJhPgorCisgICAgPHBhcmE+CisgICAgIFNpbWlsYXJseSB0byBtZXJnaW5nIG11bHRpcGxl IHRhYmxlIHBhcnRpdGlvbnMsIHRoZXJlIGlzIGFuIG9wdGlvbiBmb3IKKyAgICAgc3BsaXR0 aW5nIGEgc2luZ2xlIHBhcnRpdGlvbiBpbnRvIG11bHRpcGxlIHVzaW5nIHRoZQorICAgICA8 bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0aXRpb24iPjxjb21tYW5k PkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+PC9saW5rPi4KKyAg ICAgVGhpcyBmZWF0dXJlIGNvdWxkIGNvbWUgaW4gaGFuZHkgd2hlbiBvbmUgcGFydGl0aW9u IGdyb3dzIHRvbyBiaWcKKyAgICAgYW5kIG5lZWRzIHRvIGJlIHNwbGl0IGludG8gbXVsdGlw bGUuICBJdCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQKKyAgICAgdGhpcyBvcGVyYXRpb24g aXMgbm90IHN1cHBvcnRlZCBmb3IgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGFjcXVp cmVzCisgICAgIGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2ss IHdoaWNoIGNvdWxkIGltcGFjdCBoaWdoLWxvYWQKKyAgICAgc3lzdGVtcyBkdWUgdG8gdGhl IGxvY2sncyByZXN0cmljdGl2ZSBuYXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgY2FuIHNwbGl0 CisgICAgIHRoZSBxdWFydGVyIHBhcnRpdGlvbiBiYWNrIHRvIG1vbnRobHkgcGFydGl0aW9u czoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50IFNQTElUIFBB UlRJVElPTiBtZWFzdXJlbWVudF95MjAwNnExIElOVE8KKyAgIChQQVJUSVRJT04gbWVhc3Vy ZW1lbnRfeTIwMDZtMDEgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMS0wMScpIFRPICgnMjAw Ni0wMi0wMScpLAorICAgIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMiBGT1IgVkFM VUVTIEZST00gKCcyMDA2LTAyLTAxJykgVE8gKCcyMDA2LTAzLTAxJyksCisgICAgUEFSVElU SU9OIG1lYXN1cmVtZW50X3kyMDA2bTAzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDMtMDEn KSBUTyAoJzIwMDYtMDQtMDEnKSk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvcGFyYT4K KwogICAgPC9zZWN0Mz4KIAogICAgPHNlY3QzIGlkPSJkZGwtcGFydGl0aW9uaW5nLWRlY2xh cmF0aXZlLWxpbWl0YXRpb25zIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRl eCBlMGE5OGJjNTM4Li5hMTcwMzE1NTg1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCkBAIC0zNyw2ICszNywxMCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRB Q0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fQogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBb IENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAg IFNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRPCisgICAgICAgIChQQVJUSVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+ IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSwKKyAgICAgICAgIFBBUlRJ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4u Ll0pCiBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBNRVJHRSBQQVJUSVRJT05TICg8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dKQogICAgICAgICBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xMTIxLDYgKzEx MjUsNDQgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRh YmxlLXNwbGl0LXBhcnRpdGlvbiI+CisgICAgPHRlcm0+PGxpdGVyYWw+U1BMSVQgUEFSVElU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVw bGFjZWFibGU+IElOVE8gKFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFi bGU+IHwgREVGQVVMVCB9LCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2Vh YmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dKTwvbGl0ZXJhbD48L3Rlcm0+CisKKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIHNwbGl0cyBhIHNpbmdsZSBw YXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZS4gSGFzaC1wYXJ0aXRpb25pbmcKKyAgICAg IGlzIG5vdCBzdXBwb3J0ZWQuIEJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90 IG92ZXJsYXAgd2l0aCBuZXcgYW5kCisgICAgICBleGlzdGluZyBwYXJ0aXRpb25zIChleGNl cHQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBs YWNlYWJsZT4pLgorICAgICAgSWYgdGhlIHNwbGl0IHBhcnRpdGlvbiBpcyBhIERFRkFVTFQg cGFydGl0aW9uLCBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIG11c3QgYmUgREVGQVVMVC4K KyAgICAgIEluIGNhc2Ugb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBvciBvbmUgb2YgZXhp c3RpbmcgcGFydGl0aW9ucyBpcyBERUZBVUxULAorICAgICAgbmV3IHBhcnRpdGlvbnMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuIGhhdmUgc3BhY2VzCisgICAgICBiZXR3ZWVu IHBhcnRpdGlvbnMgYm91bmRzLiAgSWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90 IGhhdmUgYSBERUZBVUxUCisgICAgICBwYXJ0aXRpb24sIHRoZSBERUZBVUxUIHBhcnRpdGlv biBjYW4gYmUgZGVmaW5lZCBhcyBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBkbyBu b3QgY29udGFpbiBhIERFRkFVTFQgcGFydGl0aW9uIGFuZCB0aGUgcGFydGl0aW9uZWQgdGFi bGUKKyAgICAgIGRvZXMgbm90IGhhdmUgYSBERUZBVUxUIHBhcnRpdGlvbiwgdGhlIGZvbGxv d2luZyBtdXN0IGJlIHRydWU6IHN1bSBib3VuZHMgb2YKKyAgICAgIG5ldyBwYXJ0aXRpb25z IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIHNob3VsZCBiZQorICAgICAgZXF1YWwgdG8g Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgT25lIG9mIHRoZSBuZXcg cGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBjYW4gaGF2ZQorICAgICAg dGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICh0aGlzIGlz IHN1aXRhYmxlIGluIGNhc2Ugb2Ygc3BsaXR0aW5nIGEgREVGQVVMVCBwYXJ0aXRpb246IHdl IHNwbGl0IGl0LCBidXQgYWZ0ZXIKKyAgICAgIHNwbGl0dGluZyB3ZSBoYXZlIGEgcGFydGl0 aW9uIHdpdGggdGhlIHNhbWUgbmFtZSkuCisgICAgICBPbmx5IHNpbXBsZSwgbm9uLXBhcnRp dGlvbmVkIHBhcnRpdGlvbiBjYW4gYmUgc3BsaXQuCisgICAgIDwvcGFyYT4KKyAgICAgPG5v dGU+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGNvbW1hbmQgYWNxdWlyZXMgYW4gPGxp dGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jay4KKyAgICAgICBUaGlzIGlz IGEgc2lnbmlmaWNhbnQgbGltaXRhdGlvbiwgd2hpY2ggbGltaXRzIHRoZSB1c2FnZSBvZiB0 aGlzCisgICAgICAgY29tbWFuZCB3aXRoIGxhcmdlIHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRl ciBhIGhpZ2ggbG9hZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3Fs LWFsdGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+CiAgICAgPHRlcm0+PGxpdGVyYWw+TUVS R0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD48L3Rlcm0+CiAKQEAgLTExODgsNyArMTIzMCw4IEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICBBbGwgdGhlIGZvcm1zIG9mIEFMVEVSIFRBQkxFIHRoYXQgYWN0IG9u IGEgc2luZ2xlIHRhYmxlLCBleGNlcHQKICAgIDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4s IDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAogICAgPGxpdGVyYWw+QVRUQUNIIFBB UlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+ LAotICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+IGNhbiBiZSBj b21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xpdGVyYWw+LCBh bmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4KKyAgIGNhbiBiZSBjb21i aW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUgYXBw bGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8gYWRk IHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAogICAg Y29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl ZnVsIHdpdGggbGFyZ2UKQEAgLTE0MzIsNyArMTQ3NSw3IEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRo ZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRv IGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCi0gICAgICAgIG9yIHRoZSBuYW1lIG9mIHRoZSBu ZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICAgb3IgdGhlIG5hbWUgb2Ygc3BsaXQgcGFy dGl0aW9uLCBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAgICAg ICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBA IC0xODQ4LDYgKzE4OTEsMjQgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRB Q0ggUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDE1bTEyOwogPC9wcm9ncmFtbGlzdGluZz48 L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2Yg dGhlIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MyBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMgRk9SIFZBTFVFUyBGUk9NICgn MjAyMy0wMi0wMScpIFRPICgnMjAyMy0wMy0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEnKSBUTyAoJzIwMjMtMDQtMDEn KSwKKyAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMyBGT1IgVkFMVUVTIEZST00gKCcyMDIz LTA0LTAxJykgVE8gKCcyMDIzLTA1LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+ CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIGxp c3QtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7Cis8L3By b2dyYW1saXN0aW5nPjwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRvIG1lcmdlIHNldmVyYWwg cGFydGl0aW9ucyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKIDxw cm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMDVlODZk ZThlYi4uNTgyODkwYTMwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTY3 MCw2ICs2NzAsOSBAQCBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVm cyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJl c3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMg Y2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3Rv cmFnZW1vZGUpOwogCitzdGF0aWMgdm9pZCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJCQkJCSBSZWxhdGlvbiByZWws IFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0 ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ ICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0 KTsKIApAQCAtNDc0MCw2ICs0NzQzLDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlz dCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2s7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJY21kX2xv Y2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBB VF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZl TG9jazsKIAkJCQlicmVhazsKQEAgLTUxNjMsNiArNTE3MCwxMSBAQCBBVFByZXBDbWQoTGlz dCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBO byBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19N SVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlBVFNpbXBs ZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJLyogTm8g Y29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKKwkJCWJyZWFrOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCUFUU2ltcGxl UGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CiAJCQkvKiBObyBj b21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCkBAIC01NTY1LDYgKzU1NzcsMTQgQEAg QVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2Fz ZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRh Y2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+ bmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9 IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9j a21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQg IT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRh YiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7 CisJCQlicmVhazsKIAkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQljbWQgPSBBVFBh cnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2Rl LAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CkBAIC02NTY3LDYgKzY1ODcsOCBA QCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQog CQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRp b25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUi OworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJcmV0dXJuICJTUExJVCBQQVJUSVRJ T04iOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCXJldHVybiAiTUVSR0UgUEFS VElUSU9OUyI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CkBAIC0yMDg1Miw2ICsyMDg3NCwy NjAgQEAgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0 b3JhZ2Vtb2RlKQogCXJldHVybiBjc3RvcmFnZTsKIH0KIAorLyoKKyAqIFN0cnVjdCB3aXRo IGNvbnRleHQgb2YgbmV3IHBhcnRpdGlvbiBmb3IgaW5zZXJ0IHJvd3MgZnJvbSBzcGxpdGVk IHBhcnRpdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRleHQK K3sKKwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVj ayBzbG90IGZvciBwYXJ0aXRpb24KKwkJCQkJCQkJICogKE5VTEwgZm9yIERFRkFVTFQgcGFy dGl0aW9uKSAqLworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxr IGluc2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3RzbG90Owkv KiBzbG90IGZvciBpbnNlcnQgcm93IGludG8gcGFydGl0aW9uICovCisJUmVsYXRpb24JcGFy dFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30gU3BsaXRQYXJ0aXRpb25D b250ZXh0OworCisKKy8qCisgKiBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGNyZWF0 ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24gYW5kIGZpbGwgaXQKKyAqLworc3RhdGljIFNwbGl0 UGFydGl0aW9uQ29udGV4dCAqCitjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoUmVsYXRp b24gcGFydFJlbCkKK3sKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjOworCisJcGMgPSAo U3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIHBhbGxvYzAoc2l6ZW9mKFNwbGl0UGFydGl0aW9u Q29udGV4dCkpOworCXBjLT5wYXJ0UmVsID0gcGFydFJlbDsKKworCS8qCisJICogUHJlcGFy ZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiBUaGUgRlNNIGlz IGVtcHR5LCBzbworCSAqIGRvbid0IGJvdGhlciB1c2luZyBpdC4KKwkgKi8KKwlwYy0+Ymlz dGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIHR1cGxlIHNsb3Qg Zm9yIG5ldyBwYXJ0aXRpb24uICovCisJcGMtPmRzdHNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJlbCksCisJCQkJCQkJCQkJICAg dGFibGVfc2xvdF9jYWxsYmFja3MocGMtPnBhcnRSZWwpKTsKKwlFeGVjU3RvcmVBbGxOdWxs VHVwbGUocGMtPmRzdHNsb3QpOworCisJcmV0dXJuIHBjOworfQorCisvKgorICogZGVsZXRl U3BsaXRQYXJ0aXRpb25Db250ZXh0OiBkZWxldGUgY29udGV4dCBmb3IgcGFydGl0aW9uCisg Ki8KK3N0YXRpYyB2b2lkCitkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0 aXRpb25Db250ZXh0ICpwYywgaW50IHRpX29wdGlvbnMpCit7CisJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRTdGF0ZShwYy0+ YmlzdGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQocGMtPnBhcnRSZWwsIHRp X29wdGlvbnMpOworCisJcGZyZWUocGMpOworfQorCisvKgorICogbW92ZVNwbGl0VGFibGVS b3dzOiBzY2FuIHNwbGl0IHBhcnRpdGlvbiAoc3BsaXRSZWwpIG9mIHBhcnRpdGlvbmVkIHRh YmxlCisgKiAocmVsKSBhbmQgbW92ZSByb3dzIGludG8gbmV3IHBhcnRpdGlvbnMuCisgKgor ICogTmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb246CisgKiBwYXJ0bGlzdDogbGlzdCBvZiBw b2ludGVycyB0byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHVyZXMuCisgKiBuZXdQYXJ0 UmVsczogbGlzdCBvZiBSZWxhdGlvbidzLgorICogZGVmYXVsdFBhcnRPaWQ6IG9pZCBvZiBE RUZBVUxUIHBhcnRpdGlvbiwgZm9yIHRhYmxlIHJlbC4KKyAqLworc3RhdGljIHZvaWQKK21v dmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0 ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFydFJlbHMsIE9pZCBkZWZhdWx0UGFydE9pZCkKK3sK KwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJ aW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5kSWQJ bXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJ CSAgICpsaXN0cHRyMjsKKwlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwlFeHByQ29udGV4 dCAqZWNvbnRleHQ7CisJVGFibGVTY2FuRGVzYyBzY2FuOworCVNuYXBzaG90CXNuYXBzaG90 OworCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCUxpc3QJICAgKnBhcnRDb250ZXh0cyA9IE5J TDsKKwlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwlTcGxpdFBhcnRpdGlvbkNv bnRleHQgKmRlZmF1bHRQYXJ0Q3R4ID0gTlVMTCwKKwkJCSAgICpwYzsKKwlib29sCQlpc09s ZERlZmF1bHRQYXJ0ID0gZmFsc2U7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQo dHJ1ZSk7CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlmb3Jib3Ro KGxpc3RwdHIsIHBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5n bGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3Qo bGlzdHB0cik7CisKKwkJcGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFJlbGF0 aW9uKSBsZmlyc3QobGlzdHB0cjIpKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVs dCkKKwkJeworCQkJLyogV2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBmb3IgZGV0 YWNoZWQgREVGQVVMVCBwYXJ0aXRpb24uICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOwor CQl9CisJCWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8q IEJ1aWxkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNr IHF1YWxzLiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3Vu ZChyZWwsIHNwcy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICop IGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBh cnRDb25zdHJhaW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVj Q2hlY2soKS4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNf ZXhwbGljaXQocGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFy cyBpbiB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJ CQkgKiBzcGxpdFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0 aXRpb25fdmFyYXR0bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxp dFJlbCwgcmVsKTsKKworCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJl RXhwcigoRXhwciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlB c3NlcnQocGMtPnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBw YXJ0aXRpb24gY29udGV4dCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBl bmQocGFydENvbnRleHRzLCBwYyk7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgcGFydGl0aW9u IGNvbnRleHQgZm9yIERFRkFVTFQgcGFydGl0aW9uLiBXZSBjYW4gaW5zZXJ0IHZhbHVlcwor CSAqIGludG8gdGhpcyBwYXJ0aXRpb24gaW4gY2FzZSBzcGFjZXMgd2l0aCB2YWx1ZXMgYmV0 d2VlbiBuZXcgcGFydGl0aW9ucy4KKwkgKi8KKwlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYmIE9p ZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJLyogSW5kaWNhdGUgdGhhdCB3ZSBh bGxvY2F0ZSBjb250ZXh0IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJaXNPbGRE ZWZhdWx0UGFydCA9IHRydWU7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRlU3BsaXRQYXJ0 aXRpb25Db250ZXh0KHRhYmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spKTsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0 YXRlKTsKKworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNzbG90 ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Ioc3BsaXRSZWwp LAorCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3Moc3BsaXRSZWwpKTsKKworCS8q CisJICogTWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFy dGl0aW9uIHRvIG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24g YnV0IG90aGVyIG5ldyBwYXJ0aXRpb25zIGNhbiB1c2UgdGhlIHNhbWUKKwkgKiBtYXApLgor CSAqLworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdF9oZWFk KHBhcnRDb250ZXh0cykpOworCXR1cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUo UmVsYXRpb25HZXREZXNjcihzcGxpdFJlbCksCisJCQkJCQkJCQkgICBSZWxhdGlvbkdldERl c2NyKHBjLT5wYXJ0UmVsKSk7CisKKwkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCisJ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNj YW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRSZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwor CS8qCisJICogU3dpdGNoIHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQg aXQgZm9yIGVhY2ggdHVwbGUKKwkgKiBwcm9kdWNlZCwgc28gd2UgZG9uJ3QgbGVhayBtZW1v cnkuCisJICovCisJb2xkQ3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldFBlclR1cGxl TWVtb3J5Q29udGV4dChlc3RhdGUpKTsKKworCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRz bG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwl7CisJCWJvb2wJ CWZvdW5kID0gZmFsc2U7CisJCWJvb2wJCWluc2VydF9pbmRleGVzOworCQlUdXBsZVRhYmxl U2xvdCAqaW5zZXJ0c2xvdDsKKworCQkvKiBFeHRyYWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUu ICovCisJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xvdCk7CisKKwkJZWNvbnRleHQtPmVjeHRf c2NhbnR1cGxlID0gc3Jjc2xvdDsKKworCQkvKiBTZWFyY2ggcGFydGl0aW9uIGZvciBjdXJy ZW50IHNsb3Qgc3Jjc2xvdC4gKi8KKwkJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Q29udGV4dHMp CisJCXsKKwkJCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0 cik7CisKKwkJCWlmIChwYy0+cGFydHF1YWxzdGF0ZSAvKiBza2lwIERFRkFVTFQgcGFydGl0 aW9uICovICYmCisJCQkJRXhlY0NoZWNrKHBjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkp CisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJUmVzZXRF eHByQ29udGV4dChlY29udGV4dCk7CisJCX0KKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJLyog VXNlIERFRkFVTFQgcGFydGl0aW9uIGlmIGl0IGV4aXN0cy4gKi8KKwkJCWlmIChkZWZhdWx0 UGFydEN0eCkKKwkJCQlwYyA9IGRlZmF1bHRQYXJ0Q3R4OworCQkJZWxzZQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiksCisJ CQkJCQkgZXJybXNnKCJjYW4gbm90IGZpbmQgcGFydGl0aW9uIGZvciBzcGxpdCBwYXJ0aXRp b24gcm93IiksCisJCQkJCQkgZXJydGFibGUoc3BsaXRSZWwpKSk7CisJCX0KKworCQlpZiAo dHVwbGVfbWFwKQorCQl7CisJCQkvKiBOZWVkIHRvIHVzZSBtYXAgZm9yIGNvcHkgYXR0cmli dXRlcy4gKi8KKwkJCWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QodHVwbGVf bWFwLT5hdHRyTWFwLCBzcmNzbG90LCBwYy0+ZHN0c2xvdCk7CisJCX0KKwkJZWxzZQorCQl7 CisJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQlpbnNlcnRzbG90ID0g cGMtPmRzdHNsb3Q7CisKKwkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQlt ZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJ CQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQltZW1jcHko aW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkgICBz aXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJRXhlY1N0b3JlVmly dHVhbFR1cGxlKGluc2VydHNsb3QpOworCQl9CisKKwkJLyoKKwkJICogV3JpdGUgdGhlIHR1 cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAgV2UgaWdub3JlIHRoZQorCQkgKiAnaW5z ZXJ0X2luZGV4ZXMnIGZsYWcgc2luY2UgbmV3UGFydFJlbCBoYXMgbm8gaW5kZXhlcyBhbnl3 YXkuCisJCSAqLworCQkodm9pZCkgdGFibGVfdHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVsLCBp bnNlcnRzbG90LCBteWNpZCwKKwkJCQkJCQkJICB0aV9vcHRpb25zLCBwYy0+YmlzdGF0ZSwg Jmluc2VydF9pbmRleGVzKTsKKworCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwor CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRDeHQpOworCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwlVbnJlZ2lzdGVyU25hcHNo b3Qoc25hcHNob3QpOworCisJaWYgKHR1cGxlX21hcCkKKwkJZnJlZV9jb252ZXJzaW9uX21h cCh0dXBsZV9tYXApOworCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNzbG90 KTsKKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwlmb3JlYWNoKGxpc3RwdHIs IHBhcnRDb250ZXh0cykKKwkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KChTcGxpdFBh cnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpLCB0aV9vcHRpb25zKTsKKworCS8q IE5lZWQgdG8gY2xvc2UgdGFibGUgYW5kIGZyZWUgYnVmZmVycyBmb3IgREVGQVVMVCBwYXJ0 aXRpb24uICovCisJaWYgKGlzT2xkRGVmYXVsdFBhcnQpCisJeworCQlSZWxhdGlvbglkZWZh dWx0UGFydFJlbCA9IGRlZmF1bHRQYXJ0Q3R4LT5wYXJ0UmVsOworCisJCWRlbGV0ZVNwbGl0 UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFydEN0eCwgdGlfb3B0aW9ucyk7CisJCS8qIEtl ZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShkZWZhdWx0UGFy dFJlbCwgTm9Mb2NrKTsKKwl9Cit9CisKIC8qCiAgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZTog Y3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9uIHdpdGggZ2l2ZW4gbmFtZQogICogKG5l d1BhcnROYW1lKSBsaWtlIHRhYmxlIChtb2RlbFJlbE5hbWUpCkBAIC0yMDkwNiw2ICsyMTE4 MiwxNDEgQEAgY3JlYXRlUGFydGl0aW9uVGFibGUoUmFuZ2VWYXIgKm5ld1BhcnROYW1lLCBS YW5nZVZhciAqbW9kZWxSZWxOYW1lLAogCQkJCSAgIE5VTEwpOwogfQogCisvKgorICogQUxU RVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IElOVE8g PHBhcnRpdGlvbi1saXN0PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU3BsaXRQYXJ0aXRp b24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWws CisJCQkJCSBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpj b250ZXh0KQoreworCVJlbGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNwbGl0UmVsT2lkOwor CWNoYXIJCXJlbG5hbWVbTkFNRURBVEFMRU5dOworCU9pZAkJCW5hbWVzcGFjZUlkOworCUxp c3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJaXNTYW1lTmFt ZSA9IGZhbHNlOworCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCUxpc3QJICAg Km5ld1BhcnRSZWxzID0gTklMOworCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCVJhbmdlVmFy ICAgKnBhcmVudE5hbWU7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisKKwlkZWZhdWx0UGFy dE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0 aW9uRGVzYyhyZWwsIHRydWUpKTsKKworCS8qCisJICogV2UgYXJlIGdvaW5nIHRvIGRldGFj aCBhbmQgcmVtb3ZlIHRoaXMgcGFydGl0aW9uOiBuZWVkIHRvIHVzZSBleGNsdXNpdmUKKwkg KiBsb2NrIGZvciBwcmV2ZW50IERNTC1xdWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJICov CisJc3BsaXRSZWwgPSB0YWJsZV9vcGVucnYoY21kLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVM b2NrKTsKKworCWlmIChzcGxpdFJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVM QVRJT04pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IHNwbGl0IG5vbi10YWJsZSBwYXJ0 aXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNwbGl0UmVs KSkpKTsKKworCXNwbGl0UmVsT2lkID0gUmVsYXRpb25HZXRSZWxpZChzcGxpdFJlbCk7CisK KwkvKiBDaGVjayBkZXNjcmlwdGlvbnMgb2YgbmV3IHBhcnRpdGlvbnMuICovCisJZm9yZWFj aChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJT2lkCQkJZXhpc3RpbmdfcmVsaWQ7 CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICop IGxmaXJzdChsaXN0cHRyKTsKKworCQlzdHJsY3B5KHJlbG5hbWUsIHNwcy0+bmFtZS0+cmVs bmFtZSwgTkFNRURBVEFMRU4pOworCisJCS8qCisJCSAqIExvb2sgdXAgdGhlIG5hbWVzcGFj ZSBpbiB3aGljaCB3ZSBhcmUgc3VwcG9zZWQgdG8gY3JlYXRlIHRoZQorCQkgKiBwYXJ0aXRp b24sIGNoZWNrIHdlIGhhdmUgcGVybWlzc2lvbiB0byBjcmVhdGUgdGhlcmUsIGxvY2sgaXQK KwkJICogYWdhaW5zdCBjb25jdXJyZW50IGRyb3AsIGFuZCBtYXJrIHN0bXQtPnJlbGF0aW9u IGFzCisJCSAqIFJFTFBFUlNJU1RFTkNFX1RFTVAgaWYgYSB0ZW1wb3JhcnkgbmFtZXNwYWNl IGlzIHNlbGVjdGVkLgorCQkgKi8KKwkJbmFtZXNwYWNlSWQgPQorCQkJUmFuZ2VWYXJHZXRB bmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHNwcy0+bmFtZSwgTm9Mb2NrLCBOVUxMKTsKKwor CQkvKgorCQkgKiBUaGlzIHdvdWxkIGZhaWwgbGF0ZXIgb24gYW55d2F5LCBpZiB0aGUgcmVs YXRpb24gYWxyZWFkeSBleGlzdHMuCisJCSAqIEJ1dCBieSBjYXRjaGluZyBpdCBoZXJlIHdl IGNhbiBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkJICovCisJCWV4aXN0aW5nX3Jl bGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQocmVsbmFtZSwgbmFtZXNwYWNlSWQpOworCQlpZiAo ZXhpc3RpbmdfcmVsaWQgPT0gc3BsaXRSZWxPaWQgJiYgIWlzU2FtZU5hbWUpCisJCQkvKiBP bmUgbmV3IHBhcnRpdGlvbiBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRp dGlvbi4gKi8KKwkJCWlzU2FtZU5hbWUgPSB0cnVlOworCQllbHNlIGlmIChleGlzdGluZ19y ZWxpZCAhPSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVz XCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSkpOworCX0KKworCS8qIERldGFjaCBzcGxp dCBwYXJ0aXRpb24uICovCisJUmVtb3ZlSW5oZXJpdGFuY2Uoc3BsaXRSZWwsIHJlbCwgZmFs c2UpOworCS8qIERvIHRoZSBmaW5hbCBwYXJ0IG9mIGRldGFjaGluZy4gKi8KKwlEZXRhY2hQ YXJ0aXRpb25GaW5hbGl6ZShyZWwsIHNwbGl0UmVsLCBmYWxzZSwgZGVmYXVsdFBhcnRPaWQp OworCisJLyoKKwkgKiBJZiBuZXcgcGFydGl0aW9uIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHNw bGl0IHBhcnRpdGlvbiB0aGVuIHdlIHNob3VsZAorCSAqIHJlbmFtZSBzcGxpdCBwYXJ0aXRp b24gZm9yIHJldXNlIG5hbWUuCisJICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgor CQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxp dCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBmb3IgcmVuYW1lLgorCQkgKi8KKwkJ Q29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8K KwkJc3ByaW50Zih0bXBSZWxOYW1lLCAic3BsaXQtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRS ZWxpZChyZWwpLCBNeVByb2NQaWQpOworCQlSZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0 UmVsT2lkLCB0bXBSZWxOYW1lLCBmYWxzZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFdlIG11 c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlv biB0dXBsZQorCQkgKiB2aXNpYmxlIGFmdGVyIHJlbmFtZS4KKwkJICovCisJCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CisJfQorCisJLyogQ3JlYXRlIG5ldyBwYXJ0aXRpb25zIChs aWtlIHNwbGl0IHBhcnRpdGlvbiksIHdpdGhvdXQgaW5kZXhlcy4gKi8KKwlwYXJlbnROYW1l ID0gbWFrZVJhbmdlVmFyKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFj ZShyZWwpKSwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIC0xKTsK Kwlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QpCisJeworCQlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7 CisJCVJlbGF0aW9uCW5ld1BhcnRSZWw7CisKKwkJY3JlYXRlUGFydGl0aW9uVGFibGUoc3Bz LT5uYW1lLCBwYXJlbnROYW1lLCBjb250ZXh0KTsKKworCQkvKiBPcGVuIHRoZSBuZXcgcGFy dGl0aW9uIGFuZCBhY3F1aXJlIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LiAqLworCQluZXdQYXJ0 UmVsID0gdGFibGVfb3BlbnJ2KHNwcy0+bmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisK KwkJbmV3UGFydFJlbHMgPSBsYXBwZW5kKG5ld1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwl9 CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlv bnMuICovCisJbW92ZVNwbGl0VGFibGVSb3dzKHJlbCwgc3BsaXRSZWwsIGNtZC0+cGFydGxp c3QsIG5ld1BhcnRSZWxzLCBkZWZhdWx0UGFydE9pZCk7CisJLyogS2VlcCB0aGUgbG9jayB1 bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9jayk7CisKKwkv KiBBdHRhY2ggbmV3IHBhcnRpdGlvbnMgdG8gcGFydGl0aW9uZWQgdGFibGUuICovCisJZm9y Ym90aChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJ eworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAq KSBsZmlyc3QobGlzdHB0cik7CisJCVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAoUmVsYXRpb24p IGxmaXJzdChsaXN0cHRyMik7CisKKwkJLyogd3F1ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9u IGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdCBuZWVkLiAqLworCQlhdHRhY2hQ YXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIHNwcy0+Ym91bmQpOworCQkv KiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwkJdGFibGVfY2xvc2UobmV3UGFy dFJlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKiBEcm9wIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlv YmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2JqZWN0SWQg PSBzcGxpdFJlbE9pZDsKKwlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCS8qIFByb2JhYmx5 IERST1BfQ0FTQ0FERSBpcyBub3QgbmVlZGVkLiAqLworCXBlcmZvcm1EZWxldGlvbigmb2Jq ZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKK30KKwogLyoKICAqIG1vdmVNZXJnZWRUYWJsZXNS b3dzOiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIChtZXJnaW5nUGFydGl0aW9uc0xp c3QpCiAgKiBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgKHJlbCkgYW5kIG1vdmUgcm93cyBp bnRvIHRoZSBuZXcgcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAxZmNkYjI1MTQyLi5l ZTdhODkwNDVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI2OSw2ICsyNjksNyBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCVBhcnRpdGlvbkVsZW0gKnBhcnRlbGVtOwogCVBhcnRp dGlvblNwZWMgKnBhcnRzcGVjOwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJvdW5kc3Bl YzsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzaW5nbGVwYXJ0c3BlYzsKIAlSb2xlU3BlYyAg ICpyb2xlc3BlYzsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1YmxpY2F0aW9ub2JqZWN0c3Bl YzsKIAlzdHJ1Y3QgU2VsZWN0TGltaXQgKnNlbGVjdGxpbWl0OwpAQCAtNjQ2LDYgKzY0Nyw4 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8cGFydGVsZW0+CXBhcnRf ZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFtcwogJXR5cGUgPHBhcnRib3VuZHNwZWM+ IFBhcnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNpbmdsZXBhcnRzcGVjPglTaW5nbGVQYXJ0 aXRpb25TcGVjCisldHlwZSA8bGlzdD4JCXBhcnRpdGlvbnNfbGlzdAogJXR5cGUgPGxpc3Q+ CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0K IApAQCAtNzc3LDcgKzc4MCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJU0FW RVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNF Q1VSSVRZIFNFTEVDVAogCVNFUVVFTkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJW RVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwotCVNJ TUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTT1VSQ0UgU1FMX1Ag U1RBQkxFIFNUQU5EQUxPTkVfUAorCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05B UFNIT1QgU09NRSBTUExJVCBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAogCVNU QVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElOIFNURE9VVCBTVE9SQUdFIFNUT1JFRCBT VFJJQ1RfUCBTVFJJTkdfUCBTVFJJUF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQ T1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNURU1fVVNFUgogCkBAIC0yMzA3LDYg KzIzMTAsMjMgQEAgYWx0ZXJfdGFibGVfY21kczoKIAkJCXwgYWx0ZXJfdGFibGVfY21kcyAn LCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCitw YXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjCQkJCQkJCXsgJCQgPSBs aXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRpb25zX2xpc3QgJywnIFNpbmdsZVBhcnRp dGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK1NpbmdsZVBhcnRp dGlvblNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRT cGVjCisJCQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpuID0gbWFrZU5vZGUoU2lu Z2xlUGFydGl0aW9uU3BlYyk7CisKKwkJCQkJbi0+bmFtZSA9ICQyOworCQkJCQluLT5ib3Vu ZCA9ICQzOworCisJCQkJCSQkID0gbjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9uX2NtZDoK IAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJsZV9uYW1l PiBGT1IgVkFMVUVTICovCiAJCQlBVFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBh cnRpdGlvbkJvdW5kU3BlYwpAQCAtMjM1MSw2ICsyMzcxLDIwIEBAIHBhcnRpdGlvbl9jbWQ6 CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwog CQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRp dGlvbl9uYW1lPiBJTlRPICgpICovCisJCQl8IFNQTElUIFBBUlRJVElPTiBxdWFsaWZpZWRf bmFtZSBJTlRPICcoJyBwYXJ0aXRpb25zX2xpc3QgJyknCisJCQkJeworCQkJCQlBbHRlclRh YmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNt ZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0g QVRfU3BsaXRQYXJ0aXRpb247CisJCQkJCWNtZC0+bmFtZSA9ICQzOworCQkJCQljbWQtPmJv dW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ2OworCQkJCQljbWQtPmNvbmN1 cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9 IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBB UlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCiAJCQl8IE1FUkdFIFBBUlRJ VElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUK IAkJCQl7CkBAIC0xNzc1Niw2ICsxNzc5MCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJ CXwgU0tJUAogCQkJfCBTTkFQU0hPVAogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwg U1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApAQCAtMTgzOTMsNiArMTg0 MjgsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPTUUK IAkJCXwgU09VUkNFCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJ fCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDQ4 YTIzYzdjYTQuLjg4YTRhNDExODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnN0cmFpbnRB dHRycyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJIExpc3QgKmNvbnN0cmFp bnRMaXN0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtblR5cGUoQ3JlYXRlU3RtdENv bnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pOwogc3RhdGljIHZvaWQgc2V0U2NoZW1h TmFtZShjb25zdCBjaGFyICpjb250ZXh0X3NjaGVtYSwgY2hhciAqKnN0bXRfc2NoZW1hX25h bWUpOwotc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKTsKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybVBh cnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25Cb3VuZFNwZWMg KmJvdW5kKTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1QYXJ0aXRpb25SYW5nZUJvdW5kcyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0LAogCQkJCQkJCQkJCSAgIFJlbGF0aW9u IHBhcmVudCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUluZmluaXRlQm91bmRzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QpOwpAQCAtMzQxNSw2ICszNDE1LDQzIEBAIHRyYW5z Zm9ybVJ1bGVTdG10KFJ1bGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywK IH0KIAogCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFs eXplIHRoZSBBTFRFUiBUQUJMTEUgLi4uIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKgor ICogRm9yIGVhY2ggbmV3IHBhcnRpdGlvbiBzcHMtPmJvdW5kIGlzIHNldCB0byB0aGUgdHJh bnNmb3JtZWQgdmFsdWUgb2YgYm91bmQuCisgKiBEb2VzIGNoZWNrcyBmb3IgYm91bmRzIG9m IG5ldyBwYXJ0aXRpb25zLgorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtUGFydGl0aW9u Q21kRm9yU3BsaXQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0 Y21kKQoreworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOworCU9pZAkJCXNwbGl0UGFy dE9pZDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyOworCisJaWYgKHBhcmVudC0+cmRfcmVsLT5y ZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUiLCBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShwYXJlbnQpKSkpOworCisJLyogVHJhbnNmb3JtIHBhcnRpdGlv biBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0OiAqLworCWZvcmVhY2go bGlzdHB0ciwgcGFydGNtZC0+cGFydGxpc3QpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVj ICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJ Y3h0LT5wYXJ0Ym91bmQgPSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoY3h0LCBz cHMtPmJvdW5kKTsKKwkJLyogQXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0 aXRpb24gYm91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRib3VuZDsKKwl9CisK KwlzcGxpdFBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkKHBhcnRjbWQtPm5hbWUsIE5vTG9j aywgZmFsc2UpOworCisJLyogVGhlbiB3ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRo IHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8KKwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChw YXJlbnQsIHNwbGl0UGFydE9pZCwgcGFydGNtZC0+bmFtZSwgcGFydGNtZC0+cGFydGxpc3Qs IGN4dC0+cHN0YXRlKTsKK30KKworCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9y TWVyZ2UKICAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgY29tbWFuZApAQCAtMzc1MSw3ICszNzg4LDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0 bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQl7CiAJCQkJCVBhcnRp dGlvbkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWY7CiAKLQkJCQkJ dHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQpOworCQkJCQl0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZC0+Ym91bmQpOwogCQkJCQkvKiBhc3NpZ24gdHJh bnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZCAqLwogCQkJCQlwYXJ0Y21k LT5ib3VuZCA9IGN4dC5wYXJ0Ym91bmQ7CiAJCQkJfQpAQCAtMzc1OSw2ICszNzk2LDcgQEAg dHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3Rt dCwKIAkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOwogCQkJCWJyZWFrOwog CisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlv bnM6CiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21k ICopIGNtZC0+ZGVmOwpAQCAtMzc2Nyw3ICszODA1LDExIEBAIHRyYW5zZm9ybUFsdGVyVGFi bGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAogCQkJCQkJCQkgZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3Vs ZCBjb250YWlucyBhdCBsZWFzdCB0d28gaXRlbXMiKSkpOwotCQkJCQl0cmFuc2Zvcm1QYXJ0 aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKworCQkJCQlpZiAoY21kLT5zdWJ0 eXBlID09IEFUX1NwbGl0UGFydGl0aW9uKQorCQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21k Rm9yU3BsaXQoJmN4dCwgcGFydGNtZCk7CisJCQkJCWVsc2UKKwkJCQkJCXRyYW5zZm9ybVBh cnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOwogCQkJCQluZXdjbWRzID0gbGFw cGVuZChuZXdjbWRzLCBjbWQpOwogCQkJCQlicmVhazsKIAkJCQl9CkBAIC00MTcyLDEzICs0 MjE0LDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNo YXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21k Ci0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZAorICoJ CUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKICAq Ci0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFy dGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGNtZC0+Ym91 bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQs IGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRyYW5zZm9ybWVkIHZhbHVlIG9m IGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQordHJhbnNmb3JtUGFydGl0 aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91 bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5yZWw7CiAKQEAgLTQxODcsOSAr NDIyOSw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF OgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91bmQsIGlmIGFueSAqLwogCQkJ QXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudFJlbCkgIT0gTlVMTCk7Ci0J CQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJ Y3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZChjeHQtPnBzdGF0ZSwg cGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3VuZCk7CisJCQkJCQkJCQkJCQkJ CSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVY OgogCkBAIC00MTk3LDcgKzQyMzksNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCQkgKiBBIHBhcnRpdGlv bmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5kIHNldC4gIEFMVEVSCiAJ CQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1tYXIsIGJ1dCBub3QgQUxU RVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAo Ym91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coIlwiJXNc IiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuYwppbmRleCA5ZWQ4MGQ3MjFlLi5jMzZlMjZiYTRiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTUwNDAsMTAgKzUwNDAsNjkgQEAg Y2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKIAl9 CiB9CiAKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QKKyAqCisg KiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMg YSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KCkuCisg KiBDaGVja3MgdGhhdCB0aGUgdmFsdWVzIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBkbyBub3Qg b3ZlcmxhcC4KKyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0czoJ YXJyYXkgb2YgU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3RzIHdpdGggaW5mbyBhYm91dCBz cGxpdCBwYXJ0aXRpb25zCisgKiBucGFydHM6CXNpemUgb2YgYXJyYXkgInBhcnRzIgorICov CitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KFJlbGF0 aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJ CQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7 CisJUGFydGl0aW9uS2V5IGtleSBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSZWxhdGlv bkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAt MTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMSwKKwkJ CSAgICpzcHMyOworCUxpc3QJICAgKm92ZXJsYXA7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBh cnRzOyBpKyspCisJeworCQlzcHMxID0gcGFydHNbaV07CisKKwkJZm9yIChqID0gaSArIDE7 IGogPCBucGFydHM7IGorKykKKwkJeworCQkJc3BzMiA9IHBhcnRzW2pdOworCisJCQkvKgor CQkJICogQ2FsY3VsYXRlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHZhbHVlcyBvZiB0d28gcGFy dGl0aW9ucy4KKwkJCSAqLworCQkJb3ZlcmxhcCA9IGxpc3RfaW50ZXJzZWN0aW9uKHNwczEt PmJvdW5kLT5saXN0ZGF0dW1zLAorCQkJCQkJCQkJCXNwczItPmJvdW5kLT5saXN0ZGF0dW1z KTsKKwkJCWlmIChsaXN0X2xlbmd0aChvdmVybGFwKSA+IDApCisJCQl7CisJCQkJQ29uc3QJ ICAgKnZhbCA9IChDb25zdCAqKSBsZmlyc3QobGlzdF9oZWFkKG92ZXJsYXApKTsKKworCQkJ CW92ZXJsYXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAor CQkJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgd291bGQgb3ZlcmxhcCB3aXRo IGFub3RoZXIgbmV3IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlzcHMxLT5uYW1lLT5y ZWxuYW1lLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSkpOworCQkJfQorCQl9CisJfQorfQorCiAv KgogICogZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjCiAgKgogICogUmV0dXJucyBkZXNjcmlw dGlvbiBvZiBwYXJ0aXRpb24gd2l0aCBPaWQgInBhcnRPaWQiIGFuZCBuYW1lICJuYW1lIi4K KyAqCisgKiBwYXJ0T2lkOglwYXJ0aXRpb24gT2lkCisgKiBuYW1lOglwYXJ0aXRpb24gbmFt ZQogICovCiBzdGF0aWMgUGFydGl0aW9uQm91bmRTcGVjICoKIGdldF9wYXJ0aXRpb25fYm91 bmRfc3BlYyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIgKm5hbWUpCkBAIC01MDc2LDYgKzUxMzUs NjA0IEBAIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIg Km5hbWUpCiAJcmV0dXJuIGJvdW5kc3BlYzsKIH0KIAorLyoKKyAqIGNoZWNrX3BhcnRpdGlv bl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5H RSBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0 aXRpb24gInNwZWMiIGlzIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQKKyAqIHBhcnRpdGlvbiAo d2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4gSWYgZmlyc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0 ICJzcGVjIiBpcworICogdGhlIGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zKSB0aGVuIGxvd2Vy IGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yCisgKiBncmVhdGVyIHRoYW4g b3IgZXF1YWwgaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBz cGxpdAorICogcGFydGl0aW9uLiBJZiBsYXN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3Bl YyIgaXMgdGhlIGxhc3Qgb2YgbmV3CisgKiBwYXJ0aXRpb25zKSB0aGVuIHVwcGVyIGJvdW5k IG9mIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvcgorICogZXF1 YWwgaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24uCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxu YW1lOgkJCW5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNw ZWNpZmljYXRpb24gb2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3Bs aXQgcGFydGl0aW9uIE9pZAorICogc3BsaXRQYXJ0TmFtZToJc3BsaXQgcGFydGl0aW9uIG5h bWUKKyAqIGZpcnN0OgkJCXRydWUgaW4gY2FzZSBuZXcgcGFydGl0aW9uICJzcGVjIiBpcyBm aXJzdCBvZiBuZXcgcGFydGl0aW9ucworICogbGFzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBh cnRpdGlvbiAic3BlYyIgaXMgbGFzdCBvZiBuZXcgcGFydGl0aW9ucworICogZGVmYXVsdFBh cnQ6CQl0cnVlIGluIGNhc2UgcGFydGl0aW9uZWQgdGFibGUgaGFzIERFRkFVTFQgcGFydGl0 aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0 ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRp b25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkg ICBjaGFyICpyZWxuYW1lLAorCQkJCQkJCQkJICAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVj LAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIFJhbmdlVmFy ICpzcGxpdFBhcnROYW1lLAorCQkJCQkJCQkJICAgYm9vbCBmaXJzdCwKKwkJCQkJCQkJCSAg IGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkg ICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9u R2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIs CisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRl Z3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRl Z3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWxvd2VyID0gbWFrZV9vbmVf cGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVjLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJ dXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPnVwcGVy ZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZpcnN0IGNoZWNrIGlmIHRoZSByZXN1bHRp bmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBzcGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQg dXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3VuZF9jbXAgY2Fubm90IHJldHVybiB6ZXJv IGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJvdW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQu CisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMs CisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xs YXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywgbG93ZXItPmtpbmQsCisJCQkJCQkJ CSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+ IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVtYXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRh dHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpc3RfbnRo KHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAxKTsKKworCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJ IGVycm1zZygiZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gXCIl c1wiIiwKKwkJCQkJCXJlbG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlNwZWNpZmllZCBsb3dl ciBib3VuZCAlcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgJXMu IiwKKwkJCQkJCSAgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMtPmxvd2VyZGF0 dW1zKSwKKwkJCQkJCSAgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMtPnVwcGVy ZGF0dW1zKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2Nh dGlvbikpKTsKKwl9CisKKwkvKiBOZWVkIHRvIGNoZWNrIGZpcnN0IGFuZCBsYXN0IHBhcnRp dGlvbnMgKGZyb20gc2V0IG9mIG5ldyBwYXJ0aXRpb25zKSAqLworCWlmIChmaXJzdCB8fCBs YXN0KQorCXsKKwkJUGFydGl0aW9uQm91bmRTcGVjICpzcGxpdF9zcGVjID0gZ2V0X3BhcnRp dGlvbl9ib3VuZF9zcGVjKHNwbGl0UGFydE9pZCwgc3BsaXRQYXJ0TmFtZSk7CisJCWJvb2wJ CW92ZXJsYXAgPSBmYWxzZTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJCVBhcnRpdGlvblJh bmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9IG1ha2Vfb25lX3Bh cnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJkYXR1bXMsIHRydWUp OworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywK KwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRj b2xsYXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJ CQkJCQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKworCQkJLyoKKwkJCSAqIExvd2VyIGJv dW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVh bAorCQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZh bCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQorCQkJCW92ZXJsYXAgPSB0cnVl OworCQl9CisJCWVsc2UKKwkJeworCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqc3BsaXRfdXBw ZXI7CisKKwkJCXNwbGl0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXks IC0xLCBzcGxpdF9zcGVjLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJCQljbXB2YWwgPSBw YXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJCQkgIGtleS0+ cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJ CQkJICB1cHBlci0+ZGF0dW1zLCB1cHBlci0+a2luZCwKKwkJCQkJCQkJCQkgIGZhbHNlLCBz cGxpdF91cHBlcik7CisKKwkJCS8qCisJCQkgKiBVcHBlciBib3VuZCBvZiBvZiAic3BlYyIg c2hvdWxkIGJlIGVxdWFsIChvciBsZXNzIHRoYW4gb3IgZXF1YWwKKwkJCSAqIGluIGNhc2Ug ZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgor CQkJICovCisJCQlpZiAoKCFkZWZhdWx0UGFydCAmJiBjbXB2YWwpIHx8IChkZWZhdWx0UGFy dCAmJiBjbXB2YWwgPiAwKSkKKwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJfQorCisJCWlmIChv dmVybGFwKQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKKworCQkJZGF0 dW0gPSBsaXN0X250aChmaXJzdCA/IHNwZWMtPmxvd2VyZGF0dW1zIDogc3BlYy0+dXBwZXJk YXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBlcnJt c2coIiVzIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgJXMgJXMgYm91bmQgb2Ygc3Bs aXQgcGFydGl0aW9uIiwKKwkJCQkJCQlmaXJzdCA/ICJsb3dlciIgOiAidXBwZXIiLAorCQkJ CQkJCXJlbG5hbWUsCisJCQkJCQkJZGVmYXVsdFBhcnQgPyAoZmlyc3QgPyAibGVzcyB0aGFu IiA6ICJncmVhdGVyIHRoYW4iKSA6ICJub3QgZXF1YWxzIHRvIiwKKwkJCQkJCQlmaXJzdCA/ ICJsb3dlciIgOiAidXBwZXIiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGRhdHVtLT5sb2NhdGlvbikpKTsKKwkJfQorCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRp dGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJ U1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFy dGl0aW9uIGlzIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisgKiAod2l0aCBP aWQgc3BsaXRQYXJ0T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUK KyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQli b3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0 T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJz ZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRp YyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9u IHBhcmVudCwgY2hhciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVj ICpzcGVjLAorCQkJCQkJCQkJICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICBQYXJz ZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFy dGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9u R2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8g Ym91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQl3aXRoID0gLTE7CisJ Ym9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsK KwlMaXN0Q2VsbCAgICpjZWxsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElU SU9OX1NUUkFURUdZX0xJU1QpOworCUFzc2VydChzcGVjLT5zdHJhdGVneSA9PSBQQVJUSVRJ T05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KGJvdW5kaW5mbyAmJiBib3VuZGluZm8tPnN0 cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCS8qCisJICogU2VhcmNo IGVhY2ggdmFsdWUgb2YgbmV3IHBhcnRpdGlvbiAic3BlYyIgaW4gZXhpc3RpbmcgcGFydGl0 aW9ucy4gQWxsCisJICogb2YgdGhlbSBzaG91bGQgYmUgaW4gc3BsaXQgcGFydGl0aW9uICh3 aXRoIE9pZCBzcGxpdFBhcnRPaWQpLgorCSAqLworCWZvcmVhY2goY2VsbCwgc3BlYy0+bGlz dGRhdHVtcykKKwl7CisJCUNvbnN0CSAgICp2YWwgPSBsZmlyc3Rfbm9kZShDb25zdCwgY2Vs bCk7CisKKwkJb3ZlcmxhcF9sb2NhdGlvbiA9IHZhbC0+bG9jYXRpb247CisJCWlmICghdmFs LT5jb25zdGlzbnVsbCkKKwkJeworCQkJaW50CQkJb2Zmc2V0OworCQkJYm9vbAkJZXF1YWw7 CisKKwkJCW9mZnNldCA9IHBhcnRpdGlvbl9saXN0X2JzZWFyY2goJmtleS0+cGFydHN1cGZ1 bmNbMF0sCisJCQkJCQkJCQkJCWtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJYm91 bmRpbmZvLAorCQkJCQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCSZlcXVh bCk7CisJCQlpZiAob2Zmc2V0ID49IDAgJiYgZXF1YWwpCisJCQl7CisJCQkJd2l0aCA9IGJv dW5kaW5mby0+aW5kZXhlc1tvZmZzZXRdOworCQkJCWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRo XSAhPSBzcGxpdFBhcnRPaWQpCisJCQkJeworCQkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQkJ YnJlYWs7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJ IGVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBi ZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCQkJcmVsbmFt ZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlv bikpKTsKKwkJfQorCQllbHNlIGlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhi b3VuZGluZm8pKQorCQl7CisJCQl3aXRoID0gYm91bmRpbmZvLT5udWxsX2luZGV4OworCQkJ aWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCXsKKwkJCQlv dmVybGFwID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQllbHNlCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2 ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAor CQkJCQkJCXJlbG5hbWUpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3Zl cmxhcF9sb2NhdGlvbikpKTsKKwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3 aXRoID49IDApOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbiBc IiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9u IFwiJXNcIiIsCisJCQkJCQlyZWxuYW1lLCBnZXRfcmVsX25hbWUocGFydGRlc2MtPm9pZHNb d2l0aF0pKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2Nh dGlvbikpKTsKKwl9Cit9CisKKy8qCisgKiBmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25z X2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoK KyAqIEZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpbiBjYXNlIGFueSBvZiBuZXcgcGFydGl0aW9u cyBjb250YWlucyB2YWx1ZSAidmFsdWUiLgorICoKKyAqIHBhcnRzdXBmdW5jOgkJaW5mb3Jt YXRpb24gYWJvdXQgY29tcGFyaXNvbiBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHBh cnRpdGlvbiBrZXkKKyAqIHBhcnRjb2xsYXRpb246CXBhcnRpdGlvbmluZyBjb2xsYXRpb24K KyAqIHBhcnRzOgkJCXBvaW50ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNj cmlwdGlvbnMKKyAqIG5wYXJ0czoJCQludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHZh bHVlOgkJCXRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBsb29raW5nIGZvcgorICogaXNudWxsOgkJ CXRydWUgaWYgdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yIGlzIE5VTEwKKyAq Lworc3RhdGljIGJvb2wKK2ZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdChGbWdy SW5mbyAqcGFydHN1cGZ1bmMsCisJCQkJCQkJCSAgT2lkICpwYXJ0Y29sbGF0aW9uLAorCQkJ CQkJCQkgIFNpbmdsZVBhcnRpdGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBh cnRzLAorCQkJCQkJCQkgIERhdHVtIHZhbHVlLAorCQkJCQkJCQkgIGJvb2wgaXNudWxsKQor eworCUxpc3RDZWxsICAgKnZhbHB0cjsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8 IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNb aV07CisKKwkJZm9yZWFjaCh2YWxwdHIsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsK KwkJCUNvbnN0CSAgICp2YWwgPSBsZmlyc3Rfbm9kZShDb25zdCwgdmFscHRyKTsKKworCQkJ aWYgKGlzbnVsbCAmJiB2YWwtPmNvbnN0aXNudWxsKQorCQkJCXJldHVybiB0cnVlOworCisJ CQlpZiAoIWlzbnVsbCAmJiAhdmFsLT5jb25zdGlzbnVsbCkKKwkJCXsKKwkJCQlpZiAoRGF0 dW1HZXRJbnQzMihGdW5jdGlvbkNhbGwyQ29sbCgmcGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJ CQkJCQkJcGFydGNvbGxhdGlvblswXSwKKwkJCQkJCQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUs CisJCQkJCQkJCQkJCQkJdmFsdWUpKSA9PSAwKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0K KwkJfQorCX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBjaGVja19wYXJlbnRfdmFs dWVzX2luX25ld19wYXJ0aXRpb25zCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBh cnRpdGlvbmluZykKKyAqCisgKiBDaGVja3MgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBh cnRpdGlvbiAod2l0aCBPaWQgcGFydE9pZCkgY29udGFpbnMgaW4gbmV3CisgKiBwYXJ0aXRp b25zLgorICoKKyAqIHBhcmVudDoJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnRPaWQ6CXNw bGl0IHBhcnRpdGlvbiBPaWQKKyAqIHBhcnRzOglwb2ludGVyIHRvIGFycmF5IHdpdGggbmV3 IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6CW51bWJlciBvZiBuZXcgcGFy dGl0aW9ucworICogcHN0YXRlOglwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBk ZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcmVu dF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJ ICBPaWQgcGFydE9pZCwKKwkJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRz LAorCQkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3Rh dGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9u RGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0g cGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0gdHJ1ZTsK Kwlib29sCQlzZWFyY2hOdWxsID0gZmFsc2U7CisJRGF0dW0JCWRhdHVtID0gUG9pbnRlckdl dERhdHVtKE5VTEwpOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBTcGVjaWFsIHByb2Nlc3NpbmcgZm9yIE5VTEwg dmFsdWUuIFNlYXJjaCBOVUxMLXZhbHVlIGlmIGl0IGNvbnRhaW5zCisJICogc3BsaXQgcGFy dGl0aW9uIChwYXJ0T2lkKS4KKwkgKi8KKwlpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNf bnVsbHMoYm91bmRpbmZvKSAmJgorCQlwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPm51bGxf aW5kZXhdID09IHBhcnRPaWQpCisJeworCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRp dGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJICAga2V5LT5w YXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgdHJ1ZSkpCisJCXsKKwkJCWZv dW5kID0gZmFsc2U7CisJCQlzZWFyY2hOdWxsID0gdHJ1ZTsKKwkJfQorCX0KKworCS8qCisJ ICogU2VhcmNoIGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHdpdGggcGFydE9pZCBp biBQYXJ0aXRpb25EZXNjIG9mCisJICogcGFydGl0aW9uZGUgdGFibGUuCisJICovCisJZm9y IChpID0gMDsgaSA8IGJvdW5kaW5mby0+bmRhdHVtczsgaSsrKQorCXsKKwkJaWYgKHBhcnRk ZXNjLT5vaWRzW2JvdW5kaW5mby0+aW5kZXhlc1tpXV0gPT0gcGFydE9pZCkKKwkJeworCQkJ LyogV2UgZm91bmQgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gY29udGFpbnMuICovCisJ CQlkYXR1bSA9IGJvdW5kaW5mby0+ZGF0dW1zW2ldWzBdOworCQkJaWYgKCFmaW5kX3ZhbHVl X2luX25ld19wYXJ0aXRpb25zX2xpc3QoJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJ CQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCBmYWxz ZSkpCisJCQl7CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQor CX0KKworCWlmICghZm91bmQpCisJeworCQlDb25zdAkgICAqbm90Rm91bmRWYWw7CisKKwkJ aWYgKCFzZWFyY2hOdWxsKQorCQkJLyogTWFrZSBDb25zdCBmb3IgZ2V0IHN0cmluZyByZXBy ZXNlbnRhdGlvbiBvZiBub3QgZm91bmQgdmFsdWUuICovCisJCQlub3RGb3VuZFZhbCA9IG1h a2VDb25zdChrZXktPnBhcnR0eXBpZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cG1vZFsw XSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cGNvbGxbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0 eXBsZW5bMF0sCisJCQkJCQkJCQlkYXR1bSwKKwkJCQkJCQkJCWZhbHNlLAkvKiBpc251bGwg Ki8KKwkJCQkJCQkJCWtleS0+cGFydHR5cGJ5dmFsWzBdKTsKKworCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJIGVycm1zZygibmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgJXMgYnV0IHNwbGl0 IHBhcnRpdGlvbiBoYXMiLAorCQkJCQkJc2VhcmNoTnVsbCA/ICJOVUxMIiA6IGdldF9saXN0 X3BhcnR2YWx1ZV9zdHJpbmcobm90Rm91bmRWYWwpKSkpOworCX0KK30KKworLyoKKyAqIGNo ZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0CisgKgorICogQ2hlY2tzIG5ldyBwYXJ0aXRpb25z IGZvciBTUExJVCBQQVJUSVRJT05TIGNvbW1hbmQ6CisgKiAxLiBERUZBVUxUIHBhcnRpdGlv biBzaG91bGQgYmUgb25lLgorICogMi4gTmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhhdmUgZGlm ZmVyZW50IG5hbWVzCisgKiAgICAod2l0aCBleGlzdGluZyBwYXJ0aXRpb25zIHRvbykuCisg KiAzLiBCb3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGgg bmV3IGFuZCBleGlzdGluZworICogICAgcGFydGl0aW9ucy4KKyAqIDQuIEluIGNhc2Ugc3Bs aXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uLCBvbmUgb2YgbmV3IHBhcnRpdGlv bnMKKyAqICAgIHNob3VsZCBiZSBERUZBVUxULgorICogNS4gSW4gY2FzZSBuZXcgcGFydGl0 aW9ucyBvciBleGlzdGluZyBwYXJ0aXRpb25zIGNvbnRhaW5zIERFRkFVTFQKKyAqICAgIHBh cnRpdGlvbiwgbmV3IHBhcnRpdGlvbnMgY2FuIGhhdmUgYW55IGJvdW5kcyBpbnNpZGUgc3Bs aXQKKyAqICAgIHBhcnRpdGlvbiBib3VuZCAoY2FuIGJlIHNwYWNlcyBiZXR3ZWVuIHBhcnRp dGlvbnMgYm91bmRzKS4KKyAqIDYuIEluIGNhc2UgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBu b3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiwgREVGQVVMVAorICogICAgcGFydGl0aW9uIGNh biBiZSBkZWZpbmVkIGFzIG9uZSBvZiBuZXcgcGFydGl0aW9uLgorICogNy4gSW4gY2FzZSBu ZXcgcGFydGl0aW9ucyBub3QgY29udGFpbnMgREVGQVVMVCBwYXJ0aXRpb24gYW5kCisgKiAg ICBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9uIHRo ZSBmb2xsb3dpbmcKKyAqICAgIHNob3VsZCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBw YXJ0aXRpb25zIHNob3VsZCBiZSBlcXVhbAorICogICAgdG8gYm91bmQgb2Ygc3BsaXQgcGFy dGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogc3BsaXRQ YXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBzcGxpdFBhcnROYW1lOglzcGxpdCBw YXJ0aXRpb24gbmFtZQorICogbGlzdDoJCQlsaXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBw c3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVy cm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJl bGF0aW9uIHBhcmVudCwKKwkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkgICBS YW5nZVZhciAqc3BsaXRQYXJ0TmFtZSwKKwkJCQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJ CQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXk7CisJY2hh cgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJYm9vbAkJaXNTcGxpdFBh cnREZWZhdWx0OworCWJvb2wJCWV4aXN0c0RlZmF1bHRQYXJ0OworCUxpc3RDZWxsICAgKmxp c3RwdHI7CisJaW50CQkJZGVmYXVsdF9pbmRleCA9IC0xOworCWludAkJCWksCisJCQkJajsK KwlTaW5nbGVQYXJ0aXRpb25TcGVjICoqbmV3X3BhcnRzOworCVNpbmdsZVBhcnRpdGlvblNw ZWMgKnNwc1ByZXYgPSBOVUxMOworCWludAkJCW5wYXJ0cyA9IDA7CisKKwlrZXkgPSBSZWxh dGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlv bl9zdHJhdGVneShrZXkpOworCisJc3dpdGNoIChzdHJhdGVneSkKKwl7CisJCWNhc2UgUEFS VElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF OgorCQkJeworCQkJCS8qCisJCQkJICogTWFrZSBhcnJheSBuZXdfcGFydHMgd2l0aCBuZXcg cGFydGl0aW9ucyBleGNlcHQgREVGQVVMVAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8K KwkJCQluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKikKKwkJCQkJcGFsbG9j MChsaXN0X2xlbmd0aChwYXJ0bGlzdCkgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9uU3BlYyAq KSk7CisJCQkJaSA9IDA7CisJCQkJZm9yZWFjaChsaXN0cHRyLCBwYXJ0bGlzdCkKKwkJCQl7 CisJCQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9CisJCQkJCQkoU2luZ2xlUGFydGl0 aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlz X2RlZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlmIChkZWZhdWx0X2luZGV4ID49IDApCisJCQkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCQkgZXJybXNnKCJERUZBVUxUIHBhcnRpdGlv biBzaG91bGQgYmUgb25lIikpLAorCQkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgc3BzLT5uYW1lLT5sb2NhdGlvbikpOworCQkJCQkJZGVmYXVsdF9pbmRleCA9IGk7CisJ CQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQluZXdfcGFydHNbbnBhcnRzKytdID0g c3BzOworCQkJCQl9CisJCQkJCWkrKzsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQlj YXNlIFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNn KCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgc3BsaXQi KSkpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5 KTsKKwkJCWJyZWFrOworCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRF R1lfUkFOR0UpCisJeworCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOwor CQlTaW5nbGVQYXJ0aXRpb25TcGVjICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkgKiBG b3Igc2ltcGxpZnkgY2hlY2sgZm9yIHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBuZWVkIHRv IHNvcnQgYWxsCisJCSAqIHBhcnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZW0g Ym91bmRzICh3ZSBjb21wYXJlIHVwcGVyCisJCSAqIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJ bG93ZXJfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5w YXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUg YXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBp KyspCisJCXsKKwkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91 bmQoa2V5LCBpLAorCQkJCQkJCQkJCQkJCQluZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRh dHVtcywgdHJ1ZSk7CisJCX0KKworCQkvKiBTb3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4g Ki8KKwkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9u UmFuZ2VCb3VuZCAqKSwKKwkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9p ZCAqKSBrZXkpOworCisJCS8qIFJlb3JkZXIgYXJyYXkgb2YgcGFydGl0aW9ucy4gKi8KKwkJ dG1wX25ld19wYXJ0cyA9IG5ld19wYXJ0czsKKwkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRp dGlvblNwZWMgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihTaW5nbGVQYXJ0aXRp b25TcGVjICopKTsKKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQkJbmV3X3Bh cnRzW2ldID0gdG1wX25ld19wYXJ0c1tsb3dlcl9ib3VuZHNbaV0tPmluZGV4XTsKKworCQlw ZnJlZSh0bXBfbmV3X3BhcnRzKTsKKwkJcGZyZWUobG93ZXJfYm91bmRzKTsKKwl9CisKKwlk ZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0 aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCS8qIGlzU3BsaXRQYXJ0 RGVmYXVsdCBmbGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8g Ki8KKwlpc1NwbGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0 T2lkKTsKKworCWlmIChpc1NwbGl0UGFydERlZmF1bHQgJiYgZGVmYXVsdF9pbmRleCA8IDAp CisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiYW55IHBhcnRpdGlvbiBpbiB0aGUg bGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZB VUxUIikpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsICgoU2luZ2xlUGFydGl0 aW9uU3BlYyAqKSBsaW5pdGlhbChwYXJ0bGlzdCkpLT5uYW1lLT5sb2NhdGlvbikpOworCX0K KwllbHNlIGlmICghaXNTcGxpdFBhcnREZWZhdWx0ICYmIChkZWZhdWx0X2luZGV4ID49IDAp ICYmIE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzRGVmID0KKwkJCShTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxpc3RfbnRoKHBh cnRsaXN0LCBkZWZhdWx0X2luZGV4KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygi bmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0 aW9uIGFscmVhZHkgZXhpc3RzIikpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IHNwc0RlZi0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJbmRpY2F0b3IgdGhhdCBw YXJ0aXRpb25lZCB0YWJsZSBoYXMgKG9yIHdpbGwgaGF2ZSkgREVGQVVMVCBwYXJ0aXRpb24g Ki8KKwlleGlzdHNEZWZhdWx0UGFydCA9IE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpIHx8 IChkZWZhdWx0X2luZGV4ID49IDApOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsr KQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gbmV3X3BhcnRzW2ldOworCisJ CWlmIChpc1NwbGl0UGFydERlZmF1bHQpCisJCXsKKwkJCS8qCisJCQkgKiBJbiBjYXNlIHNw bGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiB3ZSBjYW4gdXNlIGFueQorCQkJ ICogZnJlZSByYW5nZXMgLSBhcyB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhcnRpdGlvbi4KKwkJ CSAqLworCQkJY2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChzcHMtPm5hbWUtPnJlbG5hbWUs IHBhcmVudCwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCSAgcHN0YXRlKTsKKwkJfQorCQllbHNl CisJCXsKKwkJCS8qCisJCQkgKiBDaGVja3MgdGhhdCBib3VuZCBvZiBjdXJyZW50IHBhcnRp dGlvbiBpcyBpbnNpZGUgYm91bmQgb2Ygc3BsaXQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIHJh bmdlIHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgdXBwZXIgYm91bmQgb2YKKwkJCSAqIHBy ZXZpb3VzIHBhcnRpdGlvbiBpcyBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBjdXJyZW50CisJ CQkgKiBwYXJ0aXRpb24uIEZvciBsaXN0IHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgc3Bs aXQgcGFydGl0aW9uCisJCQkgKiBjb250YWlucyBhbGwgdmFsdWVzIG9mIGN1cnJlbnQgcGFy dGl0aW9uLgorCQkJICovCisJCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZ X1JBTkdFKQorCQkJeworCQkJCWJvb2wJCWZpcnN0ID0gKGkgPT0gMCk7CisJCQkJYm9vbAkJ bGFzdCA9IChpID09IChucGFydHMgLSAxKSk7CisKKwkJCQljaGVja19wYXJ0aXRpb25fYm91 bmRzX2Zvcl9zcGxpdF9yYW5nZShwYXJlbnQsIHNwcy0+bmFtZS0+cmVsbmFtZSwgc3BzLT5i b3VuZCwKKwkJCQkJCQkJCQkJCQkgICBzcGxpdFBhcnRPaWQsIHNwbGl0UGFydE5hbWUsCisJ CQkJCQkJCQkJCQkJICAgZmlyc3QsIGxhc3QsCisJCQkJCQkJCQkJCQkJICAgZXhpc3RzRGVm YXVsdFBhcnQsIHBzdGF0ZSk7CisJCQl9CisJCQllbHNlCisJCQkJY2hlY2tfcGFydGl0aW9u X2JvdW5kc19mb3Jfc3BsaXRfbGlzdChwYXJlbnQsIHNwcy0+bmFtZS0+cmVsbmFtZSwKKwkJ CQkJCQkJCQkJCQkgIHNwcy0+Ym91bmQsIHNwbGl0UGFydE9pZCwgcHN0YXRlKTsKKwkJfQor CisJCS8qIFJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAuICov CisJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UgJiYgc3BzUHJl dikKKwkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShwYXJlbnQsIHNwc1By ZXYtPm5hbWUsIHNwc1ByZXYtPmJvdW5kLAorCQkJCQkJCQkJCQkgIHNwcy0+bmFtZSwgc3Bz LT5ib3VuZCwgZXhpc3RzRGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisKKwkJc3BzUHJldiA9IHNw czsKKworCQkvKiBDaGVjazogbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50 IG5hbWVzLiAqLworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsgaisrKQorCQl7CisJ CQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMyID0gbmV3X3BhcnRzW2pdOworCisJCQlpZiAo ZXF1YWwoc3BzLT5uYW1lLCBzcHMyLT5uYW1lKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJIGVycm1zZygi bmFtZSBcIiVzXCIgYWxyZWFkeSB1c2VkIiwgc3BzMi0+bmFtZS0+cmVsbmFtZSkpLAorCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzMi0+bmFtZS0+bG9jYXRpb24pKTsK KwkJfQorCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCkK Kwl7CisJCS8qIFZhbHVlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAu ICovCisJCWNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdChwYXJlbnQsIG5ld19w YXJ0cywgbnBhcnRzLAorCQkJCQkJCQkJCSAgcHN0YXRlKTsKKworCQkvKgorCQkgKiBOZWVk IHRvIGNoZWNrIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gY29udGFpbnMg aW4gbmV3CisJCSAqIHBhcnRpdGlvbnMuIFNraXAgdGhpcyBjaGVjayBpZiBERUZBVUxUIHBh cnRpdGlvbiBleGlzdHMuCisJCSAqLworCQlpZiAoIWV4aXN0c0RlZmF1bHRQYXJ0KQorCQkJ Y2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhwYXJlbnQsIHNwbGl0UGFy dE9pZCwKKwkJCQkJCQkJCQkJCSAgbmV3X3BhcnRzLCBucGFydHMsIHBzdGF0ZSk7CisJfQor CisJcGZyZWUobmV3X3BhcnRzKTsKK30KKwogLyoKICAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25f Ym91bmRfZm9yX21lcmdlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4 IGM5ZTNhYzg4Y2IuLjQxMTg0MTA0N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKQEAgLTEzMjQxLDMgKzEzMjQxLDIxIEBAIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5n KExpc3QgKmJvdW5kX2RhdHVtcykKIAogCXJldHVybiBidWYtPmRhdGE7CiB9CisKKy8qCisg KiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nCisgKgkJQSBDIHN0cmluZyByZXByZXNlbnRh dGlvbiBvZiBvbmUgbGlzdCBwYXJ0aXRpb24gdmFsdWUKKyAqLworY2hhciAqCitnZXRfbGlz dF9wYXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwpCit7CisJZGVwYXJzZV9jb250ZXh0IGNv bnRleHQ7CisJU3RyaW5nSW5mbwlidWYgPSBtYWtlU3RyaW5nSW5mbygpOworCisJbWVtc2V0 KCZjb250ZXh0LCAwLCBzaXplb2YoZGVwYXJzZV9jb250ZXh0KSk7CisJY29udGV4dC5idWYg PSBidWY7CisKKwlnZXRfY29uc3RfZXhwcih2YWwsICZjb250ZXh0LCAtMSk7CisKKwlyZXR1 cm4gYnVmLT5kYXRhOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDZlOGEyYjU5 ZTguLjAxZmExYTZjMmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTI0MTEsNiAr MjQxMSw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFjaFBhcnRp dGlvbiwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJ CS8qIERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwg LyogREVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX1NwbGl0UGFydGl0aW9uLAkJ CS8qIFNQTElUIFBBUlRJVElPTiAqLwogCUFUX01lcmdlUGFydGl0aW9ucywJCQkvKiBNRVJH RSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFERCBJREVOVElUWSAq LwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29sdW1uIG9wdGlvbnMg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBhNDgzNGViOWI3Li45ZTRiZTUzZDkzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCkBAIC00MTksNiArNDE5LDcgQEAgUEdfS0VZV09SRCgic21hbGxp bnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgic291cmNlIiwgU09VUkNFLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJzcGxpdCIsIFNQTElULCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzcWwiLCBTUUxfUCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhYmxlIiwgU1RBQkxFLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFuZGFsb25l IiwgU1RBTkRBTE9ORV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2lu Y2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCAwMzI5ZDdiZDg0Li45ZDJh MjY3MDVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0 Myw2ICsxNDMsMTEgQEAgZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2VfZGF0dW1fYnNlYXJj aChGbWdySW5mbyAqcGFydHN1cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRpdGlvbl9oYXNoX2Jz ZWFyY2goUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJCQkJCQkJICAgaW50IG1v ZHVsdXMsIGludCByZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBjaGVja19wYXJ0aXRpb25z X2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0 T2lkLAorCQkJCQkJCQkJICAgUmFuZ2VWYXIgKnNwbGl0UGFydE5hbWUsCisJCQkJCQkJCQkg ICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBl eHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlv biBwYXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCiAJCQkJCQkJCQkJCQlM aXN0ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGls cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggMTYxZmI1ZWYwMi4u NmQ4NjA4MDYyMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTQ5LDQgKzQ5LDYgQEAg ZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2Rh dHVtcyk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmco T2lkIHN0YXRleHRpZCk7CiAKK2V4dGVybiBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3Ry aW5nKENvbnN0ICp2YWwpOworCiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQu b3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWQ5ZThiMDkyNQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24t c3BsaXQub3V0CkBAIC0wLDAgKzEsMTkwIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBz ZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmIgczJpIHMx YyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUg dHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJ T04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQ QVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7Citz dGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy aTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0 ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJz CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BM SVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRf MTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04g dHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJy OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+Citz dGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCist LSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQor MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFz cGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3Bs dDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8K KwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgx NSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJ WkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBj b21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00g dHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1 fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMx YnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNw bHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRP CisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAo MTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzog Q09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsK K3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0K KyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1 CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJi cnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg UkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElU IFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEw XzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRw YXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjog QkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNF UlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0r LS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1 fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFz cGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0 IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRw YXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElU SU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBz MmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+Citz dGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCist LSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQor MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMx c3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BM SVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRf MTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04g dHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjog QkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBj b21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00g dHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1 fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6 IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJ CQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgx NSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUp IFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJP TSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQor MTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAg czFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0 OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTwor CQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1 KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTEla QUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNv bXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0 cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8 dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xh dGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggOGJjYWE4YTYyNS4uMDM0MmViMzllNCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMDQsNiArMTA0 LDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtl eS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtNAogdGVzdDogcGFydGl0 aW9uLW1lcmdlCit0ZXN0OiBwYXJ0aXRpb24tc3BsaXQKIHRlc3Q6IHBscGdzcWwtdG9hc3QK IHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0 aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNw bGl0LnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNw ZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDg3MjM5YTRhMQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24t c3BsaXQuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0IFNQTElUIG9wZXJh dGlvbiBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3Nl dHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUg dHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUg VEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0 cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBh cnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBE RUZBVUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAg SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0 cGFydDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJy cgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFi cwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFzcGx0 CXsgQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8K KwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgx NSkgVE8gKDIwKSk7IH0KK3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKworc2Vzc2lvbiBzMgor c3RlcCBzMmIJeyBCRUdJTjsgfQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczJicwl7IEJFR0lOIElTT0xBVElPTiBMRVZF TCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNF TEVDVCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMxIHN0YXJ0cyBTUExJVCBQQVJUSVRJT04g dGhlbiBzMiB0cnlpbmcgdG8gaW5zZXJ0IHJvdyBhbmQKKyMgd2FpdHMgdW50aWwgczEgZmlu aXNoZWQgU1BMSVQgb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYiBz MmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBz MmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisK K3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRh dGlvbiBzMWJyciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBz MWJyciBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczFicyBz MXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJi cnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJzIHMyaSBz MWMgczJjIHMycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVw YXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggNjk5MjA3NTdiMi4uMjY1ZWYyYTU0NyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jCkBAIC0zMDAsNiArMzAwLDkgQEAgZ2V0X2FsdGVydGFibGVfc3Vi Y21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25G aW5hbGl6ZToKIAkJCQlzdHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpF IjsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJc3RydHlw ZSA9ICJTUExJVCBQQVJUSVRJT04iOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9NZXJnZVBh cnRpdGlvbnM6CiAJCQkJc3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3Nw bGl0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91 dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wYTQwZjIwNTU0Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25f c3BsaXQub3V0CkBAIC0wLDAgKzEsMTQxNyBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAor LS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29t bWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBC WSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIGludCwgc2FsZXNt YW5fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRl KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJl bGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CistLSBFUlJP UjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAy MiIgYWxyZWFkeSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0 aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor RVJST1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0 aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4g KCcyMDIyLTA1LTAxJywgJzIwMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lm aWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3Ig cGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6 ICBTcGVjaWZpZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFu IG9yIGVxdWFsIHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxp c3Qgb2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbnMgYXQgbGVhc3QgdHdvIGl0 ZW1zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CitFUlJPUjogIGxp c3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVt cworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIi IGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19mZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2Ygc3BsaXQg cGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNf ZmViX21hcl9hcHIyMDIyIiBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRp dGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3Qg Y3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIG5hbWUgInNh bGVzX2ZlYl9tYXJfYXByMjAyMiIgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy4uLgor ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIy IiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9S OiAgbmFtZSAic2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4u LgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfZmViX21hcl9h cHIyMDIyIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAy MiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7 CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMg Z3JlYXRlciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAu Li4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA2LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFscyB0byB1cHBlciBib3VuZCBvZiBw cmV2aW91cyBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBjb25mbGlj dHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2ZlYjIw MjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBw YXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVz X290aGVyczsKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv bgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gbG93ZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsKKy0tCistLSBBZGQg cm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9h cHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0 LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAy Mi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw MS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwg ICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxs ZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwg UGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAg ICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Zl YjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAg ICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19tYXIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxh dG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIK KygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIEFk ZCBzcGxpdCBwYXJ0aXRpb24gdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxl CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVz bWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmVi X21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAn MjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAg ICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEs ICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jhbmdl OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAg ICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg fCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkg fCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAg IDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAy MjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2ZlYjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8 ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19tYXIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAg ICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBN dWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYt MjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0K Ky0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAq IEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAg c2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQo c2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6 dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykp IFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxl cyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgy MDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAz LCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0 ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUs IE1BWFZBTFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAy MDIxLCAxMiwgNyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywg MjAyMSwgMTIsIDgpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycs IDIwMjIsIDEsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScs IDIwMjIsIDIsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMics IDIwMjIsIDEsIDIpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycs IDIwMjIsIDIsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScs IDIwMjIsIDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMics IDIwMjIsIDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycs IDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzbWFuX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAg NyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIu MDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAg ICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIw MjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19t b250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAg MjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwg ICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxl c19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5h Z2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAy Mi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAg ICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8 IFNhbGVzIGRlcGFydG1lbnQKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3Ro ZXI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwg MjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRl cGFydG1lbnQKKygzIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4y MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBU TyAoMjAyMiwgMywgMSkpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1l LCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2Vy MScsIDIwMjIsIDEsIDEwKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdl cjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Cisgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVz X2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAg ICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAg IHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwg MjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwg ICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAz IHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1 IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxl c19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5h Z2VyMSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAy MS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAy MSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFy dG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxl c21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAy IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAor KDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzbWFuX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzbWFuX25hbWUgfCBzYWxl c195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNf ZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdl cjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIu MDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAg ICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCistLUVS Uk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VM RUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVz X2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgKiBGUk9NIHNh bGVzX2phbl9mZWIyMDIyOworICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUg c2FsZXNfZGF0ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0 aW9uOyB1c2luZyBhIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVy IHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQs IHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElO REVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIw MjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAg IDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgn LCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA4IHwgRXJp Y3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgOSB8 IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIy CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAg ICAgICBpbmRleG5hbWUgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwg c2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRF WCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVt YS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00g c2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0x MC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwg MDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAy MiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAg ICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxl c19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4g JzIwMjItMDEtMDEnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5k ZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKK1NFTEVDVCAqIEZST00g cGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAyMicgYW5kIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CisgICAgICAgc2NoZW1hbmFtZSAg ICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwg dGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIyX3NhbGVz X2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIyX3Nh bGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBV U0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19p bmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFt ZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAgICAg IHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJs ZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIHwgc2FsZXNfbWFyMjAyMiB8IHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0 ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX21hcjIwMjJfc2FsZXNf ZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19tYXIyMDIyIFVTSU5H IGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4 ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0g J3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAg IHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3Bh Y2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgfCBzYWxlc19hcHIyMDIyIHwgc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lk eCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfYXByMjAyMl9zYWxlc19kYXRl X2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2FwcjIwMjIgVVNJTkcgYnRy ZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxl bmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg fCBzYWxlc19vdGhlcnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIHwgICAgICAg ICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIE9OIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKQorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQor LS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZl cmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9p ZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK Ky0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChsb3dlciBi b3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJv ciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJz YWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9S OiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdp dGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgor TElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIx MTIzMCkgVE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVz X2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHBy ZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8g KDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Zl YjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlv biAic2FsZXNfZXJyb3IiCitMSU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGlu dGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRo IHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIw MSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVT IEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0xJTkUgMzogICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChleGFjdCB0 aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAx MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNv bmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNf ZGVjMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgYW55IHBhcnRpdGlvbiBp biB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBp cyBERUZBVUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFu MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw MjIwMzAxKSk7CitFUlJPUjogIGFueSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJl IERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorTElORSAyOiAg IChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBU TyAoMjAuLi4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIG5vIGVycm9yOiBib3VuZHMg b2Ygc2FsZXNfbm9lcnJvciBiZXR3ZWVuIHNhbGVzX2RlYzIwMjIgYW5kIHNhbGVzX2ZlYjIw MjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gbm8g ZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGVxdWFscyB0byBsb3dlciBhbmQgdXBw ZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjIgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8g KDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJP TSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7Cist LQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZ IENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFS Q0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3Qn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc21hbl9pZCBJTlQgUkVGRVJF TkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAo c2FsZXNfYW1vdW50ID4gMSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQp LCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0g J3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91 bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5n ZV9zYWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5faWQp IFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVz bWFuX2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworLS0gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBv biBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKKyAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVz X2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVz X3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc21h bl9pZCkgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpIHwgc2FsZXNfcmFuZ2Vf c2FsZXNtYW5faWRfZmtleSAgIHwgezF9CisoMiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBX SEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKKyAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNh bGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNh bGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxl c21hbl9pZCkgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpIHwgc2FsZXNfcmFu Z2Vfc2FsZXNtYW5faWRfZmtleSAgIHwgezF9CisoMiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKKyAg ICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAo KHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayB8IHsyfQorIEZPUkVJR04gS0VZIChz YWxlc21hbl9pZCkgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpIHwgc2FsZXNf cmFuZ2Vfc2FsZXNtYW5faWRfZmtleSAgIHwgezF9CisoMiByb3dzKQorCistLSBFUlJPUjog IG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBj b25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9jaGVjayIKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgbmV3 IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0 cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0RFVEFJTDogIEZhaWxp bmcgcm93IGNvbnRhaW5zICgxLCAwLCAwMy0xMS0yMDIyKS4KKy0tIEVSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9ma2V5Igor REVUQUlMOiAgS2V5IChzYWxlc21hbl9pZCk9KC0xKSBpcyBub3QgcHJlc2VudCBpbiB0YWJs ZSAic2FsZXNtYW5zIi4KKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEsIDEwLCAnMjAyMi0wMy0xMScpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURF OworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBw YXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBleGlzdHMgRk9SRUlHTiBL RVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxl c21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJM RSBzYWxlcyAoc2FsZXNtYW5faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFu X2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKK0NSRUFURSBUQUJM RSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF80MCBQQVJUSVRJT04g T0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5U TyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNt YW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMg KDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1Nt aXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsK K0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDEwMCwgJzIwMjItMDMtMDEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDExMCwgJzIwMjItMDMtMDInKTsKK0lOU0VS VCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDE1MCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzIFZBTFVFUyAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKTsKK0lOU0VSVCBJTlRP IHNhbGVzIFZBTFVFUyAoMTksIDIwMCwgJzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJTlRPIHNh bGVzIFZBTFVFUyAoMjAsIDUwLCAgJzIwMjItMDMtMTInKTsKK0lOU0VSVCBJTlRPIHNhbGVz IFZBTFVFUyAoMjAsIDE3MCwgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZB TFVFUyAoMzAsIDMwLCAgJzIwMjItMDMtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5z MDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzbWFuczEwXzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTAgfCBNYXkK KyAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAg ICAgICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJ VCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFu czEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2Fs ZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElP TiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJv dAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczEwXzIwOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAxOSB8IEl2YW5vdgorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc21hbnMyMF8zMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDIwIHwg U21pcm5vZmYKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMzMF80MDsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgIDMwIHwgRm9yZAorKDEgcm93KQorCistLSBFUlJPUjogIGluc2Vy dCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJzYWxlc19zYWxlc21hbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFM VUVTICg0MCwgNTAsICAnMjAyMi0wMy0wNCcpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRl IG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2Fs ZXNfc2FsZXNtYW5faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNtYW5faWQpPSg0MCkg aXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzbWFucyIuCistLSBvaworSU5TRVJUIElO VE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworRFJPUCBUQUJMRSBz YWxlcyBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2Vy cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkg S0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBz YWxlc21hbnMxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJv dCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmln Z2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JF R0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hl biA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZF TDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNh bGVzbWFuc19hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNF UlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVD VVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOwor Q1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAg IEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFJPVworICAg IEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5z Jyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6 CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAg dHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZU RVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBh Y3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEg dHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5z MTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21h bnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9X CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElUSU9OIHNhbGVzbWFuczEwXzQw IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKSk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUg KHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwg J1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rp b24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdn ZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBs ZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6 CitJTlNFUlQgSU5UTyBzYWxlc21hbnMzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9U SUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVu ID0gQUZURVIsIGxldmVsID0gUk9XCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBzYWxlc21hbnMxMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAg ICAgMTkgfCBJdmFub3YKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMjBf MzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMzBfNDA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAzMCB8IEZvcmQK KygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJ T04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0gVGVzdDogc3BsaXQgcGFy dGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNv bHVtbiBpcyBpZGVudGl0eS1jb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJl IGlkZW50aXR5LWNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2Fs ZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVks IHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNt YW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczFfMiBQQVJUSVRJT04gT0Ygc2FsZXNt YW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRp b24gd2l0aCBpZGVudGl0eS1jb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMl81KHNh bGVzbWFuX2lkIElOVCBOT1QgTlVMTCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitB TFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMyXzUgRk9S IFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgKHNhbGVz bWFuX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIChz YWxlc21hbl9uYW1lKSBWQUxVRVMgKCdJdmFub3YnKTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRp ZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+ IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0 bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAg ICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisK K1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0 cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczFfMic6 OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2Vu ZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K KyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAg ICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRp dHktY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQg RlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2Fs ZXNtYW5zMl81Jzo6cmVnY2xhc3M6Om9pZDsKKyAgICBhdHRuYW1lICAgIHwgYXR0aWRlbnRp dHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLQorIHNhbGVzbWFuX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzbWFu X25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNt YW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21hbnMyXzUgSU5UTworICAoUEFSVElUSU9OIHNh bGVzbWFuczJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBz YWxlc21hbnMzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04g c2FsZXNtYW5zNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKK0lOU0VSVCBJTlRP IHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgnTWF5Jyk7CitJTlNFUlQgSU5U TyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ0ZvcmQnKTsKK1NFTEVDVCAq IEZST00gc2FsZXNtYW5zMV8yOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygx IHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMyXzM7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMiB8IEl2YW5vdgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczNfNDsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAzIHwgTWF5CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNtYW5zNF81OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBGb3JkCisoMSByb3cpCisK K1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0 cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJl Z2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJh dGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBz YWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8 IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAK KyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIE5ldyBw YXJ0aXRpb25zIGhhdmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBhdHRuYW1lLCBhdHRp ZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+ IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczJfMyc6OnJlZ2NsYXNzOjpvaWQ7CisgICAg YXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAg ICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3Mp CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdf YXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczNf NCc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0 Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwg ICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0 eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzbWFuczRfNSc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFt ZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAg ICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK0RS T1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0 aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhz YWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVz bWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29s dW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF80MChkMSBWQVJDSEFSKDMwKSwgc2Fs ZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgn ZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92Jyk7CitJTlNFUlQgSU5U TyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93 KCksICdTbWlybm9mZicpOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfNDAgRFJPUCBDT0xV TU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF80MCBEUk9QIENPTFVNTiBkMjsKK0FM VEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIgVEFCTEUg c2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICdQ b2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxF IHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFS VElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisg ICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBU TyAoNDApKTsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEw XzIwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAxMCB8IE1h eQorKDIgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMyMF8zMDsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgIDIwIHwgU21pcm5vZmYKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxl c21hbnMzMF80MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDMwIHwgRm9yZAorKDEgcm93KQorCitE Uk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1w YXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElO VCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIw MjIgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04g c2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwg ICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90 JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIz Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAg ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxk ZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwg R2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg fCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93 cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNf YXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykg VE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkg ICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwg SGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAg ICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIK KyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMt MDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg fCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgIDE0IHwgU21pdGgg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVl diAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0 IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xMF8y MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjJfMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAg ICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBz cGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5U LAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5n JywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7Cist LSBFUlJPUjogIHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCBwYXJ0aXRp b24gInNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElP TiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJ TiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2sn LCAnSGVsc2lua2knKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRp b24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQp IHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0xJTkUgMzogLi4uIEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnSGVsc2lua2knLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFw IHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVq aW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2Vu dHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdMaXNib24nLCAnS3lp dicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3Zlcmxh cCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0xJTkUgMjog ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhh dmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitB TFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBo YXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQor TElORSAyOiAuLi5zX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnLCBOVUxMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0 OworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0 aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIG5vdCBoYXMgTlVMTCB2YWx1ZSB0aGF0 IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAgICogbmV3IHBhcnRpdGlvbnMgbm90IGhhcyBh IHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbGlzdAorKHNhbGVzbWFuX2lkIElOVCwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2Fs ZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVy bGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKy0tIEVSUk9S OiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0 aW9uIGhhcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNf YWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBG T1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQ QVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxp bicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSBO VUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gaGFzCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25z IG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNf Y2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsIE5VTEwpKTsKK0VS Uk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBw YXJ0aXRpb24gaGFzCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkg TElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIFNFUklBTCwKKyBzYWxlc21hbl9u YW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVz X3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzbWFuX25hbWVfaWR4IE9O IHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzbWFuX25hbWUpOworQ1JFQVRFIElOREVY IHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUg KHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycs ICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0 b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1RydW1wJywg ICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUw MCwgJzIwMjItMDMtMDMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0Zv cmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAg ICAgIDc1MCwgJzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BvaXJvdCcsICAgJ0Jlcmxpbics ICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3Qg KHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUp IFZBTFVFUyAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMt MDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0 YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0xpJywgICAgICAgJ1Zs YWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIw MjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0hhbGRlcics ICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1 MCwgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1Nt aXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAg ICAgIDE1MCwgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05l dyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVF UyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdDsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICB8 IEJlamluZyAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAg ICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAgICAxMTUwIHwg MDMtMDktMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IFdhcnNhdyAgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICB8IEJlcmxpbiAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgor ICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IEt5aXYgICAgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IFdh cnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMt MDUtMjAyMgorICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IE9zbG8gICAgICAgICAg IHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAgICAg ICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAg ODAwIHwgMDMtMDItMjAyMgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8IE5ldyBZ b3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDct MjAyMgorICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwg ICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAg ICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorKDE0IHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfd2VzdDsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8IE5ldyBZ b3JrICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorICAgICAgICAgICA1IHwgRGVl diAgICAgICAgICB8IExpc2JvbiAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDctMjAyMgor ICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICB8IE1hZHJpZCAgICAgIHwgICAgICAgICAg NjUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAgICB8IExpc2Jv biAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorKDQgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19lYXN0OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgIHwgQmVqaW5nICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgIHwg VmxhZGl2b3N0b2sgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCBTdC4gUGV0 ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgNyB8IE1h eSAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIw MjIKKyAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAg ICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAg fCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyg0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbDsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICB8IEJlcmxpbiAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgor ICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IEt5aXYgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDQgcm93cykKKworLS0gVXNl IGluZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzIGFmdGVyIHNwbGl0IHBhcnRpdGlvbgorU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NF TEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcn OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0y MDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAg ICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IFdh cnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgIDEzIHwg R2FuZGkgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAy MgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzbWFu X25hbWUgPSAnSXZhbm92JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxl c19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAg ICAgNzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9 IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7 CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gdG8g cGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20g b3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0Zv cmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDEg cm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDkt MjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAy LTA3LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVj YWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA4 IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAg ICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgor ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisoOCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRp b25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBv ZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAn MjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAg ICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEs ICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19tYXIy MDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w My0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKK1NF TEVDVCAqIEZST00gc2FsZXNfamFuMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMSBy b3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRlOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0y MDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDIt MDctMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNh ZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyXzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVyczsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorICAgICAgICAgICAxIHwgTWF5ICAg ICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgMyB8IEZv cmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisg ICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAy MgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5 LTIwMjIKKyg4IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVz dCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9u ICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0 LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92Jywg ICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUs ICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAg J0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0w OScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsK K1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwg TWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAx MCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAg ICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIK KyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0y MDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8g ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAxNCB8IFNt aXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8 IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAg MTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygz IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgor ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIw MjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2Fs ZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf b3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAg ICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAg ICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoNCByb3dzKQorCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAwYmQxNDQ0NzY3Li42 NzVjNTY3NjE3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExOSw3 ICsxMTksNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRv bWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVz dCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBj YW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9u X21lcmdlIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hf cGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxl c29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlCit0ZXN0 OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRp dGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdn cmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1l bW9pemUgc3RhdHMgcHJlZGljYXRlCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNy ZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0 aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44ODY0ZjZkZGFhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0 LnNxbApAQCAtMCwwICsxLDgzMyBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVz dHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAor LS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworU0VUIHNlYXJj aF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworCistLQorLS0gQlkg UkFOR0UgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIGludCwgc2FsZXNt YW5fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRl KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAg cmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc194eHggSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKKworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlz dHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBpbnZh bGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIy LTA1LTAxJywgJzIwMjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3Bl Y2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CisKKy0tRVJST1I6ICBsaXN0IG9mIHNwbGl0IHBhcnRpdGlvbnMg c2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0 IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJP UjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgYWxyZWFkeSB1c2VkCistLSAoV2Ug Y2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRp dGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5h bWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFy X2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxl c19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOwor CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIg aXMgbm90IGVxdWFscyB0byB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24KK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gVGVzdHMgZm9yIHNwYWNlcyBi ZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVG QVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFscyB0byBsb3dlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworCistLQorLS0g QWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUw MCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMs ICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcy MDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9p cm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywg ICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19y YW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0 aW9uIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5Jywg ICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3 NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywg ICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVD VCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsK K1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlIENBU0NBREU7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUg cGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVt biB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJ TlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVE IEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4n IHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2Fs ZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFS Q0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMg RlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxl c19qYW5fZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjIsIDEsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl ciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEp IFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNf ZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCk7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSk7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCk7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMik7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSk7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyk7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCk7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAq IEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOwor CitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmVi MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKKwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7 CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVj MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisKKy0tRVJST1I6ICBy ZWxhdGlvbiAic2FsZXNfamFuX2ZlYjIwMjIiIGRvZXMgbm90IGV4aXN0CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2phbl9mZWIyMDIyOworCitEUk9QIFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FE RTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uOyB1c2luZyBhIGlu ZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVyIHNwbGl0CistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jhbmdl X3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAg JzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdE ZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjIt MDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4 MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEy LCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworU0VMRUNUICog RlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIFVz ZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBP TjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19m ZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9OOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdz YWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1h JzsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNf YXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CitT RUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVy cycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMg Zm9yIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIHNhbGVzX2Vycm9yIGlu dGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGgg dXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJz ZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVw cGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRP ICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3Rz IHdpdGggc2FsZXNfZGVjMjAyMiAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBi b3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdp dGggc2FsZXNfZGVjMjAyMiAoZXhhY3QgdGhlIHNhbWUgYm91bmRzKQorLS0gRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1 cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEp IFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBFUlJPUjogIGFueSBwYXJ0aXRp b24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRp b24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRP ICgyMDIyMDMwMSkpOworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3Ig YmV0d2VlbiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIy MDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIw MjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIG5vIGVycm9yOiBib3Vu ZHMgb2Ygc2FsZXNfbm9lcnJvciBlcXVhbHMgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBv ZiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSks CisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEwMTAx KSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkgQ09OU1RS QUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5z KHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMw KSk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKAorc2FsZXNtYW5faWQgSU5UIFJFRkVSRU5DRVMg c2FsZXNtYW5zKHNhbGVzbWFuX2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNhbGVz X2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCks IGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAn c2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKKworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworCistLSBXZSBzaG91bGQgc2VlIHRoZSBzYW1lIENPTlNU UkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBwYXJ0aXRpb24KK1NFTEVDVCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIwMjInOjpyZWdjbGFzczo6b2lk OworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJl Z2NsYXNzOjpvaWQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFt ZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19h cHIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKKworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxh dGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNf cmFuZ2Vfc2FsZXNtYW5faWRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEsIDAsICcyMDIyLTAzLTExJyk7CistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjItMDMtMTEnKTsKKy0tIG9rCitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScpOworCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURF OworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRhYmxl IGluIGNhc2UgZXhpc3RzIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFi bGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZ IEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzbWFuX2lkIElOVCBSRUZF UkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04g T0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJM RSBzYWxlc21hbnMxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICAn UG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOwor SU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTksICdJdmFub3YnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzbWFucyBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK0lOU0VSVCBJTlRPIHNh bGVzbWFucyBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxV RVMgKDEsICAxMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMg KDEsICAxMTAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEw LCAxNTAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEwLCA5 MCwgICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDE5LCAyMDAs ICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDIwLCA1MCwgICcy MDIyLTAzLTEyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDIwLCAxNzAsICcyMDIy LTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCAzMCwgICcyMDIyLTAz LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMDFfMTA7CitTRUxFQ1QgKiBGUk9N IHNhbGVzbWFuczEwXzQwOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElU SU9OIHNhbGVzbWFuczEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIw XzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNt YW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNtYW5zMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczEwXzIwOworU0VM RUNUICogRlJPTSBzYWxlc21hbnMyMF8zMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMzBf NDA7CisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzbWFuX2lkX2ZrZXki CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7Cist LSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcp OworCitEUk9QIFRBQkxFIHNhbGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzbWFucyBD QVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVk IHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVz bWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc21h bnMwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNt YW5zIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVz bWFucyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFH RSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlcigl KSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBd LCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7Cisk Qk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfc3RhdGVt ZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBG T1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNf YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2Fs ZXNtYW5zCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJf aW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91 bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5z IFZBTFVFUyAoMTAsICdNYXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChy b3cpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicp OworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElUSU9OIHNhbGVzbWFuczEw XzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMg RlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZB TFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUg aGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMg KDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cp OgorSU5TRVJUIElOVE8gc2FsZXNtYW5zMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKwor U0VMRUNUICogRlJPTSBzYWxlc21hbnMwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5z MTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczIwXzMwOworU0VMRUNUICogRlJPTSBz YWxlc21hbnMzMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKK0RST1Ag RlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0tCistLSBUZXN0OiBz cGxpdCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBzcGxpdCBwYXJ0 aXRpb24gY29sdW1uIGlzIGlkZW50aXR5LWNvbHVtbiwgY29sdW1ucyBvZiBuZXcgcGFydGl0 aW9ucyBhcmUgaWRlbnRpdHktY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz bWFucyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklN QVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc21hbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxXzIgUEFSVElUSU9O IE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBu ZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHktY29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVz bWFuczJfNShzYWxlc21hbl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNt YW5zMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUpOworCitJTlNFUlQgSU5UTyBzYWxl c21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOworSU5TRVJUIElOVE8g c2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdJdmFub3YnKTsKKworU0VMRUNU IGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUg V0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5zJzo6cmVnY2xhc3M6 Om9pZDsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00g cGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFu czFfMic6OnJlZ2NsYXNzOjpvaWQ7CistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5 LWNvbHVtbjoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZS T00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVz bWFuczJfNSc6OnJlZ2NsYXNzOjpvaWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJ VCBQQVJUSVRJT04gc2FsZXNtYW5zMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMy XzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNtYW5z M180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzbWFu czRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJTlRPIHNhbGVz bWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxl c21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ0ZvcmQnKTsKKworU0VMRUNUICogRlJP TSBzYWxlc21hbnMxXzI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczJfMzsKK1NFTEVDVCAq IEZST00gc2FsZXNtYW5zM180OworU0VMRUNUICogRlJPTSBzYWxlc21hbnM0XzU7CisKK1NF TEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJlZ2Ns YXNzOjpvaWQ7CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c21hbnMxXzInOjpyZWdjbGFzczo6b2lkOworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBpZGVu dGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0 ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAn c2FsZXNtYW5zMl8zJzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVu dGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAg QU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczNfNCc6OnJlZ2NsYXNzOjpvaWQ7CitTRUxFQ1Qg YXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnM0XzUnOjpyZWdjbGFz czo6b2lkOworCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworCistLQorLS0gVGVz dDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworCitD UkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRo IHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzQwKGQx IFZBUkNIQVIoMzApLCBzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMg REFURSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVz bWFuczEwXzQwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2 YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgnZHVtbXkgdmFs dWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUgc2Fs ZXNtYW5zMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF80 MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09M VU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxl c21hbnMxMF80MCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5U TyBzYWxlc21hbnMgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21h bnMgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAo MzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04g c2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAg Rk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMz MF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKworc2VsZWN0ICogZnJvbSBz YWxlc21hbnMwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMTBfMjA7CitzZWxlY3Qg KiBmcm9tIHNhbGVzbWFuczIwXzMwOworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMzMF80MDsK KworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0 IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFu X2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJT04g T0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNf ZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAn MjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0w NC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1 LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIw MjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0 bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMjsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJ T04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8x MCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy Ml8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAx JykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxl c19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEwOworU0VMRUNU ICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyXzIwXzMwOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElT VCBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9y IEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhz YWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19z dGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFU RSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBz YWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xv JywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn TGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0Rl bGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworLS0gRVJST1I6ICBwYXJ0 aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgcGFydGl0aW9uICJzYWxlc19ub3Jk IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFM VUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJyks CisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVz X2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAg IFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0xpc2JvbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24g InNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0 aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJU SVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1Zs YWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCitEUk9QIFRBQkxFIHNhbGVzX2xp c3Q7CisKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBh cnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBub3QgaGFzIE5VTEwgdmFsdWUg dGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIG5vdCBo YXMgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFS KDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAor IHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisK K0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcn LCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKwor LS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxp dCBwYXJ0aXRpb24gaGFzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElP TiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJ TiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcn LCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90 IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24gaGFzCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworCitEUk9Q IFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmlu ZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19s aXN0Cisoc2FsZXNtYW5faWQgU0VSSUFMLAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCks Cisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxl c19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVB VEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc21hbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVT SU5HIGJ0cmVlIChzYWxlc21hbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3Nh bGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxV RVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWpp bmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsK KworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnVHJ1bXAnLCAgICAnQmVqaW5n JywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0w My0wMycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAn U3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAn MjAyMi0wMy0wNCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldics ICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAx MDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgn TWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2sn LCAgICAxMTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScp OworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFsZGVyJywgICAnSGVsc2lu a2knLCAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0w My0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAn S3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAn MjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUGxhdG8n LCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19j ZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdDsKK1NFTEVDVCAqIEZST00gc2FsZXNfd2VzdDsK K1NFTEVDVCAqIEZST00gc2FsZXNfZWFzdDsKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsK K1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3Ig dGVzdCBpbmRleGVzIGFmdGVyIHNwbGl0IHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNj YW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBz YWxlc19jZW50cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAq IEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc21hbl9uYW1lID0gJ0l2YW5vdic7CisKK1NF VCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKwor RFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3Bs aXQgREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVu IGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQ QVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz bWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZB VUxULAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIw MjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRlOworU0VM RUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2FwcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQg bm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2Vl biBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAs ICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAx ODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5 LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAn MjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0w NS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUICogRlJPTSBzYWxl c19qYW4yMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJP TSBzYWxlc19hcHIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5v bi1ERUZBVUxUIHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMK Ky0tIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAg J1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0w OCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVD VCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGVhZGIzM2U2MTcuLmM1OTUxZmMzMjIgMTAw NjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNjkyLDYgKzI2OTIsNyBAQCBTcGVj aWFsSm9pbkluZm8KIFNwaW5EZWxheVN0YXR1cwogU3BsaXRJbnRlcnZhbAogU3BsaXRMUgor U3BsaXRQYXJ0aXRpb25Db250ZXh0CiBTcGxpdFBhZ2VMYXlvdXQKIFNwbGl0UG9pbnQKIFNw bGl0VGV4dE91dHB1dERhdGEKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------zvgZ3AVND0XMAdKBco4vZL9d Content-Type: text/plain; charset=UTF-8; name="v31-0003-Additional-patch-for-ALTER-TABLE-.-MERGE-PARTITI.patch" Content-Disposition: attachment; filename*0="v31-0003-Additional-patch-for-ALTER-TABLE-.-MERGE-PARTITI.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyMzNjMGM0MTRiYzFkOTUyZDk4YjJlZWY0ODEwZjg4MWU2YWZiMjRkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IEZyaSwgNSBBcHIgMjAyNCAxNDoxNToyOSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjMxIDMvM10gQWRkaXRpb25hbCBwYXRjaCBmb3IgQUxURVIgVEFCTEUgLi4uIE1F UkdFIFBBUlRJVElPTlMKIC4uLiBjb21tYW5kCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jICAgICAgICAgICAgICB8IDY3ICsrKysrKysrKy0tLS0tLS0tLS0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCB8ICAyICstCiAy IGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNTgyODkwYTMwMi4uZTc5YWVlZjkyMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIxNDMxLDcgKzIxNDMxLDYgQEAg QVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCUxpc3RDZWxsICAgKmxpc3RwdHI7CiAJTGlzdAkgICAq bWVyZ2luZ1BhcnRpdGlvbnNMaXN0ID0gTklMOwogCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOwot CWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOwogCVJhbmdlVmFyICAgKm1lcmdlUGFy dE5hbWUgPSBjbWQtPm5hbWU7CiAJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOwogCkBAIC0y MTQ2MSwxMiArMjE0NjAsMTcgQEAgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVl dWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkgKiBmdW5jdGlv biB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgpLgogCQkgKi8KIAkJaWYgKGVxdWFs KG5hbWUsIGNtZC0+bmFtZSkpCisJCXsKIAkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBo YXZlIHRoZSBzYW1lIG5hbWUgYXMgbWVyZ2VkIHBhcnRpdGlvbi4gKi8KIAkJCWlzU2FtZU5h bWUgPSB0cnVlOwotCi0JCS8qIFN0b3JlIGEgbmV4dCBtZXJnaW5nIHBhcnRpdGlvbiBpbnRv IHRoZSBsaXN0LiAqLwotCQltZXJnaW5nUGFydGl0aW9uc0xpc3QgPSBsYXBwZW5kKG1lcmdp bmdQYXJ0aXRpb25zTGlzdCwKLQkJCQkJCQkJCQltZXJnaW5nUGFydGl0aW9uKTsKKwkJCW5l d1BhcnRSZWwgPSBtZXJnaW5nUGFydGl0aW9uOworCQl9CisJCWVsc2UKKwkJeworCQkJLyog U3RvcmUgYSBuZXh0IG1lcmdpbmcgcGFydGl0aW9uIGludG8gdGhlIGxpc3QuICovCisJCQlt ZXJnaW5nUGFydGl0aW9uc0xpc3QgPSBsYXBwZW5kKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCwK KwkJCQkJCQkJCQkJbWVyZ2luZ1BhcnRpdGlvbik7CisJCX0KIAl9CiAKIAkvKiBEZXRhY2gg YWxsIG1lcmdlZCBwYXJ0aXRpb25zLiAqLwpAQCAtMjE0ODIsMjYgKzIxNDg2LDM0IEBAIEFU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKIAkJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCBtZXJn aW5nUGFydGl0aW9uLCBmYWxzZSwgZGVmYXVsdFBhcnRPaWQpOwogCX0KIAotCS8qIENyZWF0 ZSB0YWJsZSBmb3IgbmV3IHBhcnRpdGlvbiwgdXNlIHBhcnRpdGlvbmVkIHRhYmxlIGFzIG1v ZGVsLiAqLwogCWlmIChpc1NhbWVOYW1lKQogCXsKLQkJLyogQ3JlYXRlIHBhcnRpdGlvbiB0 YWJsZSB3aXRoIGdlbmVyYXRlZCB0ZW1wYXJhcnkgbmFtZS4gKi8KLQkJc3ByaW50Zih0bXBS ZWxOYW1lLCAibWVyZ2UtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVBy b2NQaWQpOwotCQltZXJnZVBhcnROYW1lID0gbWFrZVJhbmdlVmFyKGdldF9uYW1lc3BhY2Vf bmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSwKLQkJCQkJCQkJCSB0bXBSZWxOYW1l LCAtMSk7CisJCS8qIERldGFjaCBwYXJ0aXRpb24gdGhhdCB3ZSByZS11c2UgZm9yIG1lcmdl ZCBwYXJ0aXRpb24uICovCisKKwkJLyogUmVtb3ZlIHRoZSBwZ19pbmhlcml0cyByb3cgZmly c3QuICovCisJCVJlbW92ZUluaGVyaXRhbmNlKG5ld1BhcnRSZWwsIHJlbCwgZmFsc2UpOwor CQkvKiBEbyB0aGUgZmluYWwgcGFydCBvZiBkZXRhY2hpbmcuICovCisJCURldGFjaFBhcnRp dGlvbkZpbmFsaXplKHJlbCwgbmV3UGFydFJlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsK KworCQkvKiBNYWtlIHRoZXNlIHVwZGF0ZXMgdmlzaWJsZSAqLworCQlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOwogCX0KLQljcmVhdGVQYXJ0aXRpb25UYWJsZShtZXJnZVBhcnROYW1l LAotCQkJCQkJIG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXRO YW1lc3BhY2UocmVsKSksCi0JCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCksIC0xKSwKLQkJCQkJCSBjb250ZXh0KTsKKwllbHNlCisJeworCQkvKiBDcmVhdGUgdGFi bGUgZm9yIG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2RlbC4g Ki8KKwkJY3JlYXRlUGFydGl0aW9uVGFibGUobWVyZ2VQYXJ0TmFtZSwKKwkJCQkJCQkgbWFr ZVJhbmdlVmFyKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwp KSwKKwkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIC0xKSwKKwkJ CQkJCQkgY29udGV4dCk7CiAKLQkvKgotCSAqIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gYW5k IGFjcXVpcmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICBUaGlzIHdpbGwKLQkgKiBzdG9wIGFs bCB0aGUgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlLiAgVGhpcyBtaWdodCBz ZWVtCi0JICogZXhjZXNzaXZlLCBidXQgdGhpcyBpcyB0aGUgd2F5IHdlIG1ha2Ugc3VyZSBu b2JvZHkgaXMgcGxhbm5pbmcgcXVlcmllcwotCSAqIGludm9sdmluZyBtZXJnaW5nIHBhcnRp dGlvbnMuCi0JICovCi0JbmV3UGFydFJlbCA9IHRhYmxlX29wZW5ydihtZXJnZVBhcnROYW1l LCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJLyoKKwkJICogT3BlbiB0aGUgbmV3IHBhcnRp dGlvbiBhbmQgYWNxdWlyZSBleGNsdXNpdmUgbG9jayBvbiBpdC4gIFRoaXMgd2lsbAorCQkg KiBzdG9wIGFsbCB0aGUgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlLiAgVGhp cyBtaWdodCBzZWVtCisJCSAqIGV4Y2Vzc2l2ZSwgYnV0IHRoaXMgaXMgdGhlIHdheSB3ZSBt YWtlIHN1cmUgbm9ib2R5IGlzIHBsYW5uaW5nCisJCSAqIHF1ZXJpZXMgaW52b2x2aW5nIG1l cmdpbmcgcGFydGl0aW9ucy4KKwkJICovCisJCW5ld1BhcnRSZWwgPSB0YWJsZV9vcGVucnYo bWVyZ2VQYXJ0TmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJfQogCiAJLyogQ29weSBk YXRhIGZyb20gbWVyZ2VkIHBhcnRpdGlvbnMgdG8gbmV3IHBhcnRpdGlvbi4gKi8KIAltb3Zl TWVyZ2VkVGFibGVzUm93cyhyZWwsIG1lcmdpbmdQYXJ0aXRpb25zTGlzdCwgbmV3UGFydFJl bCk7CkBAIC0yMTUyOSwxOSArMjE1NDEsNiBAQCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCXBl cmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKIAl9CiAJbGlzdF9m cmVlKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCk7Ci0KLQkvKiBSZW5hbWUgbmV3IHBhcnRpdGlv biBpZiBpdCBpcyBuZWVkZWQuICovCi0JaWYgKGlzU2FtZU5hbWUpCi0JewotCQkvKgotCQkg KiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcgcGFy dGl0aW9uIHR1cGxlCi0JCSAqIHZpc2libGUgZm9yIHJlbmFtZS4KLQkJICovCi0JCUNvbW1h bmRDb3VudGVySW5jcmVtZW50KCk7Ci0JCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCi0JCVJl bmFtZVJlbGF0aW9uSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKSwKLQkJ CQkJCQkgICBjbWQtPm5hbWUtPnJlbG5hbWUsIGZhbHNlLCBmYWxzZSk7Ci0JfQogCS8qIEtl ZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwogCXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWws IE5vTG9jayk7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9tZXJnZS5vdXQKaW5kZXggMmJhMGVjNDdkOS4uZjhkZmJmY2Y0MSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMjExLDEz ICsyMTEsMTMgQEAgQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfb3QKIHNlbGVjdCAqIGZyb20g c2FsZXNfb3RoZXJzOwogIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCiAtLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiAgICAgICAgICAgIDEgfCBNYXkgICAgICAg ICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgogICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKICAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCiAgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgogICAgICAgICAg ICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCi0g ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgogKDcgcm93cykKIAogLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKLS0g CjIuNDAuMS53aW5kb3dzLjEKCg== --------------zvgZ3AVND0XMAdKBco4vZL9d--