From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: =?utf-8?b?VG9tw6HFoSBNcsOheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+?= To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: - add support for Intel AES-NI Date: Tue, 09 Jun 2026 12:42:03 GMT Message-ID: <178100892320.1.15210935346111379515.rpms-openssl-7f0747ce733f@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 7f0747ce733f379ffe4a1d12f6f7f0f69ad23b24 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDdmMDc0N2NlNzMzZjM3OWZmZTRhMWQxMmY2Zjdm MGY2OWFkMjNiMjQKQXV0aG9yIDogVG9tw6HFoSBNcsOheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5v cmc+CkRhdGUgICA6IDIwMTAtMDEtMTNUMDk6MjE6MDIrMDA6MDAKU3RhdHMgIDogKzIzOTUvLTIg aW4gMiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv b3BlbnNzbC9jLzdmMDc0N2NlNzMzZjM3OWZmZTRhMWQxMmY2ZjdmMGY2OWFkMjNiMjQ/YnJhbmNo PXJlYmFzZV80MGJldGEKCkxvZzoKLSBhZGQgc3VwcG9ydCBmb3IgSW50ZWwgQUVTLU5JCgotLS0K ZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTQtYWVzbmkucGF0Y2ggYi9vcGVuc3NsLTEu MC4wLWJldGE0LWFlc25pLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmY1NzkxOGIKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4wLWJldGE0LWFlc25pLnBh dGNoCkBAIC0wLDAgKzEsMjM4OCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9Db25m aWd1cmUuYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRhNC9Db25maWd1cmUKKy0tLSBvcGVuc3NsLTEu MC4wLWJldGE0L0NvbmZpZ3VyZS5hZXNuaQkyMDEwLTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCAr MDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvQ29uZmlndXJlCTIwMTAtMDEtMTIgMjI6MTg6 MDYuMDAwMDAwMDAwICswMTAwCitAQCAtMTIzLDExICsxMjMsMTEgQEAgbXkgJHRsaWI9Ii1sbnNs IC1sc29ja2V0IjsKKyBteSAkYml0czE9IlRISVJUWV9UV09fQklUICI7CisgbXkgJGJpdHMyPSJT SVhUWV9GT1VSX0JJVCAiOworIAorLW15ICR4ODZfYXNtPSJ4ODZjcHVpZC5vOmJuLTU4Ni5vIGNv LTU4Ni5vIHg4Ni1tb250Lm86ZGVzLTU4Ni5vIGNyeXB0NTg2Lm86YWVzLTU4Ni5vOmJmLTU4Ni5v Om1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYu bzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYubzp3cF9ibG9jay5vIHdwLW1teC5vOmNtbGwt eDg2Lm8iOworK215ICR4ODZfYXNtPSJ4ODZjcHVpZC5vOmJuLTU4Ni5vIGNvLTU4Ni5vIHg4Ni1t b250Lm86ZGVzLTU4Ni5vIGNyeXB0NTg2Lm86YWVzLTU4Ni5vIGFlc25pLXg4Ni5vOmJmLTU4Ni5v Om1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYu bzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYubzp3cF9ibG9jay5vIHdwLW1teC5vOmNtbGwt eDg2Lm8iOworIAorIG15ICR4ODZfZWxmX2FzbT0iJHg4Nl9hc206ZWxmIjsKKyAKKy1teSAkeDg2 XzY0X2FzbT0ieDg2XzY0Y3B1aWQubzp4ODZfNjQtZ2NjLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4 Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEy LXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxf bWlzYy5vIjsKKytteSAkeDg2XzY0X2FzbT0ieDg2XzY0Y3B1aWQubzp4ODZfNjQtZ2NjLm8geDg2 XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vIGFlc25pLXg4Nl82NC5vOjptZDUteDg2XzY0Lm86c2hh MS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86 Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vIjsKKyBteSAkaWE2NF9hc209 ImlhNjRjcHVpZC5vOmJuLWlhNjQubzo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLWlhNjQubzo6 bWQ1LWlhNjQubzpzaGExLWlhNjQubyBzaGEyNTYtaWE2NC5vIHNoYTUxMi1pYTY0Lm86OnJjNC1p YTY0Lm8gcmM0X3NrZXkubzo6Ojo6dm9pZCI7CisgbXkgJHNwYXJjdjlfYXNtPSJzcGFyY3Y5Y2Fw Lm8gc3BhcmNjcHVpZC5vOmJuLXNwYXJjdjkubyBzcGFyY3Y5LW1vbnQubyBzcGFyY3Y5YS1tb250 Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlwdF9iLm86YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXNw YXJjdjkubzo6OnNoYTEtc3BhcmN2OS5vIHNoYTI1Ni1zcGFyY3Y5Lm8gc2hhNTEyLXNwYXJjdjku bzo6Ojo6Ojp2b2lkIjsKKyBteSAkc3BhcmN2OF9hc209IjpzcGFyY3Y4Lm86ZGVzX2VuYy1zcGFy Yy5vIGZjcnlwdF9iLm86Ojo6Ojo6Ojo6OnZvaWQiOworQEAgLTQ5MSw3ICs0OTEsNyBAQCBteSAl dGFibGU9KAorICMKKyAjIFdpbjY0IHRhcmdldHMsIFdJTjY0SSBkZW5vdGVzIElBLTY0IGFuZCBX SU42NEEgLSBBTUQ2NAorICJWQy1XSU42NEkiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9Q RU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVO SUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0STo6U0lY VFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjppYTY0Y3B1 aWQubzppYTY0Lm86OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86 c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1MTItaWE2NC5vOjo6Ojo6Omlhczp3aW4zMiIs CistIlZDLVdJTjY0QSIsImNsOi1XMyAtR3MwIC1HeSAtbm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1F X1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRExfRU5ESUFOIC1EVU5JQ09ERSAtRF9VTklD T0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFOjo6V0lONjRBOjpTSVhUWV9GT1VSX0JJVCBS QzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFSX0FTX0ZOOng4Nl82NGNwdWlkLm86Ym5fYXNt Lm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQu byBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZf NjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vOmF1dG86d2luMzIiLAorKyJWQy1XSU42NEEi LCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMy X0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VD VVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERF U19JTlQgRVhQT1JUX1ZBUl9BU19GTjp4ODZfNjRjcHVpZC5vOmJuX2FzbS5vIHg4Nl82NC1tb250 Lm86OmFlcy14ODZfNjQubyBhZXNuaS14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0 Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2 XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubzphdXRvOndpbjMyIiwKKyAjIHg4NiBXaW4z MiB0YXJnZXQgZGVmYXVsdHMgdG8gQU5TSSBBUEksIGlmIHlvdSB3YW50IFVOSUNPREUsIGNvbXBs ZW1lbnQKKyAjICdwZXJsIENvbmZpZ3VyZSBWQy1XSU4zMicgd2l0aCAnLURVTklDT0RFIC1EX1VO SUNPREUnCisgIlZDLVdJTjMyIiwiY2w6LVczIC1XWCAtR3MwIC1HRiAtR3kgLW5vbG9nbyAtRE9Q RU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRF9D UlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjMyOjpCTl9MTE9ORyBSQzRfSU5ERVggRVhQT1JU X1ZBUl9BU19GTiAke3g4Nl9nY2Nfb3B0c306JHt4ODZfYXNtfTp3aW4zMm46d2luMzIiLAorQEAg LTE0MTAsNiArMTQxMCw3IEBAIGlmICgkcm1kMTYwX29iaiA9fiAvXC5vJC8pCisgaWYgKCRhZXNf b2JqID1+IC9cLm8kLykKKyAJeworIAkkY2ZsYWdzLj0iIC1EQUVTX0FTTSI7CisrCSRhZXNfb2Jq ID1+IHMvXHMqYWVzbmlcLXg4Nlwuby8vIGlmICgkbm9fc3NlMik7CisgCX0KKyBlbHNlCXsKKyAJ JGFlc19vYmo9JGFlc19lbmM7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9h ZXMvYXNtL2Flc25pLXg4Ni5wbC5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMv YXNtL2Flc25pLXg4Ni5wbAorLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20v YWVzbmkteDg2LnBsLmFlc25pCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCisr Kysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwJMjAxMC0w MS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsNzY1IEBACisrIyEvdXNy L2Jpbi9lbnYgcGVybAorKworKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjIFdyaXR0ZW4gYnkgQW5keSBQb2x5 YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3BlblNTTAorKyMgcHJvamVjdC4g VGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAor KyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4g Rm9yIGZ1cnRoZXIKKysjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJv L2NyeXB0b2dhbXMvLgorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjCisrIyBUaGlzIG1vZHVsZSBpbXBsZW1l bnRzIHN1cHBvcnQgZm9yIEludGVsIEFFUy1OSSBleHRlbnNpb24uIEluCisrIyBPcGVuU1NMIGNv bnRleHQgaXQncyB1c2VkIHdpdGggSW50ZWwgZW5naW5lLCBidXQgY2FuIGFsc28gYmUgdXNlZCBh cworKyMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgY3J5cHRvL2Flcy9hc20vYWVzLTU4Ni5wbCBb c2VlIGJlbG93IGZvcgorKyMgZGV0YWlsc10uCisrCisrJFBSRUZJWD0iYWVzbmkiOwkjIGlmICRQ UkVGSVggaXMgc2V0IHRvICJBRVMiLCB0aGUgc2NyaXB0CisrCQkJIyBnZW5lcmF0ZXMgZHJvcC1p biByZXBsYWNlbWVudCBmb3IKKysJCQkjIGNyeXB0by9hZXMvYXNtL2Flcy01ODYucGw6LSkKKysK KyskMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGlyPSQxOworK3B1c2goQElOQywiJHtk aXJ9IiwiJHtkaXJ9Li4vLi4vcGVybGFzbSIpOworK3JlcXVpcmUgIng4NmFzbS5wbCI7CisrCisr JmFzbV9pbml0KCRBUkdWWzBdLCQwKTsKKysKKyskbW92ZWtleSA9IGV2YWwoJFJSRUZJWCBlcSAi YXNlbmkiID8gIiptb3ZhcHMiIDogIiptb3Z1cHMiKTsKKysKKyskbGVuPSJlYXgiOworKyRyb3Vu ZHM9ImVjeCI7CisrJGtleT0iZWR4IjsKKyskaW5wPSJlc2kiOworKyRvdXQ9ImVkaSI7CisrJHJv dW5kc189ImVieCI7CSMgYmFja3VwIGNvcHkgZm9yICRyb3VuZHMKKyska2V5Xz0iZWJwIjsJIyBi YWNrdXAgY29weSBmb3IgJGtleQorKworKyRpbm91dDA9InhtbTAiOworKyRpbm91dDE9InhtbTEi OworKyRpbm91dDI9InhtbTIiOworKyRybmRrZXkwPSJ4bW0zIjsKKyskcm5ka2V5MT0ieG1tNCI7 CisrJGl2ZWM9InhtbTUiOworKyRpbjA9InhtbTYiOworKyRpbjE9InhtbTciOwkkaW5vdXQzPSJ4 bW03IjsKKysKKysjIElubGluZSB2ZXJzaW9uIG9mIGludGVybmFsIGFlc25pX1tlbnxkZV1jcnlw dDEKKytzdWIgYWVzbmlfaW5saW5lX2dlbmVyYXRlMQorK3sgbXkgJHA9c2hpZnQ7CisrCisrICAg ICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrICAgICYkbW92ZWtleQkJKCRy bmRrZXkxLCZRV1AoMTYsJGtleSkpOworKyAgICAmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsK KysgICAgJnB4b3IJCSgkaW5vdXQwLCRybmRrZXkwKTsKKysgICAgJnNldF9sYWJlbCgiJHtwfTFf bG9vcCIpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSZkZWMJCSgk cm91bmRzKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDAsJGtleSkpOworKwkmbGVhCQko JGtleSwmRFdQKDE2LCRrZXkpKTsKKysgICAgJmpuegkJKCZsYWJlbCgiJHtwfTFfbG9vcCIpKTsK KysgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDAsJHJuZGtleTEpIjsKKyt9CisrCisrc3Vi IGFlc25pX2dlbmVyYXRlMQkjIGZ1bGx5IHVucm9sbGVkIGxvb3AKKyt7IG15ICRwPXNoaWZ0Owor KworKyAgICAmZnVuY3Rpb25fYmVnaW5fQigiX2Flc25pXyR7cH1yeXB0MSIpOworKwkmJG1vdmVr ZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgw eDEwLCRrZXkpKTsKKysJJmNtcAkJKCRyb3VuZHMsMTEpOworKwkmcHhvcgkJKCRpbm91dDAsJHJu ZGtleTApOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHgyMCwka2V5KSk7CisrCSZsZWEJ CSgka2V5LCZEV1AoMHgzMCwka2V5KSk7CisrCSZqYgkJKCZsYWJlbCgiJHtwfTEyOCIpKTsKKysJ JmxlYQkJKCRrZXksJkRXUCgweDIwLCRrZXkpKTsKKysJJmplCQkoJmxhYmVsKCIke3B9MTkyIikp OworKwkmbGVhCQkoJGtleSwmRFdQKDB4MjAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5v dXQwLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgtMHg0MCwka2V5KSk7 CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJiRtb3Zla2V5CSgkcm5k a2V5MCwmUVdQKC0weDMwLCRrZXkpKTsKKysgICAgJnNldF9sYWJlbCgiJHtwfTE5MiIpOworKwll dmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTEs JlFXUCgtMHgyMCwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsK KysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKC0weDEwLCRrZXkpKTsKKysgICAgJnNldF9sYWJl bCgiJHtwfTEyOCIpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYk bW92ZWtleQkoJHJuZGtleTEsJlFXUCgwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0 MCwkcm5ka2V5MCkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHgxMCwka2V5KSk7Cisr CWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5 MSwmUVdQKDB4MjAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7 CisrCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgweDMwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtw fQkoJGlub3V0MCwkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMHg0MCwk a2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJiRtb3Zla2V5 CSgkcm5ka2V5MCwmUVdQKDB4NTAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRy bmRrZXkxKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgweDYwLCRrZXkpKTsKKysJZXZh bCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MCkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZR V1AoMHg3MCwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysg ICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDAsJHJuZGtleTApIjsKKysgICAgJnJldCgpOwor KyAgICAmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV8ke3B9cnlwdDEiKTsKKyt9CisrCisrIyB2b2lk ICRQUkVGSVhfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZ ICprZXkpOworKyMgJmFlc25pX2dlbmVyYXRlMSgiZGVjIik7CisrJmZ1bmN0aW9uX2JlZ2luX0Io IiR7UFJFRklYfV9lbmNyeXB0Iik7CisrCSZtb3YJKCJlYXgiLCZ3cGFyYW0oMCkpOworKwkmbW92 CSgka2V5LCZ3cGFyYW0oMikpOworKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwiZWF4IikpOwor KwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKKysJJm1vdgkoImVheCIsJndwYXJhbSgx KSk7CisrCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNuaV9l bmNyeXB0MSIpOworKwkmbW92dXBzCSgmUVdQKDAsImVheCIpLCRpbm91dDApOworKwkmcmV0CSgp OworKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9X2VuY3J5cHQiKTsKKysKKysjIHZvaWQgJFBS RUZJWF9kZWNyeXB0IChjb25zdCB2b2lkICppbnAsdm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtl eSk7CisrIyAmYWVzbmlfZ2VuZXJhdGUxKCJkZWMiKTsKKysmZnVuY3Rpb25fYmVnaW5fQigiJHtQ UkVGSVh9X2RlY3J5cHQiKTsKKysJJm1vdgkoImVheCIsJndwYXJhbSgwKSk7CisrCSZtb3YJKCRr ZXksJndwYXJhbSgyKSk7CisrCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCJlYXgiKSk7CisrCSZt b3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOworKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDEpKTsK KysJJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5 cHQxIik7CisrCSZtb3Z1cHMJKCZRV1AoMCwiZWF4IiksJGlub3V0MCk7CisrCSZyZXQJKCk7Cisr JmZ1bmN0aW9uX2VuZF9CKCIke1BSRUZJWH1fZGVjcnlwdCIpOworKwwKKysjIF9hZXNuaV9bZW58 ZGVdY3J5cHRbMzRdIGFyZSBwcml2YXRlIGludGVyZmFjZXMsIE4gZGVub3RlcyBpbnRlcmxlYXZl CisrIyBmYWN0b3IuIFdoeSAzeCBzdWJyb3V0aW5lIGlzIHVzZWQgaW4gbG9vcHM/IEV2ZW4gdGhv dWdoIGFlc1tlbmN8ZGVjXQorKyMgbGF0ZW5jeSBpcyA2LCBpdCB0dXJuZWQgb3V0IHRoYXQgaXQg Y2FuIGJlIHNjaGVkdWxlZCBvbmx5IGV2ZXJ5CisrIyAqc2Vjb25kKiBjeWNsZS4gVGh1cyAzeCBp bnRlcmxlYXZlIGlzIHRoZSBvbmUgcHJvdmlkaW5nIG9wdGltYWwKKysjIHV0aWxpemF0aW9uLCBp LmUuIHdoZW4gc3Vicm91dGluZSdzIHRocm91Z2hwdXQgaXMgdmlydHVhbGx5IHNhbWUgYXMKKysj IG9mIG5vbi1pbnRlcmxlYXZlZCBzdWJyb3V0aW5lIFtmb3IgbnVtYmVyIG9mIGlucHV0IGJsb2Nr cyB1cCB0byAzXS4KKysjIFRoaXMgaXMgd2h5IGl0IG1ha2VzIG5vIHNlbnNlIHRvIGltcGxlbWVu dCAyeCBzdWJyb3V0aW5lLiBBcyBzb29uCisrIyBhcy9pZiBJbnRlbCBpbXByb3ZlcyB0aHJvdWdo cHV0IGJ5IG1ha2luZyBpdCBwb3NzaWJsZSB0byBzY2hlZHVsZQorKyMgdGhlIGluc3RydWN0aW9u cyBpbiBxdWVzdGlvbiAqZXZlcnkqIGN5Y2xlcyBJIHdvdWxkIGhhdmUgdG8KKysjIGltcGxlbWVu dCA2eCBpbnRlcmxlYXZlIGFuZCB1c2UgaXQgaW4gbG9vcC4uLgorK3N1YiBhZXNuaV9nZW5lcmF0 ZTMKKyt7IG15ICRwPXNoaWZ0OworKworKyAgICAmZnVuY3Rpb25fYmVnaW5fQigiX2Flc25pXyR7 cH1yeXB0MyIpOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrCSZzaHIJ CSgkcm91bmRzLDEpOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworKwkm bGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKKysJJnB4b3IJCSgkaW5vdXQwLCRybmRrZXkwKTsK KysJJnB4b3IJCSgkaW5vdXQxLCRybmRrZXkwKTsKKysJJnB4b3IJCSgkaW5vdXQyLCRybmRrZXkw KTsKKysJJmptcAkJKCZsYWJlbCgiJHtwfTNfbG9vcCIpKTsKKysgICAgJnNldF9sYWJlbCgiJHtw fTNfbG9vcCIsMTYpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYk bW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0 MSwkcm5ka2V5MSkiOworKwkmZGVjCQkoJHJvdW5kcyk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91 dDIsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKKysJ ZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MCkiOworKwkmbGVhCQkoJGtleSwmRFdQKDMy LCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MCkiOworKwlldmFsIiZh ZXMke3B9CSgkaW5vdXQyLCRybmRrZXkwKSI7CisrCSZqbnoJCSgmbGFiZWwoIiR7cH0zX2xvb3Ai KSk7CisrICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysgICAgJiRtb3Zl a2V5CQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0 MSwkcm5ka2V5MSkiOworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQyLCRybmRrZXkxKSI7Cisr ICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7CisrICAgIGV2YWwiJmFl cyR7cH1sYXN0CSgkaW5vdXQxLCRybmRrZXkwKSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgk aW5vdXQyLCRybmRrZXkwKSI7CisrICAgICZyZXQoKTsKKysgICAgJmZ1bmN0aW9uX2VuZF9CKCJf YWVzbmlfJHtwfXJ5cHQzIik7CisrfQorKworKyMgNHggaW50ZXJsZWF2ZSBpcyBpbXBsZW1lbnRl ZCB0byBpbXByb3ZlIHNtYWxsIGJsb2NrIHBlcmZvcm1hbmNlLAorKyMgbW9zdCBub3RhYmx5IFth bmQgbmF0dXJhbGx5XSA0IGJsb2NrIGJ5IH4zMCUuIE9uZSBjYW4gYXJndWUgdGhhdCBvbmUKKysj IHNob3VsZCBoYXZlIGltcGxlbWVudGVkIDV4IGFzIHdlbGwsIGJ1dCBpbXByb3ZlbWVudCAgd291 bGQgYmUgPDIwJSwKKysjIHNvIGl0J3Mgbm90IHdvcnRoIGl0Li4uCisrc3ViIGFlc25pX2dlbmVy YXRlNAorK3sgbXkgJHA9c2hpZnQ7CisrCisrICAgICZmdW5jdGlvbl9iZWdpbl9CKCJfYWVzbmlf JHtwfXJ5cHQ0Iik7CisrCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKysJJiRt b3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKKysJJnNocgkJKCRyb3VuZHMsMSk7Cisr CSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworKwkmcHhvcgkJKCRpbm91dDAsJHJuZGtleTAp OworKwkmcHhvcgkJKCRpbm91dDEsJHJuZGtleTApOworKwkmcHhvcgkJKCRpbm91dDIsJHJuZGtl eTApOworKwkmcHhvcgkJKCRpbm91dDMsJHJuZGtleTApOworKwkmam1wCQkoJmxhYmVsKCIke3B9 M19sb29wIikpOworKyAgICAmc2V0X2xhYmVsKCIke3B9M19sb29wIiwxNik7CisrCWV2YWwiJmFl cyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAs JGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRybmRrZXkxKSI7CisrCSZkZWMJCSgk cm91bmRzKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MSkiOworKwlldmFsIiZh ZXMke3B9CSgkaW5vdXQzLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgx Niwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJmxlYQkJ KCRrZXksJkRXUCgzMiwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTAp IjsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MCkiOworKwlldmFsIiZhZXMke3B9 CSgkaW5vdXQzLCRybmRrZXkwKSI7CisrCSZqbnoJCSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7Cisr ICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysgICAgJiRtb3Zla2V5CQko JHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5k a2V5MSkiOworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQyLCRybmRrZXkxKSI7CisrICAgIGV2 YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTEpIjsKKysgICAgZXZhbCImYWVzJHtwfWxhc3QJ KCRpbm91dDAsJHJuZGtleTApIjsKKysgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDEsJHJu ZGtleTApIjsKKysgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDIsJHJuZGtleTApIjsKKysg ICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDMsJHJuZGtleTApIjsKKysgICAgJnJldCgpOwor KyAgICAmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV8ke3B9cnlwdDQiKTsKKyt9CisrJmFlc25pX2dl bmVyYXRlMygiZW5jIikgaWYgKCRQUkVGSVggZXEgImFlc25pIik7CisrJmFlc25pX2dlbmVyYXRl MygiZGVjIik7CisrJmFlc25pX2dlbmVyYXRlNCgiZW5jIikgaWYgKCRQUkVGSVggZXEgImFlc25p Iik7CisrJmFlc25pX2dlbmVyYXRlNCgiZGVjIik7CisrCisraWYgKCRQUkVGSVggZXEgImFlc25p IikgeworKyMgdm9pZCBhZXNuaV9lY2JfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW4sIHZvaWQgKm91 dCwKKysjICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19L RVkgKmtleSwKKysjICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbmMpOworKyZmdW5jdGlv bl9iZWdpbigiYWVzbmlfZWNiX2VuY3J5cHQiKTsKKysJJm1vdgkoJGlucCwmd3BhcmFtKDApKTsK KysJJm1vdgkoJG91dCwmd3BhcmFtKDEpKTsKKysJJm1vdgkoJGxlbiwmd3BhcmFtKDIpKTsKKysJ Jm1vdgkoJGtleSwmd3BhcmFtKDMpKTsKKysJJm1vdgkoJHJvdW5kcywmd3BhcmFtKDQpKTsKKysJ JmNtcAkoJGxlbiwxNik7CisrCSZqYgkoJmxhYmVsKCJlY2JfcmV0IikpOworKwkmYW5kCSgkbGVu LC0xNik7CisrCSZ0ZXN0CSgkcm91bmRzLCRyb3VuZHMpCisrCSZtb3YJKCRyb3VuZHMsJkRXUCgy NDAsJGtleSkpOworKwkmbW92CSgka2V5Xywka2V5KTsJCSMgYmFja3VwICRrZXkKKysJJm1vdgko JHJvdW5kc18sJHJvdW5kcyk7CSMgYmFja3VwICRyb3VuZHMKKysJJmp6CSgmbGFiZWwoImVjYl9k ZWNyeXB0IikpOworKworKwkmc3ViCSgkbGVuLDB4NDApOworKwkmamJlCSgmbGFiZWwoImVjYl9l bmNfdGFpbCIpKTsKKysJJmptcAkoJmxhYmVsKCJlY2JfZW5jX2xvb3AzIikpOworKworKyZzZXRf bGFiZWwoImVjYl9lbmNfbG9vcDMiLDE2KTsKKysJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlu cCkpOworKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7CisrCSZtb3Z1cHMJKCRp bm91dDIsJlFXUCgweDIwLCRpbnApKTsKKysJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDMiKTsKKysJ JnN1YgkoJGxlbiwweDMwKTsKKysJJmxlYQkoJGlucCwmRFdQKDB4MzAsJGlucCkpOworKwkmbGVh CSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7CisrCSZtb3Z1cHMJKCZRV1AoLTB4MzAsJG91dCksJGlu b3V0MCk7CisrCSZtb3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKKysJJm1vdnVwcwko JlFXUCgtMHgyMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMg cmVzdG9yZSAkcm91bmRzCisrCSZtb3Z1cHMJKCZRV1AoLTB4MTAsJG91dCksJGlub3V0Mik7Cisr CSZqYQkoJmxhYmVsKCJlY2JfZW5jX2xvb3AzIikpOworKworKyZzZXRfbGFiZWwoImVjYl9lbmNf dGFpbCIpOworKwkmYWRkCSgkbGVuLDB4NDApOworKwkmanoJKCZsYWJlbCgiZWNiX3JldCIpKTsK KysKKysJJmNtcAkoJGxlbiwweDEwKTsKKysJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkp OworKwkmamUJKCZsYWJlbCgiZWNiX2VuY19vbmUiKSk7CisrCSZjbXAJKCRsZW4sMHgyMCk7Cisr CSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKysJJmplCSgmbGFiZWwoImVjYl9l bmNfdHdvIikpOworKwkmY21wCSgkbGVuLDB4MzApOworKwkmbW92dXBzCSgkaW5vdXQyLCZRV1Ao MHgyMCwkaW5wKSk7CisrCSZqZQkoJmxhYmVsKCJlY2JfZW5jX3RocmVlIikpOworKwkmbW92dXBz CSgkaW5vdXQzLCZRV1AoMHgzMCwkaW5wKSk7CisrCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQ0Iik7 CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdnVwcwkoJlFXUCgweDEw LCRvdXQpLCRpbm91dDEpOworKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7Cisr CSZtb3Z1cHMJKCZRV1AoMHgzMCwkb3V0KSwkaW5vdXQzKTsKKysJam1wCSgmbGFiZWwoImVjYl9y ZXQiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2VuY19vbmUiLDE2KTsKKysJJmFlc25pX2lubGlu ZV9nZW5lcmF0ZTEoImVuYyIpOwkjICZjYWxsCSgiX2Flc25pX2VuY3J5cHQxIik7CisrCSZtb3Z1 cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOwor KworKyZzZXRfbGFiZWwoImVjYl9lbmNfdHdvIiwxNik7CisrCSZjYWxsCSgiX2Flc25pX2VuY3J5 cHQzIik7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdnVwcwkoJlFX UCgweDEwLCRvdXQpLCRpbm91dDEpOworKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7CisrCisr JnNldF9sYWJlbCgiZWNiX2VuY190aHJlZSIsMTYpOworKwkmY2FsbAkoIl9hZXNuaV9lbmNyeXB0 MyIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZtb3Z1cHMJKCZRV1Ao MHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIp OworKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2RlY3J5 cHQiLDE2KTsKKysJJnN1YgkoJGxlbiwweDQwKTsKKysJJmpiZQkoJmxhYmVsKCJlY2JfZGVjX3Rh aWwiKSk7CisrCSZqbXAJKCZsYWJlbCgiZWNiX2RlY19sb29wMyIpKTsKKysKKysmc2V0X2xhYmVs KCJlY2JfZGVjX2xvb3AzIiwxNik7CisrCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsK KysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworKwkmbW92dXBzCSgkaW5vdXQy LCZRV1AoMHgyMCwkaW5wKSk7CisrCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisrCSZzdWIJ KCRsZW4sMHgzMCk7CisrCSZsZWEJKCRpbnAsJkRXUCgweDMwLCRpbnApKTsKKysJJmxlYQkoJG91 dCwmRFdQKDB4MzAsJG91dCkpOworKwkmbW92dXBzCSgmUVdQKC0weDMwLCRvdXQpLCRpbm91dDAp OworKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5CisrCSZtb3Z1cHMJKCZRV1Ao LTB4MjAsJG91dCksJGlub3V0MSk7CisrCSZtb3YJKCRyb3VuZHMsJHJvdW5kc18pOwkjIHJlc3Rv cmUgJHJvdW5kcworKwkmbW92dXBzCSgmUVdQKC0weDEwLCRvdXQpLCRpbm91dDIpOworKwkmamEJ KCZsYWJlbCgiZWNiX2RlY19sb29wMyIpKTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZGVjX3RhaWwi KTsKKysJJmFkZAkoJGxlbiwweDQwKTsKKysJJmp6CSgmbGFiZWwoImVjYl9yZXQiKSk7CisrCisr CSZjbXAJKCRsZW4sMHgxMCk7CisrCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKKysJ JmplCSgmbGFiZWwoImVjYl9kZWNfb25lIikpOworKwkmY21wCSgkbGVuLDB4MjApOworKwkmbW92 dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7CisrCSZqZQkoJmxhYmVsKCJlY2JfZGVjX3R3 byIpKTsKKysJJmNtcAkoJGxlbiwweDMwKTsKKysJJm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAs JGlucCkpOworKwkmamUJKCZsYWJlbCgiZWNiX2RlY190aHJlZSIpKTsKKysJJm1vdnVwcwkoJGlu b3V0MywmUVdQKDB4MzAsJGlucCkpOworKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0NCIpOworKwkm bW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0 KSwkaW5vdXQxKTsKKysJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOworKwkmbW92 dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7CisrCSZqbXAJKCZsYWJlbCgiZWNiX3JldCIp KTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZGVjX29uZSIsMTYpOworKwkmYWVzbmlfaW5saW5lX2dl bmVyYXRlMSgiZGVjIik7CSMgJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsKKysJJm1vdnVwcwko JlFXUCgwLCRvdXQpLCRpbm91dDApOworKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7CisrCisr JnNldF9sYWJlbCgiZWNiX2RlY190d28iLDE2KTsKKysJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMi KTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworKwkmbW92dXBzCSgmUVdQKDB4 MTAsJG91dCksJGlub3V0MSk7CisrCSZqbXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKKysKKysmc2V0 X2xhYmVsKCJlY2JfZGVjX3RocmVlIiwxNik7CisrCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7 CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdnVwcwkoJlFXUCgweDEw LCRvdXQpLCRpbm91dDEpOworKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7Cisr CisrJnNldF9sYWJlbCgiZWNiX3JldCIpOworKyZmdW5jdGlvbl9lbmQoImFlc25pX2VjYl9lbmNy eXB0Iik7CisrfQorKworKyMgdm9pZCAkUFJFRklYX2NiY19lbmNyeXB0IChjb25zdCB2b2lkICpp bnAsIHZvaWQgKm91dCwKKysjICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0 aCwgY29uc3QgQUVTX0tFWSAqa2V5LAorKyMgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjaGFyICppdnAsY29uc3QgaW50IGVuYyk7CisrJmZ1bmN0aW9uX2JlZ2luKCIke1BSRUZJ WH1fY2JjX2VuY3J5cHQiKTsKKysJJm1vdgkoJGlucCwmd3BhcmFtKDApKTsKKysJJm1vdgkoJG91 dCwmd3BhcmFtKDEpKTsKKysJJm1vdgkoJGxlbiwmd3BhcmFtKDIpKTsKKysJJm1vdgkoJGtleSwm d3BhcmFtKDMpKTsKKysJJnRlc3QJKCRsZW4sJGxlbik7CisrCSZtb3YJKCRrZXlfLCZ3cGFyYW0o NCkpOworKwkmanoJKCZsYWJlbCgiY2JjX3JldCIpKTsKKysKKysJJmNtcAkoJndwYXJhbSg1KSww KTsKKysJJm1vdnVwcwkoJGl2ZWMsJlFXUCgwLCRrZXlfKSk7CSMgbG9hZCBJVgorKwkmbW92CSgk cm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKKysJJm1vdgkoJGtleV8sJGtleSk7CQkjIGJhY2t1cCAk a2V5CisrCSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOwkjIGJhY2t1cCAkcm91bmRzCisrCSZqZQko JmxhYmVsKCJjYmNfZGVjcnlwdCIpKTsKKysKKysJJm1vdmFwcwkoJGlub3V0MCwkaXZlYyk7Cisr CSZjbXAJKCRsZW4sMTYpOworKwkmamIJKCZsYWJlbCgiY2JjX2VuY190YWlsIikpOworKwkmc3Vi CSgkbGVuLDE2KTsKKysJJmptcAkoJmxhYmVsKCJjYmNfZW5jX2xvb3AiKSk7CisrCisrJnNldF9s YWJlbCgiY2JjX2VuY19sb29wIiwxNik7CisrCSZtb3Z1cHMJKCRpdmVjLCZRV1AoMCwkaW5wKSk7 CisrCSZsZWEJKCRpbnAsJkRXUCgxNiwkaW5wKSk7CisrCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsK KysJJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVuYyIpOwkjICZjYWxsCSgiX2Flc25pX2VuY3J5 cHQzIik7CisrCSZzdWIJKCRsZW4sMTYpOworKwkmbGVhCSgkb3V0LCZEV1AoMTYsJG91dCkpOwor KwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKysJJm1vdgkoJGtl eSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQorKwkmbW92dXBzCSgmUVdQKC0xNiwkb3V0KSwkaW5v dXQwKTsKKysJJmpuYwkoJmxhYmVsKCJjYmNfZW5jX2xvb3AiKSk7CisrCSZhZGQJKCRsZW4sMTYp OworKwkmam56CSgmbGFiZWwoImNiY19lbmNfdGFpbCIpKTsKKysJJm1vdmFwcwkoJGl2ZWMsJGlu b3V0MCk7CisrCSZqbXAJKCZsYWJlbCgiY2JjX3JldCIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNf ZW5jX3RhaWwiKTsKKysJJm1vdgkoImVjeCIsJGxlbik7CQkjIHphcHMgJHJvdW5kcworKwkmZGF0 YV93b3JkKDB4QTRGM0Y2ODkpOwkJIyByZXAgbW92c2IKKysJJm1vdgkoImVjeCIsMTYpOwkJIyB6 ZXJvIHRhaWwKKysJJnN1YgkoImVjeCIsJGxlbik7CisrCSZ4b3IJKCJlYXgiLCJlYXgiKTsJCSMg emFwcyAkbGVuCisrCSZkYXRhX3dvcmQoMHhBQUYzRjY4OSk7CQkjIHJlcCBzdG9zYgorKwkmbGVh CSgkb3V0LCZEV1AoLTE2LCRvdXQpKTsJIyByZXdpbmQgJG91dCBieSAxIGJsb2NrCisrCSZtb3YJ KCRyb3VuZHMsJHJvdW5kc18pOwkjIHJlc3RvcmUgJHJvdW5kcworKwkmbW92CSgkaW5wLCRvdXQp OwkJIyAkaW5wIGFuZCAkb3V0IGFyZSB0aGUgc2FtZQorKwkmbW92CSgka2V5LCRrZXlfKTsJCSMg cmVzdG9yZSAka2V5CisrCSZqbXAJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOworKworKyZzZXRf bGFiZWwoImNiY19kZWNyeXB0IiwxNik7CisrCSZzdWIJKCRsZW4sMHg0MCk7CisrCSZqYmUJKCZs YWJlbCgiY2JjX2RlY190YWlsIikpOworKwkmam1wCSgmbGFiZWwoImNiY19kZWNfbG9vcDMiKSk7 CisrCisrJnNldF9sYWJlbCgiY2JjX2RlY19sb29wMyIsMTYpOworKwkmbW92dXBzCSgkaW5vdXQw LCZRV1AoMCwkaW5wKSk7CisrCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKysJ Jm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOworKwkmbW92YXBzCSgkaW4wLCRpbm91 dDApOworKwkmbW92YXBzCSgkaW4xLCRpbm91dDEpOworKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0 MyIpOworKwkmc3ViCSgkbGVuLDB4MzApOworKwkmbGVhCSgkaW5wLCZEV1AoMHgzMCwkaW5wKSk7 CisrCSZsZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQpKTsKKysJJnB4b3IJKCRpbm91dDAsJGl2ZWMp OworKwkmcHhvcgkoJGlub3V0MSwkaW4wKTsKKysJJm1vdnVwcwkoJGl2ZWMsJlFXUCgtMHgxMCwk aW5wKSk7CisrCSZweG9yCSgkaW5vdXQyLCRpbjEpOworKwkmbW92dXBzCSgmUVdQKC0weDMwLCRv dXQpLCRpbm91dDApOworKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKQkjIHJlc3RvcmUgJHJvdW5k cworKwkmbW92dXBzCSgmUVdQKC0weDIwLCRvdXQpLCRpbm91dDEpOworKwkmbW92CSgka2V5LCRr ZXlfKTsJCSMgcmVzdG9yZSAka2V5CisrCSZtb3Z1cHMJKCZRV1AoLTB4MTAsJG91dCksJGlub3V0 Mik7CisrCSZqYQkoJmxhYmVsKCJjYmNfZGVjX2xvb3AzIikpOworKworKyZzZXRfbGFiZWwoImNi Y19kZWNfdGFpbCIpOworKwkmYWRkCSgkbGVuLDB4NDApOworKwkmanoJKCZsYWJlbCgiY2JjX3Jl dCIpKTsKKysKKysJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworKwkmY21wCSgkbGVu LDB4MTApOworKwkmbW92YXBzCSgkaW4wLCRpbm91dDApOworKwkmamJlCSgmbGFiZWwoImNiY19k ZWNfb25lIikpOworKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7CisrCSZjbXAJ KCRsZW4sMHgyMCk7CisrCSZtb3ZhcHMJKCRpbjEsJGlub3V0MSk7CisrCSZqYmUJKCZsYWJlbCgi Y2JjX2RlY190d28iKSk7CisrCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKysJ JmNtcAkoJGxlbiwweDMwKTsKKysJJmpiZQkoJmxhYmVsKCJjYmNfZGVjX3RocmVlIikpOworKwkm bW92dXBzCSgkaW5vdXQzLCZRV1AoMHgzMCwkaW5wKSk7CisrCSZjYWxsCSgiX2Flc25pX2RlY3J5 cHQ0Iik7CisrCSZtb3Z1cHMJKCRybmRrZXkwLCZRV1AoMHgxMCwkaW5wKSk7CisrCSZtb3Z1cHMJ KCRybmRrZXkxLCZRV1AoMHgyMCwkaW5wKSk7CisrCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKKysJ JnB4b3IJKCRpbm91dDEsJGluMCk7CisrCSZtb3Z1cHMJKCRpdmVjLCZRV1AoMHgzMCwkaW5wKSk7 CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJnB4b3IJKCRpbm91dDIsJHJu ZGtleTApOworKwkmcHhvcgkoJGlub3V0Mywkcm5ka2V5MSk7CisrCSZtb3Z1cHMJKCZRV1AoMHgx MCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOwor KwkmbW92YXBzCSgkaW5vdXQwLCRpbm91dDMpOworKwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0 KSk7CisrCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190YWlsX2NvbGxlY3RlZCIpKTsKKysKKysmc2V0 X2xhYmVsKCJjYmNfZGVjX29uZSIpOworKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZGVjIik7 CSMgJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsKKysJJnB4b3IJKCRpbm91dDAsJGl2ZWMpOwor KwkmbW92YXBzCSgkaXZlYywkaW4wKTsKKysJJmptcAkoJmxhYmVsKCJjYmNfZGVjX3RhaWxfY29s bGVjdGVkIikpOworKworKyZzZXRfbGFiZWwoImNiY19kZWNfdHdvIik7CisrCSZjYWxsCSgiX2Fl c25pX2RlY3J5cHQzIik7CisrCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKKysJJnB4b3IJKCRpbm91 dDEsJGluMCk7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdmFwcwko JGlub3V0MCwkaW5vdXQxKTsKKysJJm1vdmFwcwkoJGl2ZWMsJGluMSk7CisrCSZsZWEJKCRvdXQs JkRXUCgweDEwLCRvdXQpKTsKKysJJmptcAkoJmxhYmVsKCJjYmNfZGVjX3RhaWxfY29sbGVjdGVk IikpOworKworKyZzZXRfbGFiZWwoImNiY19kZWNfdGhyZWUiKTsKKysJJmNhbGwJKCJfYWVzbmlf ZGVjcnlwdDMiKTsKKysJJnB4b3IJKCRpbm91dDAsJGl2ZWMpOworKwkmcHhvcgkoJGlub3V0MSwk aW4wKTsKKysJJnB4b3IJKCRpbm91dDIsJGluMSk7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwk aW5vdXQwKTsKKysJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworKwkmbW92YXBz CSgkaW5vdXQwLCRpbm91dDIpOworKwkmbW92dXBzCSgkaXZlYywmUVdQKDB4MjAsJGlucCkpOwor KwkmbGVhCSgkb3V0LCZEV1AoMHgyMCwkb3V0KSk7CisrCisrJnNldF9sYWJlbCgiY2JjX2RlY190 YWlsX2NvbGxlY3RlZCIpOworKwkmYW5kCSgkbGVuLDE1KTsKKysJJmpuegkoJmxhYmVsKCJjYmNf ZGVjX3RhaWxfcGFydGlhbCIpKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwor Kwkmam1wCSgmbGFiZWwoImNiY19yZXQiKSk7CisrCisrJnNldF9sYWJlbCgiY2JjX2RlY190YWls X3BhcnRpYWwiKTsKKysJJm1vdgkoJGtleV8sImVzcCIpOworKwkmc3ViCSgiZXNwIiwxNik7Cisr CSZhbmQJKCJlc3AiLC0xNik7CisrCSZtb3ZhcHMJKCZRV1AoMCwiZXNwIiksJGlub3V0MCk7Cisr CSZtb3YJKCRpbnAsImVzcCIpOworKwkmbW92CSgiZWN4IiwkbGVuKTsKKysJJmRhdGFfd29yZCgw eEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiCisrCSZtb3YJKCJlc3AiLCRrZXlfKTsKKysKKysmc2V0 X2xhYmVsKCJjYmNfcmV0Iik7CisrCSZtb3YJKCRrZXlfLCZ3cGFyYW0oNCkpOworKwkmbW92dXBz CSgmUVdQKDAsJGtleV8pLCRpdmVjKTsJIyBvdXRwdXQgSVYKKysmZnVuY3Rpb25fZW5kKCIke1BS RUZJWH1fY2JjX2VuY3J5cHQiKTsKKysKKysjIE1lY2hhbmljYWwgcG9ydCBmcm9tIGFlc25pLXg4 Nl82NC5wbC4KKysjCisrIyBfYWVzbmlfc2V0X2VuY3J5cHRfa2V5IGlzIHByaXZhdGUgaW50ZXJm YWNlLAorKyMgaW5wdXQ6CisrIwkiZWF4Igljb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5Cisr Iwkkcm91bmRzCWludCBiaXRzCisrIwkka2V5CUFFU19LRVkgKmtleQorKyMgb3V0cHV0OgorKyMJ ImVheCIJcmV0dXJuIGNvZGUKKysjCSRyb3VuZAlyb3VuZHMKKysKKysmZnVuY3Rpb25fYmVnaW5f QigiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOworKwkmdGVzdAkoImVheCIsImVheCIpOworKwkm anoJKCZsYWJlbCgiYmFkX3BvaW50ZXIiKSk7CisrCSZ0ZXN0CSgka2V5LCRrZXkpOworKwkmanoJ KCZsYWJlbCgiYmFkX3BvaW50ZXIiKSk7CisrCisrCSZtb3Z1cHMJKCJ4bW0wIiwmUVdQKDAsImVh eCIpKTsJIyBwdWxsIGZpcnN0IDEyOCBiaXRzIG9mICp1c2VyS2V5CisrCSZweG9yCSgieG1tNCIs InhtbTQiKTsJIyBsb3cgZHdvcmQgb2YgeG1tNCBpcyBhc3N1bWVkIDAKKysJJmxlYQkoJGtleSwm RFdQKDE2LCRrZXkpKTsKKysJJmNtcAkoJHJvdW5kcywyNTYpOworKwkmamUJKCZsYWJlbCgiMTRy b3VuZHMiKSk7CisrCSZjbXAJKCRyb3VuZHMsMTkyKTsKKysJJmplCSgmbGFiZWwoIjEycm91bmRz IikpOworKwkmY21wCSgkcm91bmRzLDEyOCk7CisrCSZqbmUJKCZsYWJlbCgiYmFkX2tleWJpdHMi KSk7CisrCisrJnNldF9sYWJlbCgiMTByb3VuZHMiLDE2KTsKKysJJm1vdgkJKCRyb3VuZHMsOSk7 CisrCSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTAiKTsJIyByb3VuZCAwCisrCSZhZXNr ZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDAxKTsJCSMgcm91bmQgMQorKwkmY2FsbAkJKCZs YWJlbCgia2V5XzEyOF9jb2xkIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIs MHgyKTsJCSMgcm91bmQgMgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJmFlc2tl eWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MDQpOwkJIyByb3VuZCAzCisrCSZjYWxsCQkoJmxh YmVsKCJrZXlfMTI4IikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwOCk7 CQkjIHJvdW5kIDQKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisrCSZhZXNrZXlnZW5h c3Npc3QoInhtbTEiLCJ4bW0wIiwweDEwKTsJCSMgcm91bmQgNQorKwkmY2FsbAkJKCZsYWJlbCgi a2V5XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MjApOwkJIyBy b3VuZCA2CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOworKwkmYWVza2V5Z2VuYXNzaXN0 KCJ4bW0xIiwieG1tMCIsMHg0MCk7CQkjIHJvdW5kIDcKKysJJmNhbGwJCSgmbGFiZWwoImtleV8x MjgiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDgwKTsJCSMgcm91bmQg OAorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1t MSIsInhtbTAiLDB4MWIpOwkJIyByb3VuZCA5CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4Iikp OworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgzNik7CQkjIHJvdW5kIDEwCisr CSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwi eG1tMCIpOworKwkmbW92CQkoJkRXUCg4MCwka2V5KSwkcm91bmRzKTsKKysJJnhvcgkJKCJlYXgi LCJlYXgiKTsKKysJJnJldCgpOworKworKyZzZXRfbGFiZWwoImtleV8xMjgiLDE2KTsKKysJJiRt b3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTAiKTsKKysJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5 KSk7CisrJnNldF9sYWJlbCgia2V5XzEyOF9jb2xkIik7CisrCSZzaHVmcHMJCSgieG1tNCIsInht bTAiLDBiMDAwMTAwMDApOworKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOworKwkmc2h1ZnBzCQko InhtbTQiLCJ4bW0wIiwwYjEwMDAxMTAwLCk7CisrCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7Cisr CSZwc2h1ZmQJCSgieG1tMSIsInhtbTEiLDBiMTExMTExMTEpOwkjIGNyaXRpY2FsIHBhdGgKKysJ JnB4b3IJCSgieG1tMCIsInhtbTEiKTsKKysJJnJldCgpOworKworKyZzZXRfbGFiZWwoIjEycm91 bmRzIiwxNik7CisrCSZtb3ZxCQkoInhtbTIiLCZRV1AoMTYsImVheCIpKTsJIyByZW1haW5pbmcg MS8zIG9mICp1c2VyS2V5CisrCSZtb3YJCSgkcm91bmRzLDExKTsKKysJJiRtb3Zla2V5CSgmUVdQ KC0xNiwka2V5KSwieG1tMCIpCQkjIHJvdW5kIDAKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIs InhtbTIiLDB4MDEpOwkJIyByb3VuZCAxLDIKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJhX2Nv bGQiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAyKTsJCSMgcm91bmQg MiwzCisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYiIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgi eG1tMSIsInhtbTIiLDB4MDQpOwkJIyByb3VuZCA0LDUKKysJJmNhbGwJCSgmbGFiZWwoImtleV8x OTJhIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwOCk7CQkjIHJvdW5k IDUsNgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3Qo InhtbTEiLCJ4bW0yIiwweDEwKTsJCSMgcm91bmQgNyw4CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlf MTkyYSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MjApOwkJIyByb3Vu ZCA4LDkKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOworKwkmYWVza2V5Z2VuYXNzaXN0 KCJ4bW0xIiwieG1tMiIsMHg0MCk7CQkjIHJvdW5kIDEwLDExCisrCSZjYWxsCQkoJmxhYmVsKCJr ZXlfMTkyYSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4ODApOwkJIyBy b3VuZCAxMSwxMgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7CisrCSYkbW92ZWtleQko JlFXUCgwLCRrZXkpLCJ4bW0wIik7CisrCSZtb3YJCSgmRFdQKDQ4LCRrZXkpLCRyb3VuZHMpOwor KwkmeG9yCQkoImVheCIsImVheCIpOworKwkmcmV0KCk7CisrCisrJnNldF9sYWJlbCgia2V5XzE5 MmEiLDE2KTsKKysJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTAiKTsKKysJJmxlYQkJKCRr ZXksJkRXUCgxNiwka2V5KSk7CisrJnNldF9sYWJlbCgia2V5XzE5MmFfY29sZCIsMTYpOworKwkm bW92YXBzCQkoInhtbTUiLCJ4bW0yIik7CisrJnNldF9sYWJlbCgia2V5XzE5MmJfd2FybSIpOwor Kwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsKKysJJm1vdmFwcwkJKCJ4bW0z IiwieG1tMiIpOworKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOworKwkmc2h1ZnBzCQkoInhtbTQi LCJ4bW0wIiwwYjEwMDAxMTAwKTsKKysJJnBzbGxkcQkJKCJ4bW0zIiw0KTsKKysJJnB4b3IJCSgi eG1tMCIsInhtbTQiKTsKKysJJnBzaHVmZAkJKCJ4bW0xIiwieG1tMSIsMGIwMTAxMDEwMSk7CSMg Y3JpdGljYWwgcGF0aAorKwkmcHhvcgkJKCJ4bW0yIiwieG1tMyIpOworKwkmcHhvcgkJKCJ4bW0w IiwieG1tMSIpOworKwkmcHNodWZkCQkoInhtbTMiLCJ4bW0wIiwwYjExMTExMTExKTsKKysJJnB4 b3IJCSgieG1tMiIsInhtbTMiKTsKKysJJnJldCgpOworKworKyZzZXRfbGFiZWwoImtleV8xOTJi IiwxNik7CisrCSZtb3ZhcHMJCSgieG1tMyIsInhtbTAiKTsKKysJJnNodWZwcwkJKCJ4bW01Iiwi eG1tMCIsMGIwMTAwMDEwMCk7CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW01Iik7Cisr CSZzaHVmcHMJCSgieG1tMyIsInhtbTIiLDBiMDEwMDExMTApOworKwkmJG1vdmVrZXkJKCZRV1Ao MTYsJGtleSksInhtbTMiKTsKKysJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7CisrCSZqbXAJ CSgmbGFiZWwoImtleV8xOTJiX3dhcm0iKSk7CisrCisrJnNldF9sYWJlbCgiMTRyb3VuZHMiLDE2 KTsKKysJJm1vdnVwcwkJKCJ4bW0yIiwmUVdQKDE2LCJlYXgiKSk7CSMgcmVtYWluaW5nIGhhbGYg b2YgKnVzZXJLZXkKKysJJm1vdgkJKCRyb3VuZHMsMTMpOworKwkmbGVhCQkoJGtleSwmRFdQKDE2 LCRrZXkpKTsKKysJJiRtb3Zla2V5CSgmUVdQKC0zMiwka2V5KSwieG1tMCIpOwkjIHJvdW5kIDAK KysJJiRtb3Zla2V5CSgmUVdQKC0xNiwka2V5KSwieG1tMiIpOwkjIHJvdW5kIDEKKysJJmFlc2tl eWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDEpOwkJIyByb3VuZCAyCisrCSZjYWxsCQkoJmxh YmVsKCJrZXlfMjU2YV9jb2xkIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIs MHgwMSk7CQkjIHJvdW5kIDMKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOworKwkmYWVz a2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwMik7CQkjIHJvdW5kIDQKKysJJmNhbGwJCSgm bGFiZWwoImtleV8yNTZhIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgw Mik7CQkjIHJvdW5kIDUKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOworKwkmYWVza2V5 Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwNCk7CQkjIHJvdW5kIDYKKysJJmNhbGwJCSgmbGFi ZWwoImtleV8yNTZhIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwNCk7 CQkjIHJvdW5kIDcKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOworKwkmYWVza2V5Z2Vu YXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwOCk7CQkjIHJvdW5kIDgKKysJJmNhbGwJCSgmbGFiZWwo ImtleV8yNTZhIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwOCk7CQkj IHJvdW5kIDkKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOworKwkmYWVza2V5Z2VuYXNz aXN0KCJ4bW0xIiwieG1tMiIsMHgxMCk7CQkjIHJvdW5kIDEwCisrCSZjYWxsCQkoJmxhYmVsKCJr ZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MTApOwkJIyBy b3VuZCAxMQorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmIiKSk7CisrCSZhZXNrZXlnZW5hc3Np c3QoInhtbTEiLCJ4bW0yIiwweDIwKTsJCSMgcm91bmQgMTIKKysJJmNhbGwJCSgmbGFiZWwoImtl eV8yNTZhIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgyMCk7CQkjIHJv dW5kIDEzCisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKKysJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTIiLDB4NDApOwkJIyByb3VuZCAxNAorKwkmY2FsbAkJKCZsYWJlbCgia2V5 XzI1NmEiKSk7CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisrCSZtb3YJCSgm RFdQKDE2LCRrZXkpLCRyb3VuZHMpOworKwkmeG9yCQkoImVheCIsImVheCIpOworKwkmcmV0KCk7 CisrCisrJnNldF9sYWJlbCgia2V5XzI1NmEiLDE2KTsKKysJJiRtb3Zla2V5CSgmUVdQKDAsJGtl eSksInhtbTIiKTsKKysJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisrJnNldF9sYWJlbCgi a2V5XzI1NmFfY29sZCIpOworKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsK KysJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIx MDAwMTEwMCk7CisrCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7CisrCSZwc2h1ZmQJCSgieG1tMSIs InhtbTEiLDBiMTExMTExMTEpOwkjIGNyaXRpY2FsIHBhdGgKKysJJnB4b3IJCSgieG1tMCIsInht bTEiKTsKKysJJnJldCgpOworKworKyZzZXRfbGFiZWwoImtleV8yNTZiIiwxNik7CisrCSYkbW92 ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisrCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkp OworKworKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0yIiwwYjAwMDEwMDAwKTsKKysJJnB4b3IJCSgi eG1tMiIsInhtbTQiKTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMiIsMGIxMDAwMTEwMCk7Cisr CSZweG9yCQkoInhtbTIiLCJ4bW00Iik7CisrCSZwc2h1ZmQJCSgieG1tMSIsInhtbTEiLDBiMTAx MDEwMTApOwkjIGNyaXRpY2FsIHBhdGgKKysJJnB4b3IJCSgieG1tMiIsInhtbTEiKTsKKysJJnJl dCgpOworKworKyZzZXRfbGFiZWwoImJhZF9wb2ludGVyIiw0KTsKKysJJm1vdgkoImVheCIsLTEp OworKwkmcmV0CSgpOworKyZzZXRfbGFiZWwoImJhZF9rZXliaXRzIiw0KTsKKysJJm1vdgkoImVh eCIsLTIpOworKwkmcmV0CSgpOworKyZmdW5jdGlvbl9lbmRfQigiX2Flc25pX3NldF9lbmNyeXB0 X2tleSIpOworKworKyMgaW50ICRQUkVGSVhfc2V0X2VuY3J5cHRfa2V5IChjb25zdCB1bnNpZ25l ZCBjaGFyICp1c2VyS2V5LCBpbnQgYml0cywKKysjICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQUVTX0tFWSAqa2V5KQorKyZmdW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fc2V0X2VuY3J5 cHRfa2V5Iik7CisrCSZtb3YJKCJlYXgiLCZ3cGFyYW0oMCkpOworKwkmbW92CSgkcm91bmRzLCZ3 cGFyYW0oMSkpOworKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOworKwkmY2FsbAkoIl9hZXNuaV9z ZXRfZW5jcnlwdF9rZXkiKTsKKysJJnJldAkoKTsKKysmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklY fV9zZXRfZW5jcnlwdF9rZXkiKTsKKysKKysjIGludCAkUFJFRklYX3NldF9kZWNyeXB0X2tleSAo Y29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCisrIyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkKKysmZnVuY3Rpb25fYmVnaW5fQigiJHtQUkVG SVh9X3NldF9kZWNyeXB0X2tleSIpOworKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDApKTsKKysJJm1v dgkoJHJvdW5kcywmd3BhcmFtKDEpKTsKKysJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKysJJmNh bGwJKCJfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7CisrCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7 CisrCSZzaGwJKCRyb3VuZHMsNCkJIyByb3VuZHMtMSBhZnRlciBfYWVzbmlfc2V0X2VuY3J5cHRf a2V5CisrCSZ0ZXN0CSgiZWF4IiwiZWF4Iik7CisrCSZqbnoJKCZsYWJlbCgiZGVjX2tleV9yZXQi KSk7CisrCSZsZWEJKCJlYXgiLCZEV1AoMTYsJGtleSwkcm91bmRzKSk7CSMgZW5kIG9mIGtleSBz Y2hlZHVsZQorKworKwkmJG1vdmVrZXkJKCJ4bW0wIiwmUVdQKDAsJGtleSkpOwkjIGp1c3Qgc3dh cAorKwkmJG1vdmVrZXkJKCJ4bW0xIiwmUVdQKDAsImVheCIpKTsKKysJJiRtb3Zla2V5CSgmUVdQ KDAsImVheCIpLCJ4bW0wIik7CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0xIik7Cisr CSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworKwkmbGVhCQkoImVheCIsJkRXUCgtMTYsImVh eCIpKTsKKysKKysmc2V0X2xhYmVsKCJkZWNfa2V5X2ludmVyc2UiKTsKKysJJiRtb3Zla2V5CSgi eG1tMCIsJlFXUCgwLCRrZXkpKTsJIyBzd2FwIGFuZCBpbnZlcnNlCisrCSYkbW92ZWtleQkoInht bTEiLCZRV1AoMCwiZWF4IikpOworKwkmYWVzaW1jCQkoInhtbTAiLCJ4bW0wIik7CisrCSZhZXNp bWMJCSgieG1tMSIsInhtbTEiKTsKKysJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisrCSZs ZWEJCSgiZWF4IiwmRFdQKC0xNiwiZWF4IikpOworKwkmY21wCQkoImVheCIsJGtleSk7CisrCSYk bW92ZWtleQkoJlFXUCgxNiwiZWF4IiksInhtbTAiKTsKKysJJiRtb3Zla2V5CSgmUVdQKC0xNiwk a2V5KSwieG1tMSIpOworKwkmamEJCSgmbGFiZWwoImRlY19rZXlfaW52ZXJzZSIpKTsKKysKKysJ JiRtb3Zla2V5CSgieG1tMCIsJlFXUCgwLCRrZXkpKTsJIyBpbnZlcnNlIG1pZGRsZQorKwkmYWVz aW1jCQkoInhtbTAiLCJ4bW0wIik7CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7 CisrCisrCSZ4b3IJCSgiZWF4IiwiZWF4Iik7CQkjIHJldHVybiBzdWNjZXNzCisrJnNldF9sYWJl bCgiZGVjX2tleV9yZXQiKTsKKysJJnJldAkoKTsKKysmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklY fV9zZXRfZGVjcnlwdF9rZXkiKTsKKysmYXNjaXooIkFFUyBmb3IgSW50ZWwgQUVTLU5JLCBDUllQ VE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+Iik7CisrCisrJmFzbV9maW5pc2goKTsKK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBs LmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBs CistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODZfNjQucGwu YWVzbmkJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEu MC4wLWJldGE0L2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Nl82NC5wbAkyMDEwLTAxLTEyIDIyOjE4 OjA2LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw5OTEgQEAKKysjIS91c3IvYmluL2VudiBw ZXJsCisrIworKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKysjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBw cm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3BlblNTTAorKyMgcHJvamVjdC4gVGhlIG1vZHVs ZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorKyMgQ1JZUFRP R0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRo ZXIKKysjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dh bXMvLgorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKysjCisrIyBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHN1cHBv cnQgZm9yIEludGVsIEFFUy1OSSBleHRlbnNpb24uIEluCisrIyBPcGVuU1NMIGNvbnRleHQgaXQn cyB1c2VkIHdpdGggSW50ZWwgZW5naW5lLCBidXQgY2FuIGFsc28gYmUgdXNlZCBhcworKyMgZHJv cC1pbiByZXBsYWNlbWVudCBmb3IgY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5wbCBbc2VlIGJl bG93IGZvcgorKyMgZGV0YWlsc10uCisrCisrJFBSRUZJWD0iYWVzbmkiOwkjIGlmICRQUkVGSVgg aXMgc2V0IHRvICJBRVMiLCB0aGUgc2NyaXB0CisrCQkJIyBnZW5lcmF0ZXMgZHJvcC1pbiByZXBs YWNlbWVudCBmb3IKKysJCQkjIGNyeXB0by9hZXMvYXNtL2Flcy14ODZfNjQucGw6LSkKKysKKysk Zmxhdm91ciA9IHNoaWZ0OworKyRvdXRwdXQgID0gc2hpZnQ7CisraWYgKCRmbGF2b3VyID1+IC9c Li8pIHsgJG91dHB1dCA9ICRmbGF2b3VyOyB1bmRlZiAkZmxhdm91cjsgfQorKworKyR3aW42ND0w OyAkd2luNjQ9MSBpZiAoJGZsYXZvdXIgPX4gL1tubV1hc218bWluZ3c2NC8gfHwgJG91dHB1dCA9 fiAvXC5hc20kLyk7CisrCisrJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsK KysoICR4bGF0ZT0iJHtkaXJ9eDg2XzY0LXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlICkgb3IKKyso ICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS94ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxh dGUpIG9yCisrZGllICJjYW4ndCBsb2NhdGUgeDg2XzY0LXhsYXRlLnBsIjsKKysKKytvcGVuIFNU RE9VVCwifCAkXlggJHhsYXRlICRmbGF2b3VyICRvdXRwdXQiOworKworKyRtb3ZrZXkgPSAkUFJF RklYIGVxICJhZXNuaSIgPyAibW92YXBzIiA6ICJtb3Z1cHMiOworK0BfNGFyZ3M9JHdpbjY0Pwko IiVyY3giLCIlcmR4IiwiJXI4IiwgIiVyOSIpIDoJIyBXaW42NCBvcmRlcgorKwkJKCIlcmRpIiwi JXJzaSIsIiVyZHgiLCIlcmN4Iik7CSMgVW5peCBvcmRlcgorKworKyRjb2RlPSIudGV4dFxuIjsK KysKKyskcm91bmRzPSIlZWF4IjsJIyBpbnB1dCB0byBhbmQgY2hhbmdlZCBieSBhZXNuaV9bZW58 ZGVdY3J5cHROICEhIQorKyMgdGhpcyBpcyBuYXR1cmFsIFVuaXggYXJndW1lbnQgb3JkZXIgZm9y IHB1YmxpYyAkUFJFRklYX1tlY2J8Y2JjXV9lbmNyeXB0IC4uLgorKyRpbnA9IiVyZGkiOworKyRv dXQ9IiVyc2kiOworKyRsZW49IiVyZHgiOworKyRrZXk9IiVyY3giOwkjIGlucHV0IHRvIGFuZCBj aGFuZ2VkIGJ5IGFlc25pX1tlbnxkZV1jcnlwdE4gISEhCisrJGl2cD0iJXI4IjsJIyBjYmMKKysK Kyskcm5kc189IiVyMTBkIjsJIyBiYWNrdXAgY29weSBmb3IgJHJvdW5kcworKyRrZXlfPSIlcjEx IjsJIyBiYWNrdXAgY29weSBmb3IgJGtleQorKworKyMgJXhtbSByZWdpc3RlciBsYXlvdXQKKysk aW5vdXQwPSIleG1tMCI7CSRpbm91dDE9IiV4bW0xIjsKKyskaW5vdXQyPSIleG1tMiI7CSRpbm91 dDM9IiV4bW0zIjsKKyskcm5ka2V5MD0iJXhtbTQiOwkkcm5ka2V5MT0iJXhtbTUiOworKworKyRp dj0iJXhtbTYiOwkJJGluMD0iJXhtbTciOwkjIHVzZWQgaW4gQ0JDIGRlY3J5cHQKKyskaW4xPSIl eG1tOCI7CQkkaW4yPSIleG1tOSI7CisrDAorKyMgSW5saW5lIHZlcnNpb24gb2YgaW50ZXJuYWwg YWVzbmlfW2VufGRlXWNyeXB0MS4KKysjCisrIyBXaHkgZm9sZGVkIGxvb3A/IEJlY2F1c2UgYWVz W2VuY3xkZWNdIGlzIHNsb3cgZW5vdWdoIHRvIGFjY29tbW9kYXRlCisrIyBjeWNsZXMgd2hpY2gg dGFrZSBjYXJlIG9mIGxvb3AgdmFyaWFibGVzLi4uCisreyBteSAkc247Cisrc3ViIGFlc25pX2dl bmVyYXRlMSB7CisrbXkgKCRwLCRrZXksJHJvdW5kcyk9QF87CisrKyskc247CisrJGNvZGUuPTw8 X19fOworKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MAorKwkkbW92a2V5CTE2KCRrZXkpLCRybmRr ZXkxCisrCWxlYQkzMigka2V5KSwka2V5CisrCXB4b3IJJHJuZGtleTAsJGlub3V0MAorKy5Mb29w XyR7cH0xXyRzbjoKKysJYWVzJHtwfQkkcm5ka2V5MSwkaW5vdXQwCisrCWRlYwkkcm91bmRzCisr CSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkxCisrCWxlYQkxNigka2V5KSwka2V5CisrCWpuegkuTG9v cF8ke3B9MV8kc24JIyBsb29wIGJvZHkgaXMgMTYgYnl0ZXMKKysJYWVzJHtwfWxhc3QJJHJuZGtl eTEsJGlub3V0MAorK19fXworK319CisrIyB2b2lkICRQUkVGSVhfW2VufGRlXWNyeXB0IChjb25z dCB2b2lkICppbnAsdm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtleSk7CisrIworK3sgbXkgKCRp bnAsJG91dCwka2V5KSA9IEBfNGFyZ3M7CisrCisrJGNvZGUuPTw8X19fOworKy5nbG9ibAkke1BS RUZJWH1fZW5jcnlwdAorKy50eXBlCSR7UFJFRklYfV9lbmNyeXB0LFxAYWJpLW9tbmlwb3RlbnQK KysuYWxpZ24JMTYKKyske1BSRUZJWH1fZW5jcnlwdDoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQw CQkjIGxvYWQgaW5wdXQKKysJbW92CTI0MCgka2V5KSwkcm91bmRzCSMgcHVsbCAkcm91bmRzCisr X19fCisrCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKKyskY29kZS49PDxf X187CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQkJIyBvdXRwdXQKKysJcmV0CisrLnNpemUJJHtQ UkVGSVh9X2VuY3J5cHQsLi0ke1BSRUZJWH1fZW5jcnlwdAorKworKy5nbG9ibAkke1BSRUZJWH1f ZGVjcnlwdAorKy50eXBlCSR7UFJFRklYfV9kZWNyeXB0LFxAYWJpLW9tbmlwb3RlbnQKKysuYWxp Z24JMTYKKyske1BSRUZJWH1fZGVjcnlwdDoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQwCQkjIGxv YWQgaW5wdXQKKysJbW92CTI0MCgka2V5KSwkcm91bmRzCSMgcHVsbCAkcm91bmRzCisrX19fCisr CSZhZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKKyskY29kZS49PDxfX187Cisr CW1vdnVwcwkkaW5vdXQwLCgkb3V0KQkJIyBvdXRwdXQKKysJcmV0CisrLnNpemUJJHtQUkVGSVh9 X2RlY3J5cHQsIC4tJHtQUkVGSVh9X2RlY3J5cHQKKytfX18KKyt9CisrDAorKyMgX2Flc25pX1tl bnxkZV1jcnlwdFszNF0gYXJlIHByaXZhdGUgaW50ZXJmYWNlcywgTiBkZW5vdGVzIGludGVybGVh dmUKKysjIGZhY3Rvci4gV2h5IDN4IHN1YnJvdXRpbmUgaXMgdXNlZCBpbiBsb29wcz8gRXZlbiB0 aG91Z2ggYWVzW2VuY3xkZWNdCisrIyBsYXRlbmN5IGlzIDYsIGl0IHR1cm5lZCBvdXQgdGhhdCBp dCBjYW4gYmUgc2NoZWR1bGVkIG9ubHkgZXZlcnkKKysjICpzZWNvbmQqIGN5Y2xlLiBUaHVzIDN4 IGludGVybGVhdmUgaXMgdGhlIG9uZSBwcm92aWRpbmcgb3B0aW1hbAorKyMgdXRpbGl6YXRpb24s IGkuZS4gd2hlbiBzdWJyb3V0aW5lJ3MgdGhyb3VnaHB1dCBpcyB2aXJ0dWFsbHkgc2FtZSBhcwor KyMgb2Ygbm9uLWludGVybGVhdmVkIHN1YnJvdXRpbmUgW2ZvciBudW1iZXIgb2YgaW5wdXQgYmxv Y2tzIHVwIHRvIDNdLgorKyMgVGhpcyBpcyB3aHkgaXQgbWFrZXMgbm8gc2Vuc2UgdG8gaW1wbGVt ZW50IDJ4IHN1YnJvdXRpbmUuIEFzIHNvb24KKysjIGFzL2lmIEludGVsIGltcHJvdmVzIHRocm91 Z2hwdXQgYnkgbWFraW5nIGl0IHBvc3NpYmxlIHRvIHNjaGVkdWxlCisrIyB0aGUgaW5zdHJ1Y3Rp b25zIGluIHF1ZXN0aW9uICpldmVyeSogY3ljbGVzIEkgd291bGQgaGF2ZSB0bworKyMgaW1wbGVt ZW50IDZ4IGludGVybGVhdmUgYW5kIHVzZSBpdCBpbiBsb29wLi4uCisrc3ViIGFlc25pX2dlbmVy YXRlMyB7CisrbXkgJGRpcj1zaGlmdDsKKysjIEFzIGFscmVhZHkgbWVudGlvbmVkIGl0IHRha2Vz IGluICRrZXkgYW5kICRyb3VuZHMsIHdoaWNoIGFyZSAqbm90KgorKyMgcHJlc2VydmVkLiAkaW5v dXRbMC0yXSBpcyBjaXBoZXIvY2xlYXIgdGV4dC4uLgorKyRjb2RlLj08PF9fXzsKKysudHlwZQlf YWVzbmlfJHtkaXJ9cnlwdDMsXEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkxNgorK19hZXNuaV8k e2Rpcn1yeXB0MzoKKysJJG1vdmtleQkoJGtleSksJHJuZGtleTAKKysJc2hyCVwkMSwkcm91bmRz CisrCSRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEKKysJbGVhCTMyKCRrZXkpLCRrZXkKKysJcHhv cgkkcm5ka2V5MCwkaW5vdXQwCisrCXB4b3IJJHJuZGtleTAsJGlub3V0MQorKwlweG9yCSRybmRr ZXkwLCRpbm91dDIKKysKKysuTCR7ZGlyfV9sb29wMzoKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRp bm91dDAKKysJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwk aW5vdXQxCisrCWRlYwkJJHJvdW5kcworKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorKwlh ZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MAorKwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQor KwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MQorKwlsZWEJCTMyKCRrZXkpLCRrZXkKKysJYWVz JHtkaXJ9CSRybmRrZXkwLCRpbm91dDIKKysJam56CQkuTCR7ZGlyfV9sb29wMworKworKwlhZXMk e2Rpcn0JJHJuZGtleTEsJGlub3V0MAorKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKysJYWVz JHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDIKKysJ YWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQwCisrCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAs JGlub3V0MQorKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDIKKysJcmV0CisrLnNpemUJ X2Flc25pXyR7ZGlyfXJ5cHQzLC4tX2Flc25pXyR7ZGlyfXJ5cHQzCisrX19fCisrfQorKyMgNHgg aW50ZXJsZWF2ZSBpcyBpbXBsZW1lbnRlZCB0byBpbXByb3ZlIHNtYWxsIGJsb2NrIHBlcmZvcm1h bmNlLAorKyMgbW9zdCBub3RhYmx5IFthbmQgbmF0dXJhbGx5XSA0IGJsb2NrIGJ5IH4zMCUuIE9u ZSBjYW4gYXJndWUgdGhhdCBvbmUKKysjIHNob3VsZCBoYXZlIGltcGxlbWVudGVkIDV4IGFzIHdl bGwsIGJ1dCBpbXByb3ZlbWVudCB3b3VsZCBiZSA8MjAlLAorKyMgc28gaXQncyBub3Qgd29ydGgg aXQuLi4KKytzdWIgYWVzbmlfZ2VuZXJhdGU0IHsKKytteSAkZGlyPXNoaWZ0OworKyMgQXMgYWxy ZWFkeSBtZW50aW9uZWQgaXQgdGFrZXMgaW4gJGtleSBhbmQgJHJvdW5kcywgd2hpY2ggYXJlICpu b3QqCisrIyBwcmVzZXJ2ZWQuICRpbm91dFswLTNdIGlzIGNpcGhlci9jbGVhciB0ZXh0Li4uCisr JGNvZGUuPTw8X19fOworKy50eXBlCV9hZXNuaV8ke2Rpcn1yeXB0NCxcQGFiaS1vbW5pcG90ZW50 CisrLmFsaWduCTE2CisrX2Flc25pXyR7ZGlyfXJ5cHQ0OgorKwkkbW92a2V5CSgka2V5KSwkcm5k a2V5MAorKwlzaHIJXCQxLCRyb3VuZHMKKysJJG1vdmtleQkxNigka2V5KSwkcm5ka2V5MQorKwls ZWEJMzIoJGtleSksJGtleQorKwlweG9yCSRybmRrZXkwLCRpbm91dDAKKysJcHhvcgkkcm5ka2V5 MCwkaW5vdXQxCisrCXB4b3IJJHJuZGtleTAsJGlub3V0MgorKwlweG9yCSRybmRrZXkwLCRpbm91 dDMKKysKKysuTCR7ZGlyfV9sb29wNDoKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKysJ JG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCisr CWRlYwkJJHJvdW5kcworKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorKwlhZXMke2Rpcn0J JHJuZGtleTEsJGlub3V0MworKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MAorKwkkbW92a2V5 CQkxNigka2V5KSwkcm5ka2V5MQorKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MQorKwlsZWEJ CTMyKCRrZXkpLCRrZXkKKysJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDIKKysJYWVzJHtkaXJ9 CSRybmRrZXkwLCRpbm91dDMKKysJam56CQkuTCR7ZGlyfV9sb29wNAorKworKwlhZXMke2Rpcn0J JHJuZGtleTEsJGlub3V0MAorKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKysJYWVzJHtkaXJ9 CSRybmRrZXkxLCRpbm91dDEKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDIKKysJYWVzJHtk aXJ9CSRybmRrZXkxLCRpbm91dDMKKysJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQwCisr CWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MQorKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkw LCRpbm91dDIKKysJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQzCisrCXJldAorKy5zaXpl CV9hZXNuaV8ke2Rpcn1yeXB0NCwuLV9hZXNuaV8ke2Rpcn1yeXB0NAorK19fXworK30KKysmYWVz bmlfZ2VuZXJhdGUzKCJlbmMiKSBpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKTsKKysmYWVzbmlfZ2Vu ZXJhdGUzKCJkZWMiKTsKKysmYWVzbmlfZ2VuZXJhdGU0KCJlbmMiKSBpZiAoJFBSRUZJWCBlcSAi YWVzbmkiKTsKKysmYWVzbmlfZ2VuZXJhdGU0KCJkZWMiKTsKKysMCisraWYgKCRQUkVGSVggZXEg ImFlc25pIikgeworKyMgdm9pZCBhZXNuaV9lY2JfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW4sIHZv aWQgKm91dCwKKysjCQkJICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisrIwkJ CSAgaW50IGVuYyk7CisrJGNvZGUuPTw8X19fOworKy5nbG9ibAlhZXNuaV9lY2JfZW5jcnlwdAor Ky50eXBlCWFlc25pX2VjYl9lbmNyeXB0LFxAZnVuY3Rpb24sNQorKy5hbGlnbgkxNgorK2Flc25p X2VjYl9lbmNyeXB0OgorKwljbXAJXCQxNiwkbGVuCQkjIGNoZWNrIGxlbmd0aAorKwlqYgkuTGVj Yl9yZXQKKysKKysJbW92CTI0MCgka2V5KSwkcm91bmRzCSMgcHVsbCAkcm91bmRzCisrCWFuZAlc JC0xNiwkbGVuCisrCW1vdgkka2V5LCRrZXlfCQkjIGJhY2t1cCAka2V5CisrCXRlc3QJJXI4ZCwl cjhkCQkjIDV0aCBhcmd1bWVudAorKwltb3YJJHJvdW5kcywkcm5kc18JCSMgYmFja3VwICRyb3Vu ZHMKKysJanoJLkxlY2JfZGVjcnlwdAorKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRUNC IEVOQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworKwlzdWIJXCQweDQwLCRs ZW4KKysJamJlCS5MZWNiX2VuY190YWlsCisrCWptcAkuTGVjYl9lbmNfbG9vcDMKKysuYWxpZ24g MTYKKysuTGVjYl9lbmNfbG9vcDM6CisrCW1vdnVwcwkoJGlucCksJGlub3V0MAorKwltb3Z1cHMJ MHgxMCgkaW5wKSwkaW5vdXQxCisrCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKKysJY2FsbAlf YWVzbmlfZW5jcnlwdDMKKysJc3ViCVwkMHgzMCwkbGVuCisrCWxlYQkweDMwKCRpbnApLCRpbnAK KysJbGVhCTB4MzAoJG91dCksJG91dAorKwltb3Z1cHMJJGlub3V0MCwtMHgzMCgkb3V0KQorKwlt b3YJJHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9yZSAkcm91bmRzCisrCW1vdnVwcwkkaW5vdXQxLC0w eDIwKCRvdXQpCisrCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQorKwltb3Z1cHMJJGlu b3V0MiwtMHgxMCgkb3V0KQorKwlqYQkuTGVjYl9lbmNfbG9vcDMKKysKKysuTGVjYl9lbmNfdGFp bDoKKysJYWRkCVwkMHg0MCwkbGVuCisrCWp6CS5MZWNiX3JldAorKworKwljbXAJXCQweDEwLCRs ZW4KKysJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisrCWplCS5MZWNiX2VuY19vbmUKKysJY21wCVwk MHgyMCwkbGVuCisrCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKKysJamUJLkxlY2JfZW5jX3R3 bworKwljbXAJXCQweDMwLCRsZW4KKysJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgorKwlqZQku TGVjYl9lbmNfdGhyZWUKKysJbW92dXBzCTB4MzAoJGlucCksJGlub3V0MworKwljYWxsCV9hZXNu aV9lbmNyeXB0NAorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJbW92dXBzCSRpbm91dDEsMHgx MCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQzLDB4 MzAoJG91dCkKKysJam1wCS5MZWNiX3JldAorKy5hbGlnbgkxNgorKy5MZWNiX2VuY19vbmU6Cisr X19fCisrCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKKyskY29kZS49PDxf X187CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0CisrLmFsaWduCTE2 CisrLkxlY2JfZW5jX3R3bzoKKysJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKysJbW92dXBzCSRpbm91 dDAsKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKysJam1wCS5MZWNiX3JldAor Ky5hbGlnbgkxNgorKy5MZWNiX2VuY190aHJlZToKKysJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKysJ bW92dXBzCSRpbm91dDAsKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKysJbW92 dXBzCSRpbm91dDIsMHgyMCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0CisrDCMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gRUNCIERFQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IworKy5hbGlnbgkxNgorKy5MZWNiX2RlY3J5cHQ6CisrCXN1YglcJDB4NDAsJGxlbgorKwlqYmUJ LkxlY2JfZGVjX3RhaWwKKysJam1wCS5MZWNiX2RlY19sb29wMworKy5hbGlnbiAxNgorKy5MZWNi X2RlY19sb29wMzoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisrCW1vdnVwcwkweDEwKCRpbnAp LCRpbm91dDEKKysJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgorKwljYWxsCV9hZXNuaV9kZWNy eXB0MworKwlzdWIJXCQweDMwLCRsZW4KKysJbGVhCTB4MzAoJGlucCksJGlucAorKwlsZWEJMHgz MCgkb3V0KSwkb3V0CisrCW1vdnVwcwkkaW5vdXQwLC0weDMwKCRvdXQpCisrCW1vdgkkcm5kc18s JHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKysJbW92dXBzCSRpbm91dDEsLTB4MjAoJG91dCkK KysJbW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisrCW1vdnVwcwkkaW5vdXQyLC0weDEw KCRvdXQpCisrCWphCS5MZWNiX2RlY19sb29wMworKworKy5MZWNiX2RlY190YWlsOgorKwlhZGQJ XCQweDQwLCRsZW4KKysJanoJLkxlY2JfcmV0CisrCisrCWNtcAlcJDB4MTAsJGxlbgorKwltb3Z1 cHMJKCRpbnApLCRpbm91dDAKKysJamUJLkxlY2JfZGVjX29uZQorKwljbXAJXCQweDIwLCRsZW4K KysJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQorKwlqZQkuTGVjYl9kZWNfdHdvCisrCWNtcAlc JDB4MzAsJGxlbgorKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCWplCS5MZWNiX2RlY190 aHJlZQorKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisrCWNhbGwJX2Flc25pX2RlY3J5cHQ0 CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisr CW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKysJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQor KwlqbXAJLkxlY2JfcmV0CisrLmFsaWduCTE2CisrLkxlY2JfZGVjX29uZToKKytfX18KKysJJmFl c25pX2dlbmVyYXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJbW92 dXBzCSRpbm91dDAsKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysuYWxpZ24JMTYKKysuTGVjYl9k ZWNfdHdvOgorKwljYWxsCV9hZXNuaV9kZWNyeXB0MworKwltb3Z1cHMJJGlub3V0MCwoJG91dCkK KysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0CisrLmFsaWduCTE2 CisrLkxlY2JfZGVjX3RocmVlOgorKwljYWxsCV9hZXNuaV9kZWNyeXB0MworKwltb3Z1cHMJJGlu b3V0MCwoJG91dCkKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwltb3Z1cHMJJGlub3V0 MiwweDIwKCRvdXQpCisrCisrLkxlY2JfcmV0OgorKwlyZXQKKysuc2l6ZQlhZXNuaV9lY2JfZW5j cnlwdCwuLWFlc25pX2VjYl9lbmNyeXB0CisrX19fCisrfQorKwwKKysjIHZvaWQgJFBSRUZJWF9j YmNfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLCB2b2lkICpvdXQsCisrIwkJCSAgICBzaXplX3Qg bGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisrIwkJCSAgICB1bnNpZ25lZCBjaGFyICppdnAs Y29uc3QgaW50IGVuYyk7CisrJHJlc2VydmVkID0gJHdpbjY0PzB4NDA6LTB4MTg7CSMgdXNlZCBp biBkZWNyeXB0CisrJGNvZGUuPTw8X19fOworKy5nbG9ibAkke1BSRUZJWH1fY2JjX2VuY3J5cHQK KysudHlwZQkke1BSRUZJWH1fY2JjX2VuY3J5cHQsXEBmdW5jdGlvbiw2CisrLmFsaWduCTE2Cisr JHtQUkVGSVh9X2NiY19lbmNyeXB0OgorKwl0ZXN0CSRsZW4sJGxlbgkJIyBjaGVjayBsZW5ndGgK KysJanoJLkxjYmNfcmV0CisrCisrCW1vdgkyNDAoJGtleSksJHJuZHNfCSMgcHVsbCAkcm91bmRz CisrCW1vdgkka2V5LCRrZXlfCQkjIGJhY2t1cCAka2V5CisrCXRlc3QJJXI5ZCwlcjlkCQkjIDZ0 aCBhcmd1bWVudAorKwlqegkuTGNiY19kZWNyeXB0CisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBDQkMgRU5DUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisrCW1vdnVw cwkoJGl2cCksJGlub3V0MAkJIyBsb2FkIGl2IGFzIGluaXRpYWwgc3RhdGUKKysJY21wCVwkMTYs JGxlbgorKwltb3YJJHJuZHNfLCRyb3VuZHMKKysJamIJLkxjYmNfZW5jX3RhaWwKKysJc3ViCVwk MTYsJGxlbgorKwlqbXAJLkxjYmNfZW5jX2xvb3AKKysuYWxpZ24gMTYKKysuTGNiY19lbmNfbG9v cDoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQxCQkjIGxvYWQgaW5wdXQKKysJbGVhCTE2KCRpbnAp LCRpbnAKKysJcHhvcgkkaW5vdXQxLCRpbm91dDAKKytfX18KKysJJmFlc25pX2dlbmVyYXRlMSgi ZW5jIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJc3ViCVwkMTYsJGxlbgorKwls ZWEJMTYoJG91dCksJG91dAorKwltb3YJJHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9yZSAkcm91bmRz CisrCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQorKwltb3Z1cHMJJGlub3V0MCwtMTYo JG91dCkJIyBzdG9yZSBvdXRwdXQKKysJam5jCS5MY2JjX2VuY19sb29wCisrCWFkZAlcJDE2LCRs ZW4KKysJam56CS5MY2JjX2VuY190YWlsCisrCW1vdnVwcwkkaW5vdXQwLCgkaXZwKQorKwlqbXAJ LkxjYmNfcmV0CisrCisrLkxjYmNfZW5jX3RhaWw6CisrCW1vdgkkbGVuLCVyY3gJIyB6YXBzICRr ZXkKKysJeGNoZwkkaW5wLCRvdXQJIyAkaW5wIGlzICVyc2kgYW5kICRvdXQgaXMgJXJkaSBub3cK KysJLmxvbmcJMHg5MDY2QTRGMwkjIHJlcCBtb3ZzYgorKwltb3YJXCQxNiwlZWN4CSMgemVybyB0 YWlsCisrCXN1YgkkbGVuLCVyY3gKKysJeG9yCSVlYXgsJWVheAorKwkubG9uZwkweDkwNjZBQUYz CSMgcmVwIHN0b3NiCisrCWxlYQktMTYoJXJkaSksJXJkaQkjIHJld2luZCAkb3V0IGJ5IDEgYmxv Y2sKKysJbW92CSRybmRzXywkcm91bmRzCSMgcmVzdG9yZSAkcm91bmRzCisrCW1vdgklcmRpLCVy c2kJIyAkaW5wIGFuZCAkb3V0IGFyZSB0aGUgc2FtZQorKwltb3YJJGtleV8sJGtleQkjIHJlc3Rv cmUgJGtleQorKwl4b3IJJGxlbiwkbGVuCSMgbGVuPTE2CisrCWptcAkuTGNiY19lbmNfbG9vcAkj IG9uZSBtb3JlIHNwaW4KKysMIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDQkMgREVDUllQ VCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisrLmFsaWduCTE2CisrLkxjYmNfZGVj cnlwdDoKKytfX18KKyskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisrCWxlYQktMHg1OCglcnNw KSwlcnNwCisrCW1vdmFwcwkleG1tNiwoJXJzcCkKKysJbW92YXBzCSV4bW03LDB4MTAoJXJzcCkK KysJbW92YXBzCSV4bW04LDB4MjAoJXJzcCkKKysJbW92YXBzCSV4bW05LDB4MzAoJXJzcCkKKysu TGNiY19kZWNyeXB0X2JvZHk6CisrX19fCisrJGNvZGUuPTw8X19fOworKwltb3Z1cHMJKCRpdnAp LCRpdgorKwlzdWIJXCQweDQwLCRsZW4KKysJbW92CSRybmRzXywkcm91bmRzCisrCWpiZQkuTGNi Y19kZWNfdGFpbAorKwlqbXAJLkxjYmNfZGVjX2xvb3AzCisrLmFsaWduIDE2CisrLkxjYmNfZGVj X2xvb3AzOgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKysJbW92dXBzCTB4MTAoJGlucCksJGlu b3V0MQorKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCW1vdmFwcwkkaW5vdXQwLCRpbjAK KysJbW92YXBzCSRpbm91dDEsJGluMQorKwltb3ZhcHMJJGlub3V0MiwkaW4yCisrCWNhbGwJX2Fl c25pX2RlY3J5cHQzCisrCXN1YglcJDB4MzAsJGxlbgorKwlsZWEJMHgzMCgkaW5wKSwkaW5wCisr CWxlYQkweDMwKCRvdXQpLCRvdXQKKysJcHhvcgkkaXYsJGlub3V0MAorKwlweG9yCSRpbjAsJGlu b3V0MQorKwltb3ZhcHMJJGluMiwkaXYKKysJcHhvcgkkaW4xLCRpbm91dDIKKysJbW92dXBzCSRp bm91dDAsLTB4MzAoJG91dCkKKysJbW92CSRybmRzXywkcm91bmRzCSMgcmVzdG9yZSAkcm91bmRz CisrCW1vdnVwcwkkaW5vdXQxLC0weDIwKCRvdXQpCisrCW1vdgkka2V5Xywka2V5CSMgcmVzdG9y ZSAka2V5CisrCW1vdnVwcwkkaW5vdXQyLC0weDEwKCRvdXQpCisrCWphCS5MY2JjX2RlY19sb29w MworKworKy5MY2JjX2RlY190YWlsOgorKwlhZGQJXCQweDQwLCRsZW4KKysJbW92dXBzCSRpdiwo JGl2cCkKKysJanoJLkxjYmNfZGVjX3JldAorKworKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKysJ Y21wCVwkMHgxMCwkbGVuCisrCW1vdmFwcwkkaW5vdXQwLCRpbjAKKysJamJlCS5MY2JjX2RlY19v bmUKKysJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQorKwljbXAJXCQweDIwLCRsZW4KKysJbW92 YXBzCSRpbm91dDEsJGluMQorKwlqYmUJLkxjYmNfZGVjX3R3bworKwltb3Z1cHMJMHgyMCgkaW5w KSwkaW5vdXQyCisrCWNtcAlcJDB4MzAsJGxlbgorKwltb3ZhcHMJJGlub3V0MiwkaW4yCisrCWpi ZQkuTGNiY19kZWNfdGhyZWUKKysJbW92dXBzCTB4MzAoJGlucCksJGlub3V0MworKwljYWxsCV9h ZXNuaV9kZWNyeXB0NAorKwlweG9yCSRpdiwkaW5vdXQwCisrCW1vdnVwcwkweDMwKCRpbnApLCRp dgorKwlweG9yCSRpbjAsJGlub3V0MQorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJcHhvcgkk aW4xLCRpbm91dDIKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwlweG9yCSRpbjIsJGlu b3V0MworKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisrCW1vdmFwcwkkaW5vdXQzLCRpbm91 dDAKKysJbGVhCTB4MzAoJG91dCksJG91dAorKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVk CisrLmFsaWduCTE2CisrLkxjYmNfZGVjX29uZToKKytfX18KKysJJmFlc25pX2dlbmVyYXRlMSgi ZGVjIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJcHhvcgkkaXYsJGlub3V0MAor Kwltb3ZhcHMJJGluMCwkaXYKKysJam1wCS5MY2JjX2RlY190YWlsX2NvbGxlY3RlZAorKy5hbGln bgkxNgorKy5MY2JjX2RlY190d286CisrCWNhbGwJX2Flc25pX2RlY3J5cHQzCisrCXB4b3IJJGl2 LCRpbm91dDAKKysJcHhvcgkkaW4wLCRpbm91dDEKKysJbW92dXBzCSRpbm91dDAsKCRvdXQpCisr CW1vdmFwcwkkaW4xLCRpdgorKwltb3ZhcHMJJGlub3V0MSwkaW5vdXQwCisrCWxlYQkweDEwKCRv dXQpLCRvdXQKKysJam1wCS5MY2JjX2RlY190YWlsX2NvbGxlY3RlZAorKy5hbGlnbgkxNgorKy5M Y2JjX2RlY190aHJlZToKKysJY2FsbAlfYWVzbmlfZGVjcnlwdDMKKysJcHhvcgkkaXYsJGlub3V0 MAorKwlweG9yCSRpbjAsJGlub3V0MQorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJcHhvcgkk aW4xLCRpbm91dDIKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwltb3ZhcHMJJGluMiwk aXYKKysJbW92YXBzCSRpbm91dDIsJGlub3V0MAorKwlsZWEJMHgyMCgkb3V0KSwkb3V0CisrCWpt cAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKysuYWxpZ24JMTYKKysuTGNiY19kZWNfdGFpbF9j b2xsZWN0ZWQ6CisrCWFuZAlcJDE1LCRsZW4KKysJbW92dXBzCSRpdiwoJGl2cCkKKysJam56CS5M Y2JjX2RlY190YWlsX3BhcnRpYWwKKysJbW92dXBzCSRpbm91dDAsKCRvdXQpCisrCWptcAkuTGNi Y19kZWNfcmV0CisrLkxjYmNfZGVjX3RhaWxfcGFydGlhbDoKKysJbW92YXBzCSRpbm91dDAsJHJl c2VydmVkKCVyc3ApCisrCW1vdgkkb3V0LCVyZGkKKysJbW92CSRsZW4sJXJjeAorKwlsZWEJJHJl c2VydmVkKCVyc3ApLCVyc2kKKysJLmxvbmcJMHg5MDY2QTRGMwkjIHJlcCBtb3ZzYgorKworKy5M Y2JjX2RlY19yZXQ6CisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworKwltb3ZhcHMJ KCVyc3ApLCV4bW02CisrCW1vdmFwcwkweDEwKCVyc3ApLCV4bW03CisrCW1vdmFwcwkweDIwKCVy c3ApLCV4bW04CisrCW1vdmFwcwkweDMwKCVyc3ApLCV4bW05CisrCWxlYQkweDU4KCVyc3ApLCVy c3AKKytfX18KKyskY29kZS49PDxfX187CisrLkxjYmNfcmV0OgorKwlyZXQKKysuc2l6ZQkke1BS RUZJWH1fY2JjX2VuY3J5cHQsLi0ke1BSRUZJWH1fY2JjX2VuY3J5cHQKKytfX18KKysMCisrIyBp bnQgJFBSRUZJWF9zZXRfW2VufGRlXWNyeXB0X2tleSAoY29uc3QgdW5zaWduZWQgY2hhciAqdXNl cktleSwKKysjCQkJCWludCBiaXRzLCBBRVNfS0VZICprZXkpCisreyBteSAoJGlucCwkYml0cywk a2V5KSA9IEBfNGFyZ3M7CisrICAkYml0cyA9fiBzLyVyLyVlLzsKKysKKyskY29kZS49PDxfX187 CisrLmdsb2JsCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkKKysudHlwZQkke1BSRUZJWH1fc2V0 X2RlY3J5cHRfa2V5LFxAYWJpLW9tbmlwb3RlbnQKKysuYWxpZ24JMTYKKyske1BSRUZJWH1fc2V0 X2RlY3J5cHRfa2V5OgorKwkuYnl0ZQkweDQ4LDB4ODMsMHhFQywweDA4CSMgc3ViIHJzcCw4Cisr CWNhbGwJX2Flc25pX3NldF9lbmNyeXB0X2tleQorKwlzaGwJXCQ0LCRiaXRzCQkjIHJvdW5kcy0x IGFmdGVyIF9hZXNuaV9zZXRfZW5jcnlwdF9rZXkKKysJdGVzdAklZWF4LCVlYXgKKysJam56CS5M ZGVjX2tleV9yZXQKKysJbGVhCTE2KCRrZXksJGJpdHMpLCRpbnAJIyBwb2ludHMgYXQgdGhlIGVu ZCBvZiBrZXkgc2NoZWR1bGUKKysKKysJJG1vdmtleQkoJGtleSksJXhtbTAJCSMganVzdCBzd2Fw CisrCSRtb3ZrZXkJKCRpbnApLCV4bW0xCisrCSRtb3ZrZXkJJXhtbTAsKCRpbnApCisrCSRtb3Zr ZXkJJXhtbTEsKCRrZXkpCisrCWxlYQkxNigka2V5KSwka2V5CisrCWxlYQktMTYoJGlucCksJGlu cAorKworKy5MZGVjX2tleV9pbnZlcnNlOgorKwkkbW92a2V5CSgka2V5KSwleG1tMAkJIyBzd2Fw IGFuZCBpbnZlcnNlCisrCSRtb3ZrZXkJKCRpbnApLCV4bW0xCisrCWFlc2ltYwkleG1tMCwleG1t MAorKwlhZXNpbWMJJXhtbTEsJXhtbTEKKysJbGVhCTE2KCRrZXkpLCRrZXkKKysJbGVhCS0xNigk aW5wKSwkaW5wCisrCWNtcAkka2V5LCRpbnAKKysJJG1vdmtleQkleG1tMCwxNigkaW5wKQorKwkk bW92a2V5CSV4bW0xLC0xNigka2V5KQorKwlqYQkuTGRlY19rZXlfaW52ZXJzZQorKworKwkkbW92 a2V5CSgka2V5KSwleG1tMAkJIyBpbnZlcnNlIG1pZGRsZQorKwlhZXNpbWMJJXhtbTAsJXhtbTAK KysJJG1vdmtleQkleG1tMCwoJGlucCkKKysuTGRlY19rZXlfcmV0OgorKwlhZGQJXCQ4LCVyc3AK KysJcmV0CisrLkxTRUhfZW5kX3NldF9kZWNyeXB0X2tleToKKysuc2l6ZQkke1BSRUZJWH1fc2V0 X2RlY3J5cHRfa2V5LC4tJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleQorK19fXworKwwKKysjIFRo aXMgaXMgYmFzZWQgb24gc3VibWlzc2lvbiBieQorKyMKKysjCUh1YW5nIFlpbmcgPHlpbmcuaHVh bmdAaW50ZWwuY29tPgorKyMJVmlub2RoIEdvcGFsIDx2aW5vZGguZ29wYWxAaW50ZWwuY29tPgor KyMJS2FocmFtYW4gQWtkZW1pcgorKyMKKysjIEFncmVzc2l2ZWx5IG9wdGltaXplZCBpbiByZXNw ZWN0IHRvIGFlc2tleWdlbmFzc2lzdCdzIGNyaXRpY2FsIHBhdGgKKysjIGFuZCBpcyBjb250YWlu ZWQgaW4gJXhtbTAtNSB0byBtZWV0IFdpbjY0IEFCSSByZXF1aXJlbWVudC4KKysjCisrJGNvZGUu PTw8X19fOworKy5nbG9ibAkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5CisrLnR5cGUJJHtQUkVG SVh9X3NldF9lbmNyeXB0X2tleSxcQGFiaS1vbW5pcG90ZW50CisrLmFsaWduCTE2CisrJHtQUkVG SVh9X3NldF9lbmNyeXB0X2tleToKKytfYWVzbmlfc2V0X2VuY3J5cHRfa2V5OgorKwkuYnl0ZQkw eDQ4LDB4ODMsMHhFQywweDA4CSMgc3ViIHJzcCw4CisrCXRlc3QJJGlucCwkaW5wCisrCW1vdglc JC0xLCVyYXgKKysJanoJLkxlbmNfa2V5X3JldAorKwl0ZXN0CSRrZXksJGtleQorKwlqegkuTGVu Y19rZXlfcmV0CisrCisrCW1vdnVwcwkoJGlucCksJXhtbTAJCSMgcHVsbCBmaXJzdCAxMjggYml0 cyBvZiAqdXNlcktleQorKwlweG9yCSV4bW00LCV4bW00CQkjIGxvdyBkd29yZCBvZiB4bW00IGlz IGFzc3VtZWQgMAorKwlsZWEJMTYoJGtleSksJXJheAorKwljbXAJXCQyNTYsJGJpdHMKKysJamUJ LkwxNHJvdW5kcworKwljbXAJXCQxOTIsJGJpdHMKKysJamUJLkwxMnJvdW5kcworKwljbXAJXCQx MjgsJGJpdHMKKysJam5lCS5MYmFkX2tleWJpdHMKKysKKysuTDEwcm91bmRzOgorKwltb3YJXCQ5 LCRiaXRzCQkJIyAxMCByb3VuZHMgZm9yIDEyOC1iaXQga2V5CisrCSRtb3ZrZXkJJXhtbTAsKCRr ZXkpCQkJIyByb3VuZCAwCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMCwleG1tMQkjIHJv dW5kIDEKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOF9jb2xkCisrCWFlc2tleWdlbmFzc2lz dAlcJDB4MiwleG1tMCwleG1tMQkjIHJvdW5kIDIKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEy OAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTAsJXhtbTEJIyByb3VuZCAzCisrCWNhbGwJ CS5Ma2V5X2V4cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0wLCV4bW0x CSMgcm91bmQgNAorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisrCWFlc2tleWdlbmFzc2lz dAlcJDB4MTAsJXhtbTAsJXhtbTEJIyByb3VuZCA1CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8x MjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwleG1tMCwleG1tMQkjIHJvdW5kIDYKKysJY2Fs bAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0wLCV4 bW0xCSMgcm91bmQgNworKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisrCWFlc2tleWdlbmFz c2lzdAlcJDB4ODAsJXhtbTAsJXhtbTEJIyByb3VuZCA4CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lv bl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxYiwleG1tMCwleG1tMQkjIHJvdW5kIDkKKysJ Y2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDM2LCV4bW0w LCV4bW0xCSMgcm91bmQgMTAKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorKwkkbW92a2V5 CSV4bW0wLCglcmF4KQorKwltb3YJJGJpdHMsODAoJXJheCkJIyAyNDAoJXJkeCkKKysJeG9yCSVl YXgsJWVheAorKwlqbXAJLkxlbmNfa2V5X3JldAorKworKy5hbGlnbgkxNgorKy5MMTJyb3VuZHM6 CisrCW1vdnEJMTYoJGlucCksJXhtbTIJCQkjIHJlbWFpbmluZyAxLzMgb2YgKnVzZXJLZXkKKysJ bW92CVwkMTEsJGJpdHMJCQkjIDEyIHJvdW5kcyBmb3IgMTkyCisrCSRtb3ZrZXkJJXhtbTAsKCRr ZXkpCQkJIyByb3VuZCAwCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMiwleG1tMQkjIHJv dW5kIDEsMgorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYV9jb2xkCisrCWFlc2tleWdlbmFz c2lzdAlcJDB4MiwleG1tMiwleG1tMQkjIHJvdW5kIDIsMworKwljYWxsCQkuTGtleV9leHBhbnNp b25fMTkyYgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTIsJXhtbTEJIyByb3VuZCA0LDUK KysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4 bW0yLCV4bW0xCSMgcm91bmQgNSw2CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJiCisrCWFl c2tleWdlbmFzc2lzdAlcJDB4MTAsJXhtbTIsJXhtbTEJIyByb3VuZCA3LDgKKysJY2FsbAkJLkxr ZXlfZXhwYW5zaW9uXzE5MmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwleG1tMiwleG1tMQkj IHJvdW5kIDgsOQorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYgorKwlhZXNrZXlnZW5hc3Np c3QJXCQweDQwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTAsMTEKKysJY2FsbAkJLkxrZXlfZXhwYW5z aW9uXzE5MmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4MCwleG1tMiwleG1tMQkjIHJvdW5kIDEx LDEyCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJiCisrCSRtb3ZrZXkJJXhtbTAsKCVyYXgp CisrCW1vdgkkYml0cyw0OCglcmF4KQkjIDI0MCglcmR4KQorKwl4b3IJJXJheCwgJXJheAorKwlq bXAJLkxlbmNfa2V5X3JldAorKworKy5hbGlnbgkxNgorKy5MMTRyb3VuZHM6CisrCW1vdnVwcwkx NigkaW5wKSwleG1tMgkJCSMgcmVtYW5pbmcgaGFsZiBvZiAqdXNlcktleQorKwltb3YJXCQxMywk Yml0cwkJCSMgMTQgcm91bmRzIGZvciAyNTYKKysJbGVhCTE2KCVyYXgpLCVyYXgKKysJJG1vdmtl eQkleG1tMCwoJGtleSkJCQkjIHJvdW5kIDAKKysJJG1vdmtleQkleG1tMiwxNigka2V5KQkJCSMg cm91bmQgMQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEsJXhtbTIsJXhtbTEJIyByb3VuZCAyCisr CWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhX2NvbGQKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgx LCV4bW0wLCV4bW0xCSMgcm91bmQgMworKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgorKwlh ZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTIsJXhtbTEJIyByb3VuZCA0CisrCWNhbGwJCS5Ma2V5 X2V4cGFuc2lvbl8yNTZhCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MiwleG1tMCwleG1tMQkjIHJv dW5kIDUKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmIKKysJYWVza2V5Z2VuYXNzaXN0CVwk MHg0LCV4bW0yLCV4bW0xCSMgcm91bmQgNgorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YQor KwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTAsJXhtbTEJIyByb3VuZCA3CisrCWNhbGwJCS5M a2V5X2V4cGFuc2lvbl8yNTZiCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4OCwleG1tMiwleG1tMQkj IHJvdW5kIDgKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKKysJYWVza2V5Z2VuYXNzaXN0 CVwkMHg4LCV4bW0wLCV4bW0xCSMgcm91bmQgOQorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2 YgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTAKKysJY2Fs bAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxMCwleG1tMCwl eG1tMQkjIHJvdW5kIDExCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisrCWFlc2tleWdl bmFzc2lzdAlcJDB4MjAsJXhtbTIsJXhtbTEJIyByb3VuZCAxMgorKwljYWxsCQkuTGtleV9leHBh bnNpb25fMjU2YQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0wLCV4bW0xCSMgcm91bmQg MTMKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmIKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg0 MCwleG1tMiwleG1tMQkjIHJvdW5kIDE0CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisr CSRtb3ZrZXkJJXhtbTAsKCVyYXgpCisrCW1vdgkkYml0cywxNiglcmF4KQkjIDI0MCglcmR4KQor Kwl4b3IJJXJheCwlcmF4CisrCWptcAkuTGVuY19rZXlfcmV0CisrCisrLmFsaWduCTE2CisrLkxi YWRfa2V5Yml0czoKKysJbW92CVwkLTIsJXJheAorKy5MZW5jX2tleV9yZXQ6CisrCWFkZAlcJDgs JXJzcAorKwlyZXQKKysuTFNFSF9lbmRfc2V0X2VuY3J5cHRfa2V5OgorKwwKKysuYWxpZ24JMTYK KysuTGtleV9leHBhbnNpb25fMTI4OgorKwkkbW92a2V5CSV4bW0wLCglcmF4KQorKwlsZWEJMTYo JXJheCksJXJheAorKy5Ma2V5X2V4cGFuc2lvbl8xMjhfY29sZDoKKysJc2h1ZnBzCVwkMGIwMDAx MDAwMCwleG1tMCwleG1tNAorKwlweG9yCSV4bW00LCAleG1tMAorKwlzaHVmcHMJXCQwYjEwMDAx MTAwLCV4bW0wLCV4bW00CisrCXB4b3IJJXhtbTQsICV4bW0wCisrCXBzaHVmZAlcJDBiMTExMTEx MTEsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRoCisrCXB4b3IJJXhtbTEsJXhtbTAKKysJcmV0 CisrCisrLmFsaWduIDE2CisrLkxrZXlfZXhwYW5zaW9uXzE5MmE6CisrCSRtb3ZrZXkJJXhtbTAs KCVyYXgpCisrCWxlYQkxNiglcmF4KSwlcmF4CisrLkxrZXlfZXhwYW5zaW9uXzE5MmFfY29sZDoK KysJbW92YXBzCSV4bW0yLCAleG1tNQorKy5Ma2V5X2V4cGFuc2lvbl8xOTJiX3dhcm06CisrCXNo dWZwcwlcJDBiMDAwMTAwMDAsJXhtbTAsJXhtbTQKKysJbW92YXBzCSV4bW0yLCV4bW0zCisrCXB4 b3IJJXhtbTQsJXhtbTAKKysJc2h1ZnBzCVwkMGIxMDAwMTEwMCwleG1tMCwleG1tNAorKwlwc2xs ZHEJXCQ0LCV4bW0zCisrCXB4b3IJJXhtbTQsJXhtbTAKKysJcHNodWZkCVwkMGIwMTAxMDEwMSwl eG1tMSwleG1tMQkjIGNyaXRpY2FsIHBhdGgKKysJcHhvcgkleG1tMywleG1tMgorKwlweG9yCSV4 bW0xLCV4bW0wCisrCXBzaHVmZAlcJDBiMTExMTExMTEsJXhtbTAsJXhtbTMKKysJcHhvcgkleG1t MywleG1tMgorKwlyZXQKKysKKysuYWxpZ24gMTYKKysuTGtleV9leHBhbnNpb25fMTkyYjoKKysJ bW92YXBzCSV4bW0wLCV4bW0zCisrCXNodWZwcwlcJDBiMDEwMDAxMDAsJXhtbTAsJXhtbTUKKysJ JG1vdmtleQkleG1tNSwoJXJheCkKKysJc2h1ZnBzCVwkMGIwMTAwMTExMCwleG1tMiwleG1tMwor KwkkbW92a2V5CSV4bW0zLDE2KCVyYXgpCisrCWxlYQkzMiglcmF4KSwlcmF4CisrCWptcAkuTGtl eV9leHBhbnNpb25fMTkyYl93YXJtCisrCisrLmFsaWduCTE2CisrLkxrZXlfZXhwYW5zaW9uXzI1 NmE6CisrCSRtb3ZrZXkJJXhtbTIsKCVyYXgpCisrCWxlYQkxNiglcmF4KSwlcmF4CisrLkxrZXlf ZXhwYW5zaW9uXzI1NmFfY29sZDoKKysJc2h1ZnBzCVwkMGIwMDAxMDAwMCwleG1tMCwleG1tNAor KwlweG9yCSV4bW00LCV4bW0wCisrCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTAsJXhtbTQKKysJ cHhvcgkleG1tNCwleG1tMAorKwlwc2h1ZmQJXCQwYjExMTExMTExLCV4bW0xLCV4bW0xCSMgY3Jp dGljYWwgcGF0aAorKwlweG9yCSV4bW0xLCV4bW0wCisrCXJldAorKworKy5hbGlnbiAxNgorKy5M a2V5X2V4cGFuc2lvbl8yNTZiOgorKwkkbW92a2V5CSV4bW0wLCglcmF4KQorKwlsZWEJMTYoJXJh eCksJXJheAorKworKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0yLCV4bW00CisrCXB4b3IJJXht bTQsJXhtbTIKKysJc2h1ZnBzCVwkMGIxMDAwMTEwMCwleG1tMiwleG1tNAorKwlweG9yCSV4bW00 LCV4bW0yCisrCXBzaHVmZAlcJDBiMTAxMDEwMTAsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRo CisrCXB4b3IJJXhtbTEsJXhtbTIKKysJcmV0CisrLnNpemUJJHtQUkVGSVh9X3NldF9lbmNyeXB0 X2tleSwuLSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKKytfX18KKyt9CisrDAorKyRjb2RlLj08 PF9fXzsKKysuYXNjaXogICJBRVMgZm9yIEludGVsIEFFUy1OSSwgQ1JZUFRPR0FNUyBieSA8YXBw cm9cQG9wZW5zc2wub3JnPiIKKysuYWxpZ24JNjQKKytfX18KKysKKysjIEVYQ0VQVElPTl9ESVNQ T1NJVElPTiBoYW5kbGVyIChFWENFUFRJT05fUkVDT1JEICpyZWMsVUxPTkc2NCBmcmFtZSwKKysj CQlDT05URVhUICpjb250ZXh0LERJU1BBVENIRVJfQ09OVEVYVCAqZGlzcCkKKytpZiAoJHdpbjY0 KSB7CisrJHJlYz0iJXJjeCI7CisrJGZyYW1lPSIlcmR4IjsKKyskY29udGV4dD0iJXI4IjsKKysk ZGlzcD0iJXI5IjsKKysKKyskY29kZS49PDxfX187CisrLmV4dGVybglfX2ltcF9SdGxWaXJ0dWFs VW53aW5kCisrLnR5cGUJY2JjX3NlX2hhbmRsZXIsXEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkx NgorK2NiY19zZV9oYW5kbGVyOgorKwlwdXNoCSVyc2kKKysJcHVzaAklcmRpCisrCXB1c2gJJXJi eAorKwlwdXNoCSVyYnAKKysJcHVzaAklcjEyCisrCXB1c2gJJXIxMworKwlwdXNoCSVyMTQKKysJ cHVzaAklcjE1CisrCXB1c2hmcQorKwlzdWIJXCQ2NCwlcnNwCisrCisrCW1vdgkxNTIoJGNvbnRl eHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAorKwltb3YJMjQ4KCRjb250ZXh0KSwlcmJ4CSMg cHVsbCBjb250ZXh0LT5SaXAKKysKKysJbGVhCS5MY2JjX2RlY3J5cHQoJXJpcCksJXIxMAorKwlj bXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDwicHJvbG9ndWUiIGxhYmVsCisrCWpiCS5MaW5f cHJvbG9ndWUKKysKKysJbGVhCS5MY2JjX2RlY3J5cHRfYm9keSglcmlwKSwlcjEwCisrCWNtcAkl cjEwLCVyYngJCSMgY29udGV4dC0+UmlwPGNiY19kZWNyeXB0X2JvZHkKKysJamIJLkxyZXN0b3Jl X3JheAorKworKwlsZWEJLkxjYmNfcmV0KCVyaXApLCVyMTAKKysJY21wCSVyMTAsJXJieAkJIyBj b250ZXh0LT5SaXA+PSJlcGlsb2d1ZSIgbGFiZWwKKysJamFlCS5MaW5fcHJvbG9ndWUKKysKKysJ bGVhCTAoJXJheCksJXJzaQkJIyB0b3Agb2Ygc3RhY2sKKysJbGVhCTUxMigkY29udGV4dCksJXJk aQkjICZjb250ZXh0LlhtbTYKKysJbW92CVwkOCwlZWN4CQkjIDQqc2l6ZW9mKCV4bW0wKS9zaXpl b2YoJXJheCkKKysJLmxvbmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorKwlsZWEJMHg1 OCglcmF4KSwlcmF4CQkjIGFkanVzdCBzdGFjayBwb2ludGVyCisrCWptcAkuTGluX3Byb2xvZ3Vl CisrCisrLkxyZXN0b3JlX3JheDoKKysJbW92CTEyMCgkY29udGV4dCksJXJheAorKy5MaW5fcHJv bG9ndWU6CisrCW1vdgk4KCVyYXgpLCVyZGkKKysJbW92CTE2KCVyYXgpLCVyc2kKKysJbW92CSVy YXgsMTUyKCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UnNwCisrCW1vdgklcnNpLDE2OCgk Y29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzaQorKwltb3YJJXJkaSwxNzYoJGNvbnRleHQp CSMgcmVzdG9yZSBjb250ZXh0LT5SZGkKKysKKysJam1wCS5MY29tbW9uX3NlaF9leGl0CisrLnNp emUJY2JjX3NlX2hhbmRsZXIsLi1jYmNfc2VfaGFuZGxlcgorKworKy50eXBlCWVjYl9zZV9oYW5k bGVyLFxAYWJpLW9tbmlwb3RlbnQKKysuYWxpZ24JMTYKKytlY2Jfc2VfaGFuZGxlcjoKKysJcHVz aAklcnNpCisrCXB1c2gJJXJkaQorKwlwdXNoCSVyYngKKysJcHVzaAklcmJwCisrCXB1c2gJJXIx MgorKwlwdXNoCSVyMTMKKysJcHVzaAklcjE0CisrCXB1c2gJJXIxNQorKwlwdXNoZnEKKysJc3Vi CVwkNjQsJXJzcAorKworKwltb3YJMTUyKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5S c3AKKysJbW92CTgoJXJheCksJXJkaQorKwltb3YJMTYoJXJheCksJXJzaQorKwltb3YJJXJzaSwx NjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc2kKKysJbW92CSVyZGksMTc2KCRjb250 ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmRpCisrCisrLkxjb21tb25fc2VoX2V4aXQ6CisrCisr CW1vdgk0MCgkZGlzcCksJXJkaQkJIyBkaXNwLT5Db250ZXh0UmVjb3JkCisrCW1vdgkkY29udGV4 dCwlcnNpCQkjIGNvbnRleHQKKysJbW92CVwkMTU0LCVlY3gJCSMgc2l6ZW9mKENPTlRFWFQpCisr CS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKKysKKysJbW92CSRkaXNwLCVyc2kK KysJeG9yCSVyY3gsJXJjeAkJIyBhcmcxLCBVTldfRkxBR19OSEFORExFUgorKwltb3YJOCglcnNp KSwlcmR4CQkjIGFyZzIsIGRpc3AtPkltYWdlQmFzZQorKwltb3YJMCglcnNpKSwlcjgJCSMgYXJn MywgZGlzcC0+Q29udHJvbFBjCisrCW1vdgkxNiglcnNpKSwlcjkJCSMgYXJnNCwgZGlzcC0+RnVu Y3Rpb25FbnRyeQorKwltb3YJNDAoJXJzaSksJXIxMAkJIyBkaXNwLT5Db250ZXh0UmVjb3JkCisr CWxlYQk1NiglcnNpKSwlcjExCQkjICZkaXNwLT5IYW5kbGVyRGF0YQorKwlsZWEJMjQoJXJzaSks JXIxMgkJIyAmZGlzcC0+RXN0YWJsaXNoZXJGcmFtZQorKwltb3YJJXIxMCwzMiglcnNwKQkJIyBh cmc1CisrCW1vdgklcjExLDQwKCVyc3ApCQkjIGFyZzYKKysJbW92CSVyMTIsNDgoJXJzcCkJCSMg YXJnNworKwltb3YJJXJjeCw1NiglcnNwKQkJIyBhcmc4LCAoTlVMTCkKKysJY2FsbAkqX19pbXBf UnRsVmlydHVhbFVud2luZCglcmlwKQorKworKwltb3YJXCQxLCVlYXgJCSMgRXhjZXB0aW9uQ29u dGludWVTZWFyY2gKKysJYWRkCVwkNjQsJXJzcAorKwlwb3BmcQorKwlwb3AJJXIxNQorKwlwb3AJ JXIxNAorKwlwb3AJJXIxMworKwlwb3AJJXIxMgorKwlwb3AJJXJicAorKwlwb3AJJXJieAorKwlw b3AJJXJkaQorKwlwb3AJJXJzaQorKwlyZXQKKysuc2l6ZQljYmNfc2VfaGFuZGxlciwuLWNiY19z ZV9oYW5kbGVyCisrCisrLnNlY3Rpb24JLnBkYXRhCisrLmFsaWduCTQKKysJLnJ2YQkuTFNFSF9i ZWdpbl8ke1BSRUZJWH1fZWNiX2VuY3J5cHQKKysJLnJ2YQkuTFNFSF9lbmRfJHtQUkVGSVh9X2Vj Yl9lbmNyeXB0CisrCS5ydmEJLkxTRUhfaW5mb19lY2IKKysKKysJLnJ2YQkuTFNFSF9iZWdpbl8k e1BSRUZJWH1fY2JjX2VuY3J5cHQKKysJLnJ2YQkuTFNFSF9lbmRfJHtQUkVGSVh9X2NiY19lbmNy eXB0CisrCS5ydmEJLkxTRUhfaW5mb19jYmMKKysKKysJLnJ2YQkke1BSRUZJWH1fc2V0X2RlY3J5 cHRfa2V5CisrCS5ydmEJLkxTRUhfZW5kX3NldF9kZWNyeXB0X2tleQorKwkucnZhCS5MU0VIX2lu Zm9fa2V5CisrCisrCS5ydmEJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleQorKwkucnZhCS5MU0VI X2VuZF9zZXRfZW5jcnlwdF9rZXkKKysJLnJ2YQkuTFNFSF9pbmZvX2tleQorKy5zZWN0aW9uCS54 ZGF0YQorKy5hbGlnbgk4CisrLkxTRUhfaW5mb19lY2I6CisrCS5ieXRlCTksMCwwLDAKKysJLnJ2 YQllY2Jfc2VfaGFuZGxlcgorKy5MU0VIX2luZm9fY2JjOgorKwkuYnl0ZQk5LDAsMCwwCisrCS5y dmEJY2JjX3NlX2hhbmRsZXIKKysuTFNFSF9pbmZvX2tleToKKysJLmJ5dGUJMHgwMSwweDA0LDB4 MDEsMHgwMAorKwkuYnl0ZQkweDA0LDB4MDIsMHgwMCwweDAwCisrX19fCisrfQorKworK3N1YiBy ZXggeworKyBsb2NhbCAqb3Bjb2RlPXNoaWZ0OworKyBteSAoJGRzdCwkc3JjKT1AXzsKKysKKysg ICBpZiAoJGRzdD49OCB8fCAkc3JjPj04KSB7CisrCSRyZXg9MHg0MDsKKysJJHJleHw9MHgwNCBp ZigkZHN0Pj04KTsKKysJJHJleHw9MHgwMSBpZigkc3JjPj04KTsKKysJcHVzaCBAb3Bjb2RlLCRy ZXg7CisrICAgfQorK30KKysKKytzdWIgYWVzbmkgeworKyAgbXkgJGxpbmU9c2hpZnQ7CisrICBt eSBAb3Bjb2RlPSgweDY2KTsKKysKKysgICAgaWYgKCRsaW5lPX4vKGFlc2tleWdlbmFzc2lzdClc cytcJChbeDAtOWEtZl0rKSxccyoleG1tKFswLTldKyksXHMqJXhtbShbMC05XSspLykgeworKwly ZXgoXEBvcGNvZGUsJDQsJDMpOworKwlwdXNoIEBvcGNvZGUsMHgwZiwweDNhLDB4ZGY7CisrCXB1 c2ggQG9wY29kZSwweGMwfCgkMyY3KXwoKCQ0JjcpPDwzKTsJIyBNb2RSL00KKysJbXkgJGM9JDI7 CisrCXB1c2ggQG9wY29kZSwkYz1+L14wLz9vY3QoJGMpOiRjOworKwlyZXR1cm4gIi5ieXRlXHQi LmpvaW4oJywnLEBvcGNvZGUpOworKyAgICB9CisrICAgIGVsc2lmICgkbGluZT1+LyhhZXNbYS16 XSspXHMrJXhtbShbMC05XSspLFxzKiV4bW0oWzAtOV0rKS8pIHsKKysJbXkgJW9wY29kZWxldCA9 ICgKKysJCSJhZXNpbWMiID0+IDB4ZGIsCisrCQkiYWVzZW5jIiA9PiAweGRjLAkiYWVzZW5jbGFz dCIgPT4gMHhkZCwKKysJCSJhZXNkZWMiID0+IDB4ZGUsCSJhZXNkZWNsYXN0IiA9PiAweGRmCisr CSk7CisrCXJldHVybiB1bmRlZiBpZiAoIWRlZmluZWQoJG9wY29kZWxldHskMX0pKTsKKysJcmV4 KFxAb3Bjb2RlLCQzLCQyKTsKKysJcHVzaCBAb3Bjb2RlLDB4MGYsMHgzOCwkb3Bjb2RlbGV0eyQx fTsKKysJcHVzaCBAb3Bjb2RlLDB4YzB8KCQyJjcpfCgoJDMmNyk8PDMpOwkjIE1vZFIvTQorKwly ZXR1cm4gIi5ieXRlXHQiLmpvaW4oJywnLEBvcGNvZGUpOworKyAgICB9CisrICAgIHJldHVybiAk bGluZTsKKyt9CisrCisrJGNvZGUgPX4gcy9cYChbXlxgXSopXGAvZXZhbCgkMSkvZ2VtOworKyRj b2RlID1+IHMvXGIoYWVzLioleG1tWzAtOV0rKS4qJC9hZXNuaSgkMSkvZ2VtOworKworK3ByaW50 ICRjb2RlOworKworK2Nsb3NlIFNURE9VVDsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQv Y3J5cHRvL2Flcy9NYWtlZmlsZS5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMv TWFrZWZpbGUKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvTWFrZWZpbGUuYWVz bmkJMjAwOC0xMi0yMyAxMjozMzowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4w LWJldGE0L2NyeXB0by9hZXMvTWFrZWZpbGUJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAg KzAxMDAKK0BAIC01MCw5ICs1MCwxMyBAQCBhZXMtaWE2NC5zOiBhc20vYWVzLWlhNjQuUworIAor IGFlcy01ODYuczoJYXNtL2Flcy01ODYucGwgLi4vcGVybGFzbS94ODZhc20ucGwKKyAJJChQRVJM KSBhc20vYWVzLTU4Ni5wbCAkKFBFUkxBU01fU0NIRU1FKSAkKENGTEFHUykgJChQUk9DRVNTT1Ip ID4gJEAKKythZXNuaS14ODYuczoJYXNtL2Flc25pLXg4Ni5wbCAuLi9wZXJsYXNtL3g4NmFzbS5w bAorKwkkKFBFUkwpIGFzbS9hZXNuaS14ODYucGwgJChQRVJMQVNNX1NDSEVNRSkgJChDRkxBR1Mp ICQoUFJPQ0VTU09SKSA+ICRACisgCisgYWVzLXg4Nl82NC5zOiBhc20vYWVzLXg4Nl82NC5wbAor IAkkKFBFUkwpIGFzbS9hZXMteDg2XzY0LnBsICQoUEVSTEFTTV9TQ0hFTUUpID4gJEAKKythZXNu aS14ODZfNjQuczogYXNtL2Flc25pLXg4Nl82NC5wbAorKwkkKFBFUkwpIGFzbS9hZXNuaS14ODZf NjQucGwgJChQRVJMQVNNX1NDSEVNRSkgPiAkQAorIAorIGFlcy1zcGFyY3Y5LnM6IGFzbS9hZXMt c3BhcmN2OS5wbAorIAkkKFBFUkwpIGFzbS9hZXMtc3BhcmN2OS5wbCAkKENGTEFHUykgPiAkQAor ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ19hZXNuaS5jLmFl c25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdfYWVzbmkuYworLS0tIG9w ZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdfYWVzbmkuYy5hZXNuaQkyMDEwLTAx LTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5 cHRvL2VuZ2luZS9lbmdfYWVzbmkuYwkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEw MAorQEAgLTAsMCArMSw0MTMgQEAKKysvKgorKyAqIFN1cHBvcnQgZm9yIEludGVsIEFFUy1OSSBp bnRydWN0aW9uIHNldAorKyAqICAgQXV0aG9yOiBIdWFuZyBZaW5nIDx5aW5nLmh1YW5nQGludGVs LmNvbT4KKysgKgorKyAqIEludGVsIEFFUy1OSSBpcyBhIG5ldyBzZXQgb2YgU2luZ2xlIEluc3Ry dWN0aW9uIE11bHRpcGxlIERhdGEKKysgKiAoU0lNRCkgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGdv aW5nIHRvIGJlIGludHJvZHVjZWQgaW4gdGhlIG5leHQKKysgKiBnZW5lcmF0aW9uIG9mIEludGVs IHByb2Nlc3NvciwgYXMgb2YgMjAwOS4gVGhlc2UgaW5zdHJ1Y3Rpb25zCisrICogZW5hYmxlIGZh c3QgYW5kIHNlY3VyZSBkYXRhIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24sIHVzaW5nIHRoZQor KyAqIEFkdmFuY2VkIEVuY3J5cHRpb24gU3RhbmRhcmQgKEFFUyksIGRlZmluZWQgYnkgRklQUyBQ dWJsaWNhdGlvbgorKyAqIG51bWJlciAxOTcuICBUaGUgYXJjaGl0ZWN0dXJlIGludHJvZHVjZXMg c2l4IGluc3RydWN0aW9ucyB0aGF0CisrICogb2ZmZXIgZnVsbCBoYXJkd2FyZSBzdXBwb3J0IGZv ciBBRVMuIEZvdXIgb2YgdGhlbSBzdXBwb3J0IGhpZ2gKKysgKiBwZXJmb3JtYW5jZSBkYXRhIGVu Y3J5cHRpb24gYW5kIGRlY3J5cHRpb24sIGFuZCB0aGUgb3RoZXIgdHdvCisrICogaW5zdHJ1Y3Rp b25zIHN1cHBvcnQgdGhlIEFFUyBrZXkgZXhwYW5zaW9uIHByb2NlZHVyZS4KKysgKgorKyAqIFRo ZSB3aGl0ZSBwYXBlciBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOgorKyAqICAgaHR0cDovL3NvZnR3 YXJlY29tbXVuaXR5LmludGVsLmNvbS9pc24vZG93bmxvYWRzL2ludGVsYXZ4L0FFUy1JbnN0cnVj dGlvbnMtU2V0X1dQLnBkZgorKyAqCisrICogVGhpcyBmaWxlIGlzIGJhc2VkIG9uIGVuZ2luZXMv ZV9wYWRsb2NrLmMKKysgKi8KKysKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykg MTk5OS0yMDAxIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAq CisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEu IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLgorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4K KysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlz aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAg c29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6 Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29s a2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNz aW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KKysgKgor KyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBu YW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVu U1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hh dHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6 CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAo aHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVT U0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAor KyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisr ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisr ICoKKysgKiBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0 dGVuIGJ5IEVyaWMgWW91bmcKKysgKiAoZWF5QGNyeXB0c29mdC5jb20pLiAgVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltCisrICogSHVkc29uICh0amhAY3J5cHRz b2Z0LmNvbSkuCisrICoKKysgKi8KKysKKysKKysjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29u Zi5oPgorKworKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX0hXKSAmJiAhZGVmaW5lZChPUEVOU1NM X05PX0hXX0FFU19OSSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19BRVMpCisrCisrI2luY2x1ZGUg PHN0ZGlvLmg+CisrI2luY2x1ZGUgImNyeXB0bGliLmgiCisrI2luY2x1ZGUgPG9wZW5zc2wvZHNv Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXZw Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+ CisrI2luY2x1ZGUgPG9wZW5zc2wvbW9kZXMuaD4KKysKKysvKiBBRVMtTkkgaXMgYXZhaWxhYmxl ICpPTkxZKiBvbiBzb21lIHg4NiBDUFVzLiAgTm90IG9ubHkgdGhhdCBpdAorKyAgIGRvZXNuJ3Qg ZXhpc3QgZWxzZXdoZXJlLCBidXQgaXQgZXZlbiBjYW4ndCBiZSBjb21waWxlZCBvbiBvdGhlcgor KyAgIHBsYXRmb3JtcyEgKi8KKysjdW5kZWYgQ09NUElMRV9IV19BRVNOSQorKyNpZiAoZGVmaW5l ZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBcCisrICAgICBkZWZpbmVkKF9N X0FNRDY0KSB8fCBkZWZpbmVkKF9NX1g2NCkgfHwgXAorKyAgICAgZGVmaW5lZChPUEVOU1NMX0lB MzJfU1NFMikpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQVNNKQorKyNkZWZpbmUgQ09NUElMRV9I V19BRVNOSQorK3N0YXRpYyBFTkdJTkUgKkVOR0lORV9hZXNuaSAodm9pZCk7CisrI2VuZGlmCisr Cisrdm9pZCBFTkdJTkVfbG9hZF9hZXNuaSAodm9pZCkKKyt7CisrLyogT24gbm9uLXg4NiBDUFVz IGl0IGp1c3QgcmV0dXJucy4gKi8KKysjaWZkZWYgQ09NUElMRV9IV19BRVNOSQorKwlFTkdJTkUg KnRvYWRkID0gRU5HSU5FX2Flc25pKCk7CisrCWlmICghdG9hZGQpCisrCQlyZXR1cm47CisrCUVO R0lORV9hZGQgKHRvYWRkKTsKKysJRU5HSU5FX3JlZ2lzdGVyX2NvbXBsZXRlICh0b2FkZCk7Cisr CUVOR0lORV9mcmVlICh0b2FkZCk7CisrCUVSUl9jbGVhcl9lcnJvciAoKTsKKysjZW5kaWYKKyt9 CisrCisrI2lmZGVmIENPTVBJTEVfSFdfQUVTTkkKKytpbnQgYWVzbmlfc2V0X2VuY3J5cHRfa2V5 KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAorKwkJCSAgICAgIEFFU19L RVkgKmtleSk7CisraW50IGFlc25pX3NldF9kZWNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFy ICp1c2VyS2V5LCBpbnQgYml0cywKKysJCQkgICAgICBBRVNfS0VZICprZXkpOworKworK3ZvaWQg YWVzbmlfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0 LAorKwkJICAgICAgIGNvbnN0IEFFU19LRVkgKmtleSk7Cisrdm9pZCBhZXNuaV9kZWNyeXB0KGNv bnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkgICAgICAgY29u c3QgQUVTX0tFWSAqa2V5KTsKKysKKyt2b2lkIGFlc25pX2VjYl9lbmNyeXB0KGNvbnN0IHVuc2ln bmVkIGNoYXIgKmluLAorKwkJCSAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysJCQkgICBzaXplX3Qg bGVuZ3RoLAorKwkJCSAgIGNvbnN0IEFFU19LRVkgKmtleSwKKysJCQkgICBpbnQgZW5jKTsKKyt2 b2lkIGFlc25pX2NiY19lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLAorKwkJCSAgIHVu c2lnbmVkIGNoYXIgKm91dCwKKysJCQkgICBzaXplX3QgbGVuZ3RoLAorKwkJCSAgIGNvbnN0IEFF U19LRVkgKmtleSwKKysJCQkgICB1bnNpZ25lZCBjaGFyICppdmVjLCBpbnQgZW5jKTsKKysKKysv KiBGdW5jdGlvbiBmb3IgRU5HSU5FIGRldGVjdGlvbiBhbmQgY29udHJvbCAqLworK3N0YXRpYyBp bnQgYWVzbmlfaW5pdChFTkdJTkUgKmUpOworKworKy8qIENpcGhlciBTdHVmZiAqLworK3N0YXRp YyBpbnQgYWVzbmlfY2lwaGVycyhFTkdJTkUgKmUsIGNvbnN0IEVWUF9DSVBIRVIgKipjaXBoZXIs CisrCQkJCWNvbnN0IGludCAqKm5pZHMsIGludCBuaWQpOworKworKyNkZWZpbmUgQUVTTklfTUlO X0FMSUdOCTE2CisrI2RlZmluZSBBRVNOSV9BTElHTih4KSBcCisrCSgodm9pZCAqKSgoKHVuc2ln bmVkIGxvbmcpKHgpK0FFU05JX01JTl9BTElHTi0xKSZ+KEFFU05JX01JTl9BTElHTi0xKSkpCisr CisrLyogRW5naW5lIG5hbWVzICovCisrc3RhdGljIGNvbnN0IGNoYXIgICBhZXNuaV9pZFtdID0g ImFlc25pIiwKKysJCSAgICBhZXNuaV9uYW1lW10gPSAiSW50ZWwgQUVTLU5JIGVuZ2luZSIsCisr CQkgICAgbm9fYWVzbmlfbmFtZVtdID0gIkludGVsIEFFUy1OSSBlbmdpbmUgKG5vLWFlc25pKSI7 CisrCisrLyogPT09PT0gRW5naW5lICJtYW5hZ2VtZW50IiBmdW5jdGlvbnMgPT09PT0gKi8KKysK KysjaWYgZGVmaW5lZChfV0lOMzIpCisrdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IElBMzJDQVA7 CisrI2Vsc2UKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBJQTMyQ0FQOworKyNlbmRpZgor KworKy8qIFByZXBhcmUgdGhlIEVOR0lORSBzdHJ1Y3R1cmUgZm9yIHJlZ2lzdHJhdGlvbiAqLwor K3N0YXRpYyBpbnQKKythZXNuaV9iaW5kX2hlbHBlcihFTkdJTkUgKmUpCisreworKwlpbnQgZW5n YWdlOworKwlpZiAoc2l6ZW9mKE9QRU5TU0xfaWEzMmNhcF9QKSA+IDQpIHsKKysJCWVuZ2FnZSA9 IChPUEVOU1NMX2lhMzJjYXBfUCA+PiA1NykgJiAxOworKwl9IGVsc2UgeworKwkJSUEzMkNBUCBP UEVOU1NMX2lhMzJfY3B1aWQodm9pZCk7CisrCQllbmdhZ2UgPSAoT1BFTlNTTF9pYTMyX2NwdWlk KCkgPj4gNTcpICYgMTsKKysJfQorKworKwkvKiBSZWdpc3RlciBldmVyeXRoaW5nIG9yIHJldHVy biB3aXRoIGFuIGVycm9yICovCisrCWlmICghRU5HSU5FX3NldF9pZChlLCBhZXNuaV9pZCkgfHwK KysJICAgICFFTkdJTkVfc2V0X25hbWUoZSwgZW5nYWdlID8gYWVzbmlfbmFtZSA6IG5vX2Flc25p X25hbWUpIHx8CisrCisrCSAgICAhRU5HSU5FX3NldF9pbml0X2Z1bmN0aW9uKGUsIGFlc25pX2lu aXQpIHx8CisrCSAgICAoZW5nYWdlICYmICFFTkdJTkVfc2V0X2NpcGhlcnMgKGUsIGFlc25pX2Np cGhlcnMpKQorKwkgICAgKQorKwkJcmV0dXJuIDA7CisrCisrCS8qIEV2ZXJ5dGhpbmcgbG9va3Mg Z29vZCAqLworKwlyZXR1cm4gMTsKKyt9CisrCisrLyogQ29uc3RydWN0b3IgKi8KKytzdGF0aWMg RU5HSU5FICoKKytFTkdJTkVfYWVzbmkodm9pZCkKKyt7CisrCUVOR0lORSAqZW5nID0gRU5HSU5F X25ldygpOworKworKwlpZiAoIWVuZykgeworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysKKysJaWYg KCFhZXNuaV9iaW5kX2hlbHBlcihlbmcpKSB7CisrCQlFTkdJTkVfZnJlZShlbmcpOworKwkJcmV0 dXJuIE5VTEw7CisrCX0KKysKKysJcmV0dXJuIGVuZzsKKyt9CisrCisrLyogQ2hlY2sgYXZhaWxh YmlsaXR5IG9mIHRoZSBlbmdpbmUgKi8KKytzdGF0aWMgaW50CisrYWVzbmlfaW5pdChFTkdJTkUg KmUpCisreworKwlyZXR1cm4gMTsKKyt9CisrCisrI2lmIGRlZmluZWQoTklEX2Flc18xMjhfY2Zi MTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMTI4X2NmYikKKysjZGVmaW5lIE5JRF9hZXNfMTI4 X2NmYglOSURfYWVzXzEyOF9jZmIxMjgKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChOSURfYWVz XzEyOF9vZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Flc18xMjhfb2ZiKQorKyNkZWZpbmUgTklE X2Flc18xMjhfb2ZiCU5JRF9hZXNfMTI4X29mYjEyOAorKyNlbmRpZgorKworKyNpZiBkZWZpbmVk KE5JRF9hZXNfMTkyX2NmYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzE5Ml9jZmIpCisrI2Rl ZmluZSBOSURfYWVzXzE5Ml9jZmIJTklEX2Flc18xOTJfY2ZiMTI4CisrI2VuZGlmCisrCisrI2lm IGRlZmluZWQoTklEX2Flc18xOTJfb2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMTkyX29m YikKKysjZGVmaW5lIE5JRF9hZXNfMTkyX29mYglOSURfYWVzXzE5Ml9vZmIxMjgKKysjZW5kaWYK KysKKysjaWYgZGVmaW5lZChOSURfYWVzXzI1Nl9jZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Fl c18yNTZfY2ZiKQorKyNkZWZpbmUgTklEX2Flc18yNTZfY2ZiCU5JRF9hZXNfMjU2X2NmYjEyOAor KyNlbmRpZgorKworKyNpZiBkZWZpbmVkKE5JRF9hZXNfMjU2X29mYjEyOCkgJiYgISBkZWZpbmVk IChOSURfYWVzXzI1Nl9vZmIpCisrI2RlZmluZSBOSURfYWVzXzI1Nl9vZmIJTklEX2Flc18yNTZf b2ZiMTI4CisrI2VuZGlmCisrCisrLyogTGlzdCBvZiBzdXBwb3J0ZWQgY2lwaGVycy4gKi8KKytz dGF0aWMgaW50IGFlc25pX2NpcGhlcl9uaWRzW10gPSB7CisrCU5JRF9hZXNfMTI4X2VjYiwKKysJ TklEX2Flc18xMjhfY2JjLAorKwlOSURfYWVzXzEyOF9jZmIsCisrCU5JRF9hZXNfMTI4X29mYiwK KysKKysJTklEX2Flc18xOTJfZWNiLAorKwlOSURfYWVzXzE5Ml9jYmMsCisrCU5JRF9hZXNfMTky X2NmYiwKKysJTklEX2Flc18xOTJfb2ZiLAorKworKwlOSURfYWVzXzI1Nl9lY2IsCisrCU5JRF9h ZXNfMjU2X2NiYywKKysJTklEX2Flc18yNTZfY2ZiLAorKwlOSURfYWVzXzI1Nl9vZmIsCisrfTsK KytzdGF0aWMgaW50IGFlc25pX2NpcGhlcl9uaWRzX251bSA9CisrCShzaXplb2YoYWVzbmlfY2lw aGVyX25pZHMpL3NpemVvZihhZXNuaV9jaXBoZXJfbmlkc1swXSkpOworKworK3R5cGVkZWYgc3Ry dWN0CisreworKwlBRVNfS0VZIGtzOworKwl1bnNpZ25lZCBpbnQgX3BhZDFbM107CisrfSBBRVNO SV9LRVk7CisrCisrc3RhdGljIGludAorK2Flc25pX2luaXRfa2V5KEVWUF9DSVBIRVJfQ1RYICpj dHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJfa2V5LAorKwkJICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKml2LCBpbnQgZW5jKQorK3sKKysJaW50IHJldDsKKysJQUVTX0tFWSAqa2V5ID0gQUVT TklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7CisrCisrCWlmICgoY3R4LT5jaXBoZXItPmZsYWdz ICYgRVZQX0NJUEhfTU9ERSkgPT0gRVZQX0NJUEhfQ0ZCX01PREUKKysJICAgIHx8IChjdHgtPmNp cGhlci0+ZmxhZ3MgJiBFVlBfQ0lQSF9NT0RFKSA9PSBFVlBfQ0lQSF9PRkJfTU9ERQorKwkgICAg fHwgZW5jKQorKwkJcmV0PWFlc25pX3NldF9lbmNyeXB0X2tleSh1c2VyX2tleSwgY3R4LT5rZXlf bGVuICogOCwga2V5KTsKKysJZWxzZQorKwkJcmV0PWFlc25pX3NldF9kZWNyeXB0X2tleSh1c2Vy X2tleSwgY3R4LT5rZXlfbGVuICogOCwga2V5KTsKKysKKysJaWYocmV0IDwgMCkgeworKwkJRVZQ ZXJyKEVWUF9GX0FFU05JX0lOSVRfS0VZLEVWUF9SX0FFU19LRVlfU0VUVVBfRkFJTEVEKTsKKysJ CXJldHVybiAwOworKwl9CisrCisrCXJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IGFlc25p X2NpcGhlcl9lY2IoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAorKwkJ IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sKQorK3sJQUVTX0tFWSAqa2V5ID0g QUVTTklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7CisrCWFlc25pX2VjYl9lbmNyeXB0KGluLCBv dXQsIGlubCwga2V5LCBjdHgtPmVuY3J5cHQpOworKwlyZXR1cm4gMTsKKyt9Cisrc3RhdGljIGlu dCBhZXNuaV9jaXBoZXJfY2JjKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91 dCwKKysJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKKyt7CUFFU19LRVkg KmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOworKwlhZXNuaV9jYmNfZW5jcnlw dChpbiwgb3V0LCBpbmwsIGtleSwKKysJCQkgICAgICBjdHgtPml2LCBjdHgtPmVuY3J5cHQpOwor KwlyZXR1cm4gMTsKKyt9Cisrc3RhdGljIGludCBhZXNuaV9jaXBoZXJfY2ZiKEVWUF9DSVBIRVJf Q1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwKKysJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpp biwgc2l6ZV90IGlubCkKKyt7CUFFU19LRVkgKmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVy X2RhdGEpOworKwlDUllQVE9fY2ZiMTI4X2VuY3J5cHQoaW4sIG91dCwgaW5sLCBrZXksIGN0eC0+ aXYsCisrCQkJCSZjdHgtPm51bSwgY3R4LT5lbmNyeXB0LAorKwkJCQkoYmxvY2sxMjhfZilhZXNu aV9lbmNyeXB0KTsKKysJcmV0dXJuIDE7CisrfQorK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX29m YihFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkgY29uc3QgdW5z aWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmwpCisrewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElH TihjdHgtPmNpcGhlcl9kYXRhKTsKKysJQ1JZUFRPX29mYjEyOF9lbmNyeXB0KGluLCBvdXQsIGlu bCwga2V5LCBjdHgtPml2LAorKwkJCQkmY3R4LT5udW0sIChibG9jazEyOF9mKWFlc25pX2VuY3J5 cHQpOworKwlyZXR1cm4gMTsKKyt9CisrCisrI2RlZmluZSBBRVNfQkxPQ0tfU0laRQkJMTYKKysK KysjZGVmaW5lIEVWUF9DSVBIRVJfYmxvY2tfc2l6ZV9FQ0IJQUVTX0JMT0NLX1NJWkUKKysjZGVm aW5lIEVWUF9DSVBIRVJfYmxvY2tfc2l6ZV9DQkMJQUVTX0JMT0NLX1NJWkUKKysjZGVmaW5lIEVW UF9DSVBIRVJfYmxvY2tfc2l6ZV9PRkIJMQorKyNkZWZpbmUgRVZQX0NJUEhFUl9ibG9ja19zaXpl X0NGQgkxCisrCisrLyogRGVjbGFyaW5nIHNvIG1hbnkgY2lwaGVycyBieSBoYW5kIHdvdWxkIGJl IGEgcGFpbi4KKysgICBJbnN0ZWFkIGludHJvZHVjZSBhIGJpdCBvZiBwcmVwcm9jZXNzb3IgbWFn aWMgOi0pICovCisrI2RlZmluZQlERUNMQVJFX0FFU19FVlAoa3NpemUsbG1vZGUsdW1vZGUpCVwK KytzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiBhZXNuaV8jI2tzaXplIyNfIyNsbW9kZSA9IHsJXAor KwlOSURfYWVzXyMja3NpemUjI18jI2xtb2RlLAkJCVwKKysJRVZQX0NJUEhFUl9ibG9ja19zaXpl XyMjdW1vZGUsCQkJXAorKwlrc2l6ZSAvIDgsCQkJCQlcCisrCUFFU19CTE9DS19TSVpFLAkJCQkJ XAorKwkwIHwgRVZQX0NJUEhfIyN1bW9kZSMjX01PREUsCQkJXAorKwlhZXNuaV9pbml0X2tleSwJ CQkJXAorKwlhZXNuaV9jaXBoZXJfIyNsbW9kZSwJCQkJXAorKwlOVUxMLAkJCQkJCVwKKysJc2l6 ZW9mKEFFU05JX0tFWSksCQkJCVwKKysJRVZQX0NJUEhFUl9zZXRfYXNuMV9pdiwJCQkJXAorKwlF VlBfQ0lQSEVSX2dldF9hc24xX2l2LAkJCQlcCisrCU5VTEwsCQkJCQkJXAorKwlOVUxMCQkJCQkJ XAorK30KKysKKytERUNMQVJFX0FFU19FVlAoMTI4LGVjYixFQ0IpOworK0RFQ0xBUkVfQUVTX0VW UCgxMjgsY2JjLENCQyk7CisrREVDTEFSRV9BRVNfRVZQKDEyOCxjZmIsQ0ZCKTsKKytERUNMQVJF X0FFU19FVlAoMTI4LG9mYixPRkIpOworKworK0RFQ0xBUkVfQUVTX0VWUCgxOTIsZWNiLEVDQik7 CisrREVDTEFSRV9BRVNfRVZQKDE5MixjYmMsQ0JDKTsKKytERUNMQVJFX0FFU19FVlAoMTkyLGNm YixDRkIpOworK0RFQ0xBUkVfQUVTX0VWUCgxOTIsb2ZiLE9GQik7CisrCisrREVDTEFSRV9BRVNf RVZQKDI1NixlY2IsRUNCKTsKKytERUNMQVJFX0FFU19FVlAoMjU2LGNiYyxDQkMpOworK0RFQ0xB UkVfQUVTX0VWUCgyNTYsY2ZiLENGQik7CisrREVDTEFSRV9BRVNfRVZQKDI1NixvZmIsT0ZCKTsK KysKKytzdGF0aWMgaW50CisrYWVzbmlfY2lwaGVycyAoRU5HSU5FICplLCBjb25zdCBFVlBfQ0lQ SEVSICoqY2lwaGVyLAorKwkJICAgICAgY29uc3QgaW50ICoqbmlkcywgaW50IG5pZCkKKyt7Cisr CS8qIE5vIHNwZWNpZmljIGNpcGhlciA9PiByZXR1cm4gYSBsaXN0IG9mIHN1cHBvcnRlZCBuaWRz IC4uLiAqLworKwlpZiAoIWNpcGhlcikgeworKwkJKm5pZHMgPSBhZXNuaV9jaXBoZXJfbmlkczsK KysJCXJldHVybiBhZXNuaV9jaXBoZXJfbmlkc19udW07CisrCX0KKysKKysJLyogLi4uIG9yIHRo ZSByZXF1ZXN0ZWQgImNpcGhlciIgb3RoZXJ3aXNlICovCisrCXN3aXRjaCAobmlkKSB7CisrCWNh c2UgTklEX2Flc18xMjhfZWNiOgorKwkJKmNpcGhlciA9ICZhZXNuaV8xMjhfZWNiOworKwkJYnJl YWs7CisrCWNhc2UgTklEX2Flc18xMjhfY2JjOgorKwkJKmNpcGhlciA9ICZhZXNuaV8xMjhfY2Jj OworKwkJYnJlYWs7CisrCWNhc2UgTklEX2Flc18xMjhfY2ZiOgorKwkJKmNpcGhlciA9ICZhZXNu aV8xMjhfY2ZiOworKwkJYnJlYWs7CisrCWNhc2UgTklEX2Flc18xMjhfb2ZiOgorKwkJKmNpcGhl ciA9ICZhZXNuaV8xMjhfb2ZiOworKwkJYnJlYWs7CisrCisrCWNhc2UgTklEX2Flc18xOTJfZWNi OgorKwkJKmNpcGhlciA9ICZhZXNuaV8xOTJfZWNiOworKwkJYnJlYWs7CisrCWNhc2UgTklEX2Fl c18xOTJfY2JjOgorKwkJKmNpcGhlciA9ICZhZXNuaV8xOTJfY2JjOworKwkJYnJlYWs7CisrCWNh c2UgTklEX2Flc18xOTJfY2ZiOgorKwkJKmNpcGhlciA9ICZhZXNuaV8xOTJfY2ZiOworKwkJYnJl YWs7CisrCWNhc2UgTklEX2Flc18xOTJfb2ZiOgorKwkJKmNpcGhlciA9ICZhZXNuaV8xOTJfb2Zi OworKwkJYnJlYWs7CisrCisrCWNhc2UgTklEX2Flc18yNTZfZWNiOgorKwkJKmNpcGhlciA9ICZh ZXNuaV8yNTZfZWNiOworKwkJYnJlYWs7CisrCWNhc2UgTklEX2Flc18yNTZfY2JjOgorKwkJKmNp cGhlciA9ICZhZXNuaV8yNTZfY2JjOworKwkJYnJlYWs7CisrCWNhc2UgTklEX2Flc18yNTZfY2Zi OgorKwkJKmNpcGhlciA9ICZhZXNuaV8yNTZfY2ZiOworKwkJYnJlYWs7CisrCWNhc2UgTklEX2Fl c18yNTZfb2ZiOgorKwkJKmNpcGhlciA9ICZhZXNuaV8yNTZfb2ZiOworKwkJYnJlYWs7CisrCisr CWRlZmF1bHQ6CisrCQkvKiBTb3JyeSwgd2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIE5JRCAqLworKwkJ KmNpcGhlciA9IE5VTEw7CisrCQlyZXR1cm4gMDsKKysJfQorKworKwlyZXR1cm4gMTsKKyt9Cisr CisrI2VuZGlmIC8qIENPTVBJTEVfSFdfQUVTTkkgKi8KKysjZW5kaWYgLyogIWRlZmluZWQoT1BF TlNTTF9OT19IVykgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19IV19BRVNOSSkgJiYgIWRlZmluZWQo T1BFTlNTTF9OT19BRVMpICovCitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9l bmdpbmUvZW5nX2FsbC5jLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9l bmdfYWxsLmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5nX2FsbC5j LmFlc25pCTIwMTAtMDEtMDcgMjM6Mzg6MzEuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0x LjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYwkyMDEwLTAxLTEyIDIyOjE4OjA2LjAw MDAwMDAwMCArMDEwMAorQEAgLTg1LDYgKzg1LDkgQEAgdm9pZCBFTkdJTkVfbG9hZF9idWlsdGlu X2VuZ2luZXModm9pZCkKKyAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgKGRlZmluZWQo X19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoSEFWRV9DUllQ VE9ERVYpKQorIAlFTkdJTkVfbG9hZF9jcnlwdG9kZXYoKTsKKyAjZW5kaWYKKysjaWYgIWRlZmlu ZWQoT1BFTlNTTF9OT19IVykgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19IV19BRVNOSSkKKysJRU5H SU5FX2xvYWRfYWVzbmkoKTsKKysjZW5kaWYKKyAJRU5HSU5FX2xvYWRfZHluYW1pYygpOworICNp Zm5kZWYgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisgI2lmbmRlZiBPUEVOU1NMX05PX0hXCitk aWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5naW5lLmguYWVzbmkg b3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ2luZS5oCistLS0gb3BlbnNzbC0x LjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ2luZS5oLmFlc25pCTIwMTAtMDEtMDcgMjM6Mzg6 MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5l L2VuZ2luZS5oCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCitAQCAtMzQyLDYg KzM0Miw3IEBAIHZvaWQgRU5HSU5FX2xvYWRfZ29zdCh2b2lkKTsKKyAjZW5kaWYKKyAjZW5kaWYK KyB2b2lkIEVOR0lORV9sb2FkX2NyeXB0b2Rldih2b2lkKTsKKyt2b2lkIEVOR0lORV9sb2FkX2Fl c25pKHZvaWQpOworIHZvaWQgRU5HSU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzKHZvaWQpOworIAor IC8qIEdldCBhbmQgc2V0IGdsb2JhbCBmbGFncyAoRU5HSU5FX1RBQkxFX0ZMQUdfKioqKSBmb3Ig dGhlIGltcGxlbWVudGF0aW9uCitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9l bmdpbmUvTWFrZWZpbGUuYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL01h a2VmaWxlCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL01ha2VmaWxlLmFl c25pCTIwMDgtMDYtMDQgMTM6MDE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAu MC1iZXRhNC9jcnlwdG8vZW5naW5lL01ha2VmaWxlCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAw MDAwICswMTAwCitAQCAtMjEsMTIgKzIxLDE0IEBAIExJQlNSQz0gZW5nX2Vyci5jIGVuZ19saWIu YyBlbmdfbGlzdC5jIGUKKyAJZW5nX3RhYmxlLmMgZW5nX3BrZXkuYyBlbmdfZmF0LmMgZW5nX2Fs bC5jIFwKKyAJdGJfcnNhLmMgdGJfZHNhLmMgdGJfZWNkc2EuYyB0Yl9kaC5jIHRiX2VjZGguYyB0 Yl9yYW5kLmMgdGJfc3RvcmUuYyBcCisgCXRiX2NpcGhlci5jIHRiX2RpZ2VzdC5jIHRiX3BrbWV0 aC5jIHRiX2Fzbm10aC5jIFwKKy0JZW5nX29wZW5zc2wuYyBlbmdfY25mLmMgZW5nX2R5bi5jIGVu Z19jcnlwdG9kZXYuYworKwllbmdfb3BlbnNzbC5jIGVuZ19jbmYuYyBlbmdfZHluLmMgZW5nX2Ny eXB0b2Rldi5jIFwKKysJZW5nX2Flc25pLmMKKyBMSUJPQko9IGVuZ19lcnIubyBlbmdfbGliLm8g ZW5nX2xpc3QubyBlbmdfaW5pdC5vIGVuZ19jdHJsLm8gXAorIAllbmdfdGFibGUubyBlbmdfcGtl eS5vIGVuZ19mYXQubyBlbmdfYWxsLm8gXAorIAl0Yl9yc2EubyB0Yl9kc2EubyB0Yl9lY2RzYS5v IHRiX2RoLm8gdGJfZWNkaC5vIHRiX3JhbmQubyB0Yl9zdG9yZS5vIFwKKyAJdGJfY2lwaGVyLm8g dGJfZGlnZXN0Lm8gdGJfcGttZXRoLm8gdGJfYXNubXRoLm8gXAorLQllbmdfb3BlbnNzbC5vIGVu Z19jbmYubyBlbmdfZHluLm8gZW5nX2NyeXB0b2Rldi5vCisrCWVuZ19vcGVuc3NsLm8gZW5nX2Nu Zi5vIGVuZ19keW4ubyBlbmdfY3J5cHRvZGV2Lm8gXAorKwllbmdfYWVzbmkubworIAorIFNSQz0g JChMSUJTUkMpCisgCitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZw X2Vyci5jLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnBfZXJyLmMKKy0t LSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwX2Vyci5jLmFlc25pCTIwMTAtMDEt MDcgMjM6Mzg6MzEuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlw dG8vZXZwL2V2cF9lcnIuYwkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAorQEAg LTEsNiArMSw2IEBACisgLyogY3J5cHRvL2V2cC9ldnBfZXJyLmMgKi8KKyAvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLSAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA4IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwg cmlnaHRzIHJlc2VydmVkLgorKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA5IFRoZSBPcGVuU1NM IFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICog bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zCitAQCAtNzAsNiArNzAsNyBAQAorIAorIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEg RVZQX3N0cl9mdW5jdHNbXT0KKyAJeworK3tFUlJfRlVOQyhFVlBfRl9BRVNOSV9JTklUX0tFWSks CSJBRVNOSV9JTklUX0tFWSJ9LAorIHtFUlJfRlVOQyhFVlBfRl9BRVNfSU5JVF9LRVkpLAkiQUVT X0lOSVRfS0VZIn0sCisge0VSUl9GVU5DKEVWUF9GX0NBTUVMTElBX0lOSVRfS0VZKSwJIkNBTUVM TElBX0lOSVRfS0VZIn0sCisge0VSUl9GVU5DKEVWUF9GX0QySV9QS0VZKSwJIkQySV9QS0VZIn0s CitAQCAtODUsNyArODYsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEVWUF9zdHJfZnVuY3Rz W109Cisge0VSUl9GVU5DKEVWUF9GX0VWUF9ESUdFU1RJTklUX0VYKSwJIkVWUF9EaWdlc3RJbml0 X2V4In0sCisge0VSUl9GVU5DKEVWUF9GX0VWUF9FTkNSWVBURklOQUxfRVgpLAkiRVZQX0VuY3J5 cHRGaW5hbF9leCJ9LAorIHtFUlJfRlVOQyhFVlBfRl9FVlBfTURfQ1RYX0NPUFlfRVgpLAkiRVZQ X01EX0NUWF9jb3B5X2V4In0sCiste0VSUl9GVU5DKEVWUF9GX0VWUF9NRF9TSVpFKSwJIkVWUF9N RF9TSVpFIn0sCisre0VSUl9GVU5DKEVWUF9GX0VWUF9NRF9TSVpFKSwJIkVWUF9NRF9zaXplIn0s Cisge0VSUl9GVU5DKEVWUF9GX0VWUF9PUEVOSU5JVCksCSJFVlBfT3BlbkluaXQifSwKKyB7RVJS X0ZVTkMoRVZQX0ZfRVZQX1BCRV9BTEdfQUREKSwJIkVWUF9QQkVfYWxnX2FkZCJ9LAorIHtFUlJf RlVOQyhFVlBfRl9FVlBfUEJFX0FMR19BRERfVFlQRSksCSJFVlBfUEJFX2FsZ19hZGRfdHlwZSJ9 LAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZXZwL2V2cC5oLmFlc25pIG9w ZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnAuaAorLS0tIG9wZW5zc2wtMS4wLjAtYmV0 YTQvY3J5cHRvL2V2cC9ldnAuaC5hZXNuaQkyMDEwLTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCAr MDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnAuaAkyMDEwLTAxLTEy IDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAorQEAgLTExNjIsNiArMTE2Miw3IEBAIHZvaWQgRVJS X2xvYWRfRVZQX3N0cmluZ3Modm9pZCk7CisgLyogRXJyb3IgY29kZXMgZm9yIHRoZSBFVlAgZnVu Y3Rpb25zLiAqLworIAorIC8qIEZ1bmN0aW9uIGNvZGVzLiAqLworKyNkZWZpbmUgRVZQX0ZfQUVT TklfSU5JVF9LRVkJCQkJIDE2MworICNkZWZpbmUgRVZQX0ZfQUVTX0lOSVRfS0VZCQkJCSAxMzMK KyAjZGVmaW5lIEVWUF9GX0NBTUVMTElBX0lOSVRfS0VZCQkJCSAxNTkKKyAjZGVmaW5lIEVWUF9G X0QySV9QS0VZCQkJCQkgMTAwCitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L3Rlc3QvdGVz dF9hZXNuaS5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L3Rlc3QvdGVzdF9hZXNuaQorLS0tIG9w ZW5zc2wtMS4wLjAtYmV0YTQvdGVzdC90ZXN0X2Flc25pLmFlc25pCTIwMTAtMDEtMTIgMjI6MTg6 MDYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC90ZXN0L3Rlc3RfYWVz bmkJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsNjkgQEAK KysjIS9iaW4vc2gKKysKKytQUk9HPSQxCisrCisraWYgWyAteCAkUFJPRyBdOyB0aGVuCisrICAg IGlmIGV4cHIgInhgJFBST0cgdmVyc2lvbmAiIDogInhPcGVuU1NMIiA+IC9kZXYvbnVsbDsgdGhl bgorKwk6CisrICAgIGVsc2UKKysJZWNobyAiJFBST0cgaXMgbm90IE9wZW5TU0wgZXhlY3V0YWJs ZSIKKysJZXhpdCAxCisrICAgIGZpCisrZWxzZQorKyAgICBlY2hvICIkUFJPRyBpcyBub3QgZXhl Y3V0YWJsZSIKKysgICAgZXhpdCAxOworK2ZpCisrCisraWYgJFBST0cgZW5naW5lIGFlc25pIHwg Z3JlcCAtdiBuby1hZXNuaTsgdGhlbgorKworKyAgICBIQVNIPWBjYXQgJFBST0cgfCAkUFJPRyBk Z3N0IC1oZXhgCisrCisrICAgIEFFU19BTEdTPSIJYWVzLTEyOC1lY2IgYWVzLTE5Mi1lY2IgYWVz LTI1Ni1lY2IgXAorKwkJYWVzLTEyOC1jYmMgYWVzLTE5Mi1jYmMgYWVzLTI1Ni1jYmMgXAorKwkJ YWVzLTEyOC1jZmIgYWVzLTE5Mi1jZmIgYWVzLTI1Ni1jZmIgXAorKwkJYWVzLTEyOC1vZmIgYWVz LTE5Mi1vZmIgYWVzLTI1Ni1vZmIiCisrICAgIEJVRlNJWkU9IjE2IDMyIDQ4IDY0IDgwIDk2IDEy OCAxNDQgOTk5IgorKworKyAgICBuZXJyPTAKKysKKysgICAgZm9yIGFsZyBpbiAkQUVTX0FMR1M7 IGRvCisrCWVjaG8gJGFsZworKwlmb3IgYnVmc2l6ZSBpbiAkQlVGU0laRTsgZG8KKysJICAgIFRF U1Q9YCgJY2F0ICRQUk9HIHwgXAorKwkJJFBST0cgZW5jIC1lIC1rICIkSEFTSCIgLSRhbGcgLWJ1 ZnNpemUgJGJ1ZnNpemUgLWVuZ2luZSBhZXNuaSB8IFwKKysJCSRQUk9HIGVuYyAtZCAtayAiJEhB U0giIC0kYWxnIHwgXAorKwkJJFBST0cgZGdzdCAtaGV4ICkgMj4vZGV2L251bGxgCisrCSAgICBp ZiBbICIkVEVTVCIgIT0gIiRIQVNIIiBdOyB0aGVuCisrCQllY2hvICItJGFsZy8kYnVmc2l6ZSBl bmNyeXB0IHRlc3QgZmFpbGVkIgorKwkJbmVycj1gZXhwciAkbmVyciArIDFgCisrCSAgICBmaQor Kwlkb25lCisrCWZvciBidWZzaXplIGluICRCVUZTSVpFOyBkbyAKKysJICAgIFRFU1Q9YCgJY2F0 ICRQUk9HIHwgXAorKwkJJFBST0cgZW5jIC1lIC1rICIkSEFTSCIgLSRhbGcgfCBcCisrCQkkUFJP RyBlbmMgLWQgLWsgIiRIQVNIIiAtJGFsZyAtYnVmc2l6ZSAkYnVmc2l6ZSAtZW5naW5lIGFlc25p IHwgXAorKwkJJFBST0cgZGdzdCAtaGV4ICkgMj4vZGV2L251bGxgCisrCSAgICBpZiBbICIkVEVT VCIgIT0gIiRIQVNIIiBdOyB0aGVuCisrCQllY2hvICItJGFsZy8kYnVmc2l6ZSBkZWNyeXB0IHRl c3QgZmFpbGVkIgorKwkJbmVycj1gZXhwciAkbmVyciArIDFgCisrCSAgICBmaQorKwlkb25lCisr CVRFU1Q9YCgJY2F0ICRQUk9HIHwgXAorKwkJJFBST0cgZW5jIC1lIC1rICIkSEFTSCIgLSRhbGcg LWVuZ2luZSBhZXNuaSB8IFwKKysJCSRQUk9HIGVuYyAtZCAtayAiJEhBU0giIC0kYWxnIC1lbmdp bmUgYWVzbmkgfCBcCisrCQkkUFJPRyBkZ3N0IC1oZXggKSAyPi9kZXYvbnVsbGAKKysJaWYgWyAi JFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgorKwkJZWNobyAiLSRhbGcgZW4vZGVjcnlwdCB0ZXN0 IGZhaWxlZCIKKysJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAorKwlmaQorKyAgICBkb25lCisrCisr ICAgIGlmIFsgJG5lcnIgLWd0IDAgXTsgdGhlbgorKwllY2hvICJBRVNOSSBlbmdpbmUgdGVzdCBm YWlsZWQuIgorKwlleGl0IDE7CisrICAgIGZpCisrZWxzZQorKyAgICBlY2hvICJBRVNOSSBlbmdp bmUgaXMgbm90IGF2YWlsYWJsZSIKKytmaQorKworK2V4aXQgMAoKZGlmZiAtLWdpdCBhL29wZW5z c2wuc3BlYyBiL29wZW5zc2wuc3BlYwppbmRleCA0OWFmOGYyLi4yNzI0YjVlIDEwMDY0NAotLS0g YS9vcGVuc3NsLnNwZWMKKysrIGIvb3BlbnNzbC5zcGVjCkBAIC0yMyw3ICsyMyw3IEBACiBTdW1t YXJ5OiBBIGdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaHkgbGlicmFyeSB3aXRoIFRMUyBpbXBs ZW1lbnRhdGlvbgogTmFtZTogb3BlbnNzbAogVmVyc2lvbjogMS4wLjAKLVJlbGVhc2U6IDAuMTcu JXtiZXRhfSV7P2Rpc3R9CitSZWxlYXNlOiAwLjE4LiV7YmV0YX0lez9kaXN0fQogIyBXZSByZW1v dmUgY2VydGFpbiBwYXRlbnRlZCBhbGdvcml0aG1zIGZyb20gdGhlIG9wZW5zc2wgc291cmNlIHRh cmJhbGwKICMgd2l0aCB0aGUgaG9iYmxlLW9wZW5zc2wgc2NyaXB0IHdoaWNoIGlzIGluY2x1ZGVk IGJlbG93LgogU291cmNlOiBvcGVuc3NsLSV7dmVyc2lvbn0tJXtiZXRhfS11c2EudGFyLmJ6MgpA QCAtNzIsNiArNzIsNyBAQCBQYXRjaDY1OiBvcGVuc3NsLTEuMC4wLWJldGE0LWR0bHMtcmVuZWcu cGF0Y2gKIFBhdGNoNjY6IG9wZW5zc2wtMS4wLjAtYmV0YTQtYmFja3BvcnRzMi5wYXRjaAogUGF0 Y2g2Nzogb3BlbnNzbC0xLjAuMC1iZXRhNC1yZW5lZy1zY3N2LnBhdGNoCiBQYXRjaDY4OiBvcGVu c3NsLTEuMC4wLWJldGE0LXRscy1jb21wLnBhdGNoCitQYXRjaDY5OiBvcGVuc3NsLTEuMC4wLWJl dGE0LWFlc25pLnBhdGNoCiAKIExpY2Vuc2U6IE9wZW5TU0wKIEdyb3VwOiBTeXN0ZW0gRW52aXJv bm1lbnQvTGlicmFyaWVzCkBAIC0xNjAsNiArMTYxLDcgQEAgZnJvbSBvdGhlciBmb3JtYXRzIHRv IHRoZSBmb3JtYXRzIHVzZWQgYnkgdGhlIE9wZW5TU0wgdG9vbGtpdC4KICVwYXRjaDY2IC1wMSAt YiAuYmFja3BvcnRzMgogJXBhdGNoNjcgLXAxIC1iIC5zY3N2CiAlcGF0Y2g2OCAtcDEgLWIgLnRs cy1jb21wCislcGF0Y2g2OSAtcDEgLWIgLmFlc25pCiAKICMgTW9kaWZ5IHRoZSB2YXJpb3VzIHBl cmwgc2NyaXB0cyB0byByZWZlcmVuY2UgcGVybCBpbiB0aGUgcmlnaHQgbG9jYXRpb24uCiBwZXJs IHV0aWwvcGVybHBhdGgucGwgYGRpcm5hbWUgJXtfX3Blcmx9YApAQCAtNDA4LDEwICs0MTAsMTMg QEAgcm0gLXJmICRSUE1fQlVJTERfUk9PVC8le19saWJkaXJ9L2ZpcHNjYW5pc3Rlci4qCiAlcG9z dHVuIC1wIC9zYmluL2xkY29uZmlnCiAKICVjaGFuZ2Vsb2cKKyogV2VkIEphbiAxMyAyMDEwIFRv bWFzIE1yYXogPHRtcmF6QHJlZGhhdC5jb20+IDEuMC4wLTAuMTguYmV0YTQKKy0gYWRkIHN1cHBv cnQgZm9yIEludGVsIEFFUy1OSQorCiAqIFRodSBKYW4gIDcgMjAxMCBUb21hcyBNcmF6IDx0bXJh ekByZWRoYXQuY29tPiAxLjAuMC0wLjE3LmJldGE0CiAtIHVwc3RyZWFtIGZpeCBjb21wcmVzc2lv biBoYW5kbGluZyBvbiBzZXNzaW9uIHJlc3VtcHRpb24KIC0gdmFyaW91cyBudWxsIGNoZWNrcyBh bmQgb3RoZXIgc21hbGwgZml4ZXMgZnJvbSB1cHN0cmVhbQotLSB1cHN0cmVhbSBjaGFuZ2VzIGZv ciB0aGUgcmVuZWdvdGlhdGlvbiBpbmZvIGFjY29yZGluZyB0byB0aGUgbGF0ZXN0IGRyYWZ0IAor LSB1cHN0cmVhbSBjaGFuZ2VzIGZvciB0aGUgcmVuZWdvdGlhdGlvbiBpbmZvIGFjY29yZGluZyB0 byB0aGUgbGF0ZXN0IGRyYWZ0CiAKICogTW9uIE5vdiAyMyAyMDA5IFRvbWFzIE1yYXogPHRtcmF6 QHJlZGhhdC5jb20+IDEuMC4wLTAuMTYuYmV0YTQKIC0gZml4IG5vbi1maXBzIG1pbmd3IGJ1aWxk IChwYXRjaCBieSBLYWxldiBMZW1iZXIpCg==