From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v6 10/15] x86/boot: implement early command line parser in C Date: Mon, 12 Sep 2016 22:18:25 +0200 Message-ID: <1473711511-11931-11-git-send-email-daniel.kiper@oracle.com> References: <1473711511-11931-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bjXjf-0006J9-0H for xen-devel@lists.xenproject.org; Mon, 12 Sep 2016 20:21:47 +0000 In-Reply-To: <1473711511-11931-1-git-send-email-daniel.kiper@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, david.vrabel@citrix.com, jbeulich@suse.com, qiaowei.ren@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org Q3VycmVudCBlYXJseSBjb21tYW5kIGxpbmUgcGFyc2VyIGltcGxlbWVudGF0aW9uIGluIGFzc2Vt YmxlcgppcyB2ZXJ5IGRpZmZpY3VsdCB0byBjaGFuZ2UgdG8gcmVsb2NhdGFibGUgc3R1ZmYgdXNp bmcgc2VnbWVudApyZWdpc3RlcnMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YgY2hhbmdlcyBpbiB2 ZXJ5IHdlaXJkIGFuZApmcmFnaWxlIGNvZGUuIFNvLCByZWltcGxlbWVudCB0aGlzIGZ1bmN0aW9u YWxpdHkgaW4gQy4gVGhpcwp3YXkgY29kZSB3aWxsIGJlIHJlbG9jYXRhYmxlIG91dCBvZiB0aGUg Ym94ICh3aXRob3V0IHBsYXlpbmcKd2l0aCBzZWdtZW50IHJlZ2lzdGVycykgYW5kIG11Y2ggZWFz aWVyIHRvIG1haW50YWluLgoKQWRkaXRpb25hbGx5LCBwdXQgYWxsIGNvbW1vbiBjbWRsaW5lLmMg YW5kIHJlbG9jLmMgZGVmaW5pdGlvbnMKaW50byBkZWZzLmggaGVhZGVyLiBUaGlzIHdheSB3ZSBk byBub3QgZHVwbGljYXRlIG5lZWRsZXNzbHkKc29tZSBzdHVmZi4KCkFuZCBmaW5hbGx5IHJlbW92 ZSB1bnVzZWQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaApoZWFkZXIgZnJvbSByZWxvYy5j IGRlcGVuZGVuY2llcy4KClN1Z2dlc3RlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJA b3JhY2xlLmNvbT4KLS0tCnY2IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gcHV0IGNvbW1vbiBj bWRsaW5lLmMgYW5kIHJlbG9jLmMKICAgICBkZWZpbml0aW9ucyBpbnRvIGRlZnMuaCBoZWFkZXIK ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSB1c2UgeGVuL2luY2x1ZGUveGVu L3N0ZGJvb2wuaAogICAgIGFuZCBib29sIHR5cGUgZnJvbSBpdCBpbnN0ZWFkCiAgICAgb2Ygb3du IGRlZmluZWQgYm9vbF90CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZGVm aW5lIGRlbGltX2NoYXJzIGFzIGNvbnN0YW50CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gcHJvcGVybHkgYWxpZ24gdHJhbXBvbGluZS5TOmVhcmx5X2Jvb3Rfb3B0cyBzdHJ1 Y3QKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBmaXggb3ZlcmZsb3cgY2hl Y2sgaW4gc3RydG91aSgpCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVt b3ZlIHVudXNlZCB4ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oCiAgICAgaGVhZGVyIGZyb20g cmVsb2MuYyBkZXBlbmRlbmNpZXMsCiAgIC0gaW1wcm92ZSBjb21taXQgbWVzc2FnZS4KCnY0IC0g c3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gbW92ZSB0byBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlv bgogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRlZmluZSBib29sX3QgYW5k IHVzZSBpdCBwcm9wZXJseQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHB1 dCBsaXN0IG9mIGRlbGltaXRlciBjaGFycyBpbnRvCiAgICAgc3RhdGljIGNvbnN0IGNoYXJbXQog ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBzdHJsZW4oKSBpbnN0ZWFk IG9mIHN0cmxlbl9vcHQoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGNo YW5nZSBzdHJ0b2koKSB0byBzdHJ0b3VpKCkgYW5kCiAgICAgb3B0aW1pemUgaXQgYSBiaXQKICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkZWZpbmUgc3RyY2hyKCkgYW5kIHVz ZSBpdCBpbiBzdHJ0b3VpKCkKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBv cHRpbWl6ZSB2Z2FfcGFyc2UoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAt IG1vdmUgIWNtZGxpbmUgY2hlY2sgZnJvbSBhc3NlbWJseSB0byBDCiAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIG15IG5hbWUgZnJvbSBjb3B5cmlnaHQgKE9yYWNs ZSByZXF1aXJlbWVudCkKICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsayku Cgp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIG9wdGltaXplIHNvbWUgY29kZQogICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHB1dCBWRVNBIGRhdGEgaW50byBlYXJseV9i b290X29wdHNfdCBtZW1iZXJzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0g cmVuYW1lIHNvbWUgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMKICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKSwKICAgLSBtb3ZlIGFyb3VuZCB2aWRlby5oIGluY2x1ZGUgaW4geGVuL2FyY2gv eDg2L2Jvb3QvdHJhbXBvbGluZS5TCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAg IC0gZml4IGNvZGluZyBzdHlsZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAt IGZpeCBidWlsZCB3aXRoIG9sZGVyIEdDQwogICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6 dXRlayBXaWxrKSwKICAgLSByZW1vdmUgcmVkdW5kYW50IGNvbW1lbnRzCiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRkIHNvbWUgY29tbWVudHMKICAgLSBpbXByb3ZlIGNv bW1pdCBtZXNzYWdlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkuCi0tLQogLmdpdGln bm9yZSAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQogeGVuL2FyY2gveDg2L01ha2VmaWxl ICAgICAgICAgIHwgICAgMiArLQogeGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgICAgIHwgICAx MSArLQogeGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5tayAgIHwgICAgMiArCiB4ZW4vYXJjaC94 ODYvYm9vdC9jbWRsaW5lLlMgICAgfCAgMzY3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYyAgICB8ICAzMzkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5o ICAgICAgIHwgICA1MiArKysrKysKIHhlbi9hcmNoL3g4Ni9ib290L2VkZC5TICAgICAgICB8ICAg IDMgLQogeGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TICAgICAgIHwgICAgOCArCiB4ZW4vYXJjaC94 ODYvYm9vdC9yZWxvYy5jICAgICAgfCAgIDEzICstCiB4ZW4vYXJjaC94ODYvYm9vdC90cmFtcG9s aW5lLlMgfCAgIDE0ICsrCiB4ZW4vYXJjaC94ODYvYm9vdC92aWRlby5TICAgICAgfCAgICA3IC0K IDEyIGZpbGVzIGNoYW5nZWQsIDQyOSBpbnNlcnRpb25zKCspLCAzOTQgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L2Jvb3QvY21kbGluZS5TCiBjcmVhdGUgbW9k ZSAxMDA2NDQgeGVuL2FyY2gveDg2L2Jvb3QvY21kbGluZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg eGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5oCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRp Z25vcmUKaW5kZXggY2M2NGZjOS4uOWFhNDdhMSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysg Yi8uZ2l0aWdub3JlCkBAIC0yNDcsOSArMjQ3LDEwIEBAIHhlbi9hcmNoL2FybS94ZW4ubGRzCiB4 ZW4vYXJjaC94ODYvYXNtLW9mZnNldHMucwogeGVuL2FyY2gveDg2L2Jvb3QvbWtlbGYzMgogeGVu L2FyY2gveDg2L3hlbi5sZHMKK3hlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuUwogeGVuL2FyY2gv eDg2L2Jvb3QvcmVsb2MuUwoteGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYmluCi14ZW4vYXJjaC94 ODYvYm9vdC9yZWxvYy5sbmsKK3hlbi9hcmNoL3g4Ni9ib290LyouYmluCit4ZW4vYXJjaC94ODYv Ym9vdC8qLmxuawogeGVuL2FyY2gveDg2L2VmaS5sZHMKIHhlbi9hcmNoL3g4Ni9lZmkvY2hlY2su ZWZpCiB4ZW4vYXJjaC94ODYvZWZpL2Rpc2FibGVkCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv TWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggMjc2NmJmZi4uZDhmZTBmMSAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9NYWtl ZmlsZQpAQCAtMjI0LDYgKzIyNCw2IEBAIGNsZWFuOjoKIAlybSAtZiBhc20tb2Zmc2V0cy5zICou bGRzIGJvb3QvKi5vIGJvb3QvKn4gYm9vdC9jb3JlIGJvb3QvbWtlbGYzMgogCXJtIC1mICQoQkFT RURJUikvLnhlbi1zeW1zLlswLTldKiBib290Ly4qLmQKIAlybSAtZiAkKEJBU0VESVIpLy54ZW4u ZWZpLlswLTldKiBlZmkvKi5lZmkgZWZpL2Rpc2FibGVkIGVmaS9ta3JlbG9jCi0Jcm0gLWYgYm9v dC9yZWxvYy5TIGJvb3QvcmVsb2MubG5rIGJvb3QvcmVsb2MuYmluCisJcm0gLWYgYm9vdC9jbWRs aW5lLlMgYm9vdC9yZWxvYy5TIGJvb3QvKi5sbmsgYm9vdC8qLmJpbgogCXJtIC1mIG5vdGUubwog CSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAtQyB0ZXN0IGNsZWFuCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxl CmluZGV4IDA2ODkzZDguLjRhMWJjNDUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L01h a2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlCkBAIC0xLDkgKzEsMTYgQEAK IG9iai1iaW4teSArPSBoZWFkLm8KIAotUkVMT0NfREVQUyA9ICQoQkFTRURJUikvaW5jbHVkZS9h c20teDg2L2NvbmZpZy5oICQoQkFTRURJUikvaW5jbHVkZS94ZW4vbXVsdGlib290LmggXAorREVG U19IX0RFUFMgPSAkKEJBU0VESVIpL2luY2x1ZGUveGVuL3N0ZGJvb2wuaAorCitDTURMSU5FX0RF UFMgPSBkZWZzLmggJChERUZTX0hfREVQUykgdmlkZW8uaAorCitSRUxPQ19ERVBTID0gZGVmcy5o ICQoREVGU19IX0RFUFMpICQoQkFTRURJUikvaW5jbHVkZS94ZW4vbXVsdGlib290LmggXAogCSAg ICAgJChCQVNFRElSKS9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKIAotaGVhZC5vOiByZWxvYy5T CitoZWFkLm86IGNtZGxpbmUuUyByZWxvYy5TCisKK2NtZGxpbmUuUzogY21kbGluZS5jICQoQ01E TElORV9ERVBTKQorCSQoTUFLRSkgLWYgYnVpbGQzMi5tayAkQCBDTURMSU5FX0RFUFM9IiQoQ01E TElORV9ERVBTKSIKIAogcmVsb2MuUzogcmVsb2MuYyAkKFJFTE9DX0RFUFMpCiAJJChNQUtFKSAt ZiBidWlsZDMyLm1rICRAIFJFTE9DX0RFUFM9IiQoUkVMT0NfREVQUykiCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvYm9vdC9idWlsZDMyLm1rIGIveGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5t awppbmRleCAzOWU2NDUzLi4zZDAxNjk4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9i dWlsZDMyLm1rCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2J1aWxkMzIubWsKQEAgLTMyLDYgKzMy LDggQEAgQ0ZMQUdTIDo9ICQoZmlsdGVyLW91dCAtZmx0bywkKENGTEFHUykpCiAlLm86ICUuYwog CSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZnBpYyAkPCAtbyAkQAogCitjbWRsaW5lLm86IGNtZGxpbmUu YyAkKENNRExJTkVfREVQUykKKwogcmVsb2MubzogcmVsb2MuYyAkKFJFTE9DX0RFUFMpCiAKIC5Q UkVDSU9VUzogJS5iaW4gJS5sbmsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L2NtZGxp bmUuUyBiL3hlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDA2ODdlYi4uMDAwMDAwMAotLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5l LlMKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICogY21kbGluZS5TCi0gKgotICogRWFybHkgY29tbWFuZC1saW5lIHBhcnNpbmcuCi0gKi8K LQotICAgICAgICAuY29kZTMyCi0KLSNpbmNsdWRlICJ2aWRlby5oIgotCi0jIE5CLiBTdHJpbmcg cG9pbnRlciBvbiBzdGFjayBpcyBtb2RpZmllZCB0byBwb2ludCBwYXN0IHBhcnNlZCBkaWdpdHMu Ci0uTGF0b2k6Ci0gICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNoICAgICVlY3gKLSAg ICAgICAgcHVzaCAgICAlZWR4Ci0gICAgICAgIHB1c2ggICAgJWVzaQotICAgICAgICB4b3IgICAg ICVlYngsJWVieCAgICAgICAvKiAlZWJ4ID0gYWNjdW11bGF0b3IgKi8KLSAgICAgICAgbW92ICAg ICAkMTAsJWVjeCAgICAgICAgLyogJWVjeCA9IGJhc2UgKGRlZmF1bHQgYmFzZSAxMCkgKi8KLSAg ICAgICAgbW92ICAgICAxNis0KCVlc3ApLCVlc2kgLyogJWVzaSA9IHBvaW50ZXIgaW50byBhc2Np aSBzdHJpbmcuICovCi0gICAgICAgIGxvZHNiCi0gICAgICAgIGNtcGIgICAgJCcwJywlYWwKLSAg ICAgICAgam5lICAgICAyZgotICAgICAgICBtb3YgICAgICQ4LCVlY3ggICAgICAgICAvKiBQcmVm aXggJzAnID0+IG9jdGFsIChiYXNlIDgpICovCi0gICAgICAgIGxvZHNiCi0gICAgICAgIGNtcGIg ICAgJCd4JywlYWwKLSAgICAgICAgam5lICAgICAyZgotICAgICAgICBtb3YgICAgICQxNiwlZWN4 ICAgICAgICAvKiBQcmVmaXggJzB4JyA9PiBoZXggKGJhc2UgMTYpICovCi0xOiAgICAgIGxvZHNi Ci0yOiAgICAgIHN1YiAgICAgJCcwJywlYWwKLSAgICAgICAgamIgICAgICA0ZgotICAgICAgICBj bXAgICAgICQ5LCVhbAotICAgICAgICBqYmUgICAgIDNmCi0gICAgICAgIHN1YiAgICAgJCdBJy0n MCctMTAsJWFsCi0gICAgICAgIGpiICAgICAgNGYKLSAgICAgICAgY21wICAgICAkMTUsJWFsCi0g ICAgICAgIGpiZSAgICAgM2YKLSAgICAgICAgc3ViICAgICAkJ2EnLSdBJywlYWwKLSAgICAgICAg amIgICAgICA0ZgotMzogICAgICBjbXAgICAgICVjbCwlYWwKLSAgICAgICAgamFlICAgICA0Zgot ICAgICAgICBtb3Z6YmwgICVhbCwlZWF4Ci0gICAgICAgIHhjaGcgICAgJWVheCwlZWJ4Ci0gICAg ICAgIG11bCAgICAgJWVjeAotICAgICAgICB4Y2hnICAgICVlYXgsJWVieAotICAgICAgICBhZGQg ICAgICVlYXgsJWVieAotICAgICAgICBqbXAgICAgIDFiCi00OiAgICAgIG1vdiAgICAgJWVieCwl ZWF4Ci0gICAgICAgIGRlYyAgICAgJWVzaQotICAgICAgICBtb3YgICAgICVlc2ksMTYrNCglZXNw KQotICAgICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgcG9wICAgICAlZWR4Ci0gICAgICAgIHBv cCAgICAgJWVjeAotICAgICAgICBwb3AgICAgICVlYngKLSAgICAgICAgcmV0Ci0KLS5Mc3Ryc3Ry OgotICAgICAgICBwdXNoICAgICVlY3gKLSAgICAgICAgcHVzaCAgICAlZWR4Ci0gICAgICAgIHB1 c2ggICAgJWVzaQotICAgICAgICBwdXNoICAgICVlZGkKLSAgICAgICAgeG9yICAgICAlZWF4LCVl YXgKLSAgICAgICAgeG9yICAgICAlZWN4LCVlY3gKLSAgICAgICAgbm90ICAgICAlZWN4Ci0gICAg ICAgIG1vdiAgICAgMTYrNCglZXNwKSwlZXNpCi0gICAgICAgIG1vdiAgICAgMTYrOCglZXNwKSwl ZWRpCi0gICAgICAgIHJlcG5lICAgc2Nhc2IKLSAgICAgICAgbm90ICAgICAlZWN4Ci0gICAgICAg IGRlYyAgICAgJWVjeAotICAgICAgICBtb3YgICAgICVlY3gsJWVkeAotMTogICAgICBtb3YgICAg IDE2KzgoJWVzcCksJWVkaQotICAgICAgICBtb3YgICAgICVlc2ksJWVheAotICAgICAgICBtb3Yg ICAgICVlZHgsJWVjeAotICAgICAgICByZXBlICAgIGNtcHNiCi0gICAgICAgIGplICAgICAgMmYK LSAgICAgICAgeGNoZyAgICAlZWF4LCVlc2kKLSAgICAgICAgaW5jICAgICAlZXNpCi0gICAgICAg IGNtcGIgICAgJDAsLTEoJWVheCkKLSAgICAgICAgam5lICAgICAxYgotICAgICAgICB4b3IgICAg ICVlYXgsJWVheAotMjogICAgICBwb3AgICAgICVlZGkKLSAgICAgICAgcG9wICAgICAlZXNpCi0g ICAgICAgIHBvcCAgICAgJWVkeAotICAgICAgICBwb3AgICAgICVlY3gKLSAgICAgICAgcmV0Ci0K LS5Mc3RyX3ByZWZpeDoKLSAgICAgICAgcHVzaCAgICAlZXNpCi0gICAgICAgIHB1c2ggICAgJWVk aQotICAgICAgICBtb3YgICAgIDgrNCglZXNwKSwlZXNpIC8qIDFzdCBhcmcgaXMgcHJlZml4IHN0 cmluZyAqLwotICAgICAgICBtb3YgICAgIDgrOCglZXNwKSwlZWRpIC8qIDJuZCBhcmcgaXMgbWFp biBzdHJpbmcgKi8KLTE6ICAgICAgbG9kc2IKLSAgICAgICAgdGVzdCAgICAlYWwsJWFsCi0gICAg ICAgIGp6ICAgICAgMmYKLSAgICAgICAgc2Nhc2IKLSAgICAgICAgamUgICAgICAxYgotICAgICAg ICBzYmIgICAgICVlYXgsJWVheAotICAgICAgICBvciAgICAgICQxLCVhbAotICAgICAgICBqbXAg ICAgIDNmCi0yOiAgICAgIHhvciAgICAgJWVheCwlZWF4Ci0zOiAgICAgIHBvcCAgICAgJWVkaQot ICAgICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgcmV0Ci0KLS5Mc3RybGVuOgotICAgICAgICBw dXNoICAgICVlY3gKLSAgICAgICAgcHVzaCAgICAlZXNpCi0gICAgICAgIHB1c2ggICAgJWVkaQot ICAgICAgICB4b3IgICAgICVlYXgsJWVheAotICAgICAgICB4b3IgICAgICVlY3gsJWVjeAotICAg ICAgICBub3QgICAgICVlY3gKLSAgICAgICAgbW92ICAgICAxMis0KCVlc3ApLCVlZGkKLSAgICAg ICAgcmVwbmUgICBzY2FzYgotICAgICAgICBub3QgICAgICVlY3gKLSAgICAgICAgZGVjICAgICAl ZWN4Ci0gICAgICAgIG1vdiAgICAgJWVjeCwlZWF4Ci0gICAgICAgIHBvcCAgICAgJWVkaQotICAg ICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgcG9wICAgICAlZWN4Ci0gICAgICAgIHJldAotCi0u TGZpbmRfb3B0aW9uOgotICAgICAgICBtb3YgICAgIDQoJWVzcCksJWVheAotICAgICAgICBkZWMg ICAgICVlYXgKLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0xOiAgICAgIHB1c2hsICAgNCs4KCVlc3Ap Ci0gICAgICAgIGluYyAgICAgJWVheAotICAgICAgICBwdXNoICAgICVlYXgKLSAgICAgICAgY2Fs bCAgICAuTHN0cnN0cgotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgdGVzdCAgICAl ZWF4LCVlYXgKLSAgICAgICAganogICAgICAzZgotICAgICAgICBjbXAgICAgICVlYXgsNCs0KCVl c3ApCi0gICAgICAgIGplICAgICAgMmYKLSAgICAgICAgY21wYiAgICAkJyAnLC0xKCVlYXgpCi0g ICAgICAgIGpuZSAgICAgMWIKLTI6ICAgICAgbW92ICAgICAlZWF4LCVlYngKLSAgICAgICAgcHVz aGwgICA0KzgoJWVzcCkKLSAgICAgICAgY2FsbCAgICAuTHN0cmxlbgotICAgICAgICBhZGQgICAg ICQ0LCVlc3AKLSAgICAgICAgeGFkZCAgICAlZWF4LCVlYngKLSAgICAgICAgLyogTlVMIGNoZWNr IChhcyAkJ1wwJyA9PSAweDMwIGluIEdBUykgKi8KLSAgICAgICAgY21wYiAgICAkMCwoJWVieCkK LSAgICAgICAgamUgICAgICAzZgotICAgICAgICBjbXBiICAgICQnICcsKCVlYngpCi0gICAgICAg IGplICAgICAgM2YKLSAgICAgICAgY21wYiAgICAkJz0nLCglZWJ4KQotICAgICAgICBqbmUgICAg IDFiCi0zOiAgICAgIHBvcCAgICAgJWVieAotICAgICAgICByZXQKLQotY21kbGluZV9wYXJzZV9l YXJseToKLSAgICAgICAgcHVzaGEKLQotICAgICAgICAvKiBCYWlsIGlmIHRoZXJlIGlzIG5vIGNv bW1hbmQgbGluZSB0byBwYXJzZS4gKi8KLSAgICAgICAgbW92ICAgICBzeW1fcGh5cyhtdWx0aWJv b3RfcHRyKSwlZWJ4Ci0gICAgICAgIG1vdiAgICAgTUJfZmxhZ3MoJWVieCksJWVheAotICAgICAg ICB0ZXN0ICAgICQ0LCVhbAotICAgICAgICBqeiAgICAgIC5MY21kbGluZV9leGl0Ci0gICAgICAg IG1vdiAgICAgTUJfY21kbGluZSglZWJ4KSwlZWF4Ci0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4 Ci0gICAgICAgIGp6ICAgICAgLkxjbWRsaW5lX2V4aXQKLQotICAgICAgICAvKiBDaGVjayBmb3Ig J25vLXJlYWwtbW9kZScgY29tbWFuZC1saW5lIG9wdGlvbi4gKi8KLSAgICAgICAgcHVzaGwgICAk c3ltX3BoeXMoLkxub19ybV9vcHQpCi0gICAgICAgIHB1c2hsICAgTUJfY21kbGluZSglZWJ4KQot ICAgICAgICBjYWxsICAgIC5MZmluZF9vcHRpb24KLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgK LSAgICAgICAgc2V0bnogICAlYWwKLSAgICAgICAgb3IgICAgICAlYWwsc3ltX3BoeXMoc2tpcF9y ZWFsbW9kZSkKLQotICAgICAgICAvKiBDaGVjayBmb3IgJ3Rib290PScgY29tbWFuZC1saW5lIG9w dGlvbi4gKi8KLSAgICAgICAgbW92bCAgICAkc3ltX3BoeXMoLkx0Ym9vdF9vcHQpLDQoJWVzcCkK LSAgICAgICAgY2FsbCAgICAuTGZpbmRfb3B0aW9uCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4 Ci0gICAgICAgIHNldG56ICAgJWFsCi0gICAgICAgIG9yICAgICAgJWFsLHN5bV9waHlzKHNraXBf cmVhbG1vZGUpIC8qIHRib290PSBpbXBsaWVzIG5vLXJlYWwtbW9kZSAqLwotCi0uTHBhcnNlX2Vk ZDoKLSAgICAgICAgLyogQ2hlY2sgZm9yICdlZGQ9JyBjb21tYW5kLWxpbmUgb3B0aW9uLiAqLwot ICAgICAgICBtb3ZsICAgICRzeW1fcGh5cyguTGVkZF9vcHQpLDQoJWVzcCkKLSAgICAgICAgY2Fs bCAgICAuTGZpbmRfb3B0aW9uCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGp6 ICAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGNtcGIgICAgJCc9JywzKCVlYXgpCi0gICAgICAg IGpuZSAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGFkZCAgICAgJDQsJWVheAotICAgICAgICBt b3ZiICAgICQyLHN5bV9waHlzKG9wdF9lZGQpICAvKiBvcHRfZWRkPTI6IGVkZD1vZmYgKi8KLSAg ICAgICAgY21wdyAgICAkMHg2NjZmLCglZWF4KSAgICAgICAgICAgIC8qIDB4NjY2ZiA9PSAib2Yi ICovCi0gICAgICAgIGplICAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGRlY2IgICAgc3ltX3Bo eXMob3B0X2VkZCkgICAgIC8qIG9wdF9lZGQ9MTogZWRkPXNraXBtYnIgKi8KLSAgICAgICAgY21w dyAgICAkMHg2YjczLCglZWF4KSAgICAgICAgICAgIC8qIDB4NmI3MyA9PSAic2siICovCi0gICAg ICAgIGplICAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGRlY2IgICAgc3ltX3BoeXMob3B0X2Vk ZCkgICAgIC8qIG9wdF9lZGQ9MDogZWRkPW9uIChkZWZhdWx0KSAqLwotCi0uTHBhcnNlX2VkaWQ6 Ci0gICAgICAgIC8qIENoZWNrIGZvciAnZWRpZD0nIGNvbW1hbmQtbGluZSBvcHRpb24uICovCi0g ICAgICAgIG1vdmwgICAgJHN5bV9waHlzKC5MZWRpZF9vcHQpLDQoJWVzcCkKLSAgICAgICAgY2Fs bCAgICAuTGZpbmRfb3B0aW9uCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGp6 ICAgICAgLkxwYXJzZV92Z2EKLSAgICAgICAgY21wYiAgICAkJz0nLDQoJWVheCkKLSAgICAgICAg am5lICAgICAuTHBhcnNlX3ZnYQotICAgICAgICBhZGQgICAgICQ1LCVlYXgKLSAgICAgICAgbW92 ICAgICAlZWF4LCVlYngKLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIHB1c2hsICAgJHN5 bV9waHlzKC5MZWRpZF9mb3JjZSkKLSAgICAgICAgY2FsbCAgICAuTHN0cl9wcmVmaXgKLSAgICAg ICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAgIG1vdmIgICAgJDIsc3ltX3BoeXMob3B0X2VkaWQp IC8qIG9wdF9lZGlkPTI6IGVkaWQ9Zm9yY2UgKi8KLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgK LSAgICAgICAganogICAgICAuTHBhcnNlX3ZnYQotICAgICAgICBwdXNoICAgICVlYngKLSAgICAg ICAgcHVzaGwgICAkc3ltX3BoeXMoLkxlZGlkX25vKQotICAgICAgICBjYWxsICAgIC5Mc3RyX3By ZWZpeAotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgZGVjYiAgICBzeW1fcGh5cyhv cHRfZWRpZCkgICAgLyogb3B0X2VkaWQ9MTogZWRpZD1ubyAqLwotICAgICAgICB0ZXN0ICAgICVl YXgsJWVheAotICAgICAgICBqeiAgICAgIC5McGFyc2VfdmdhCi0gICAgICAgIGRlY2IgICAgc3lt X3BoeXMob3B0X2VkaWQpICAgIC8qIG9wdF9lZGlkPTA6IGRlZmF1bHQgKi8KLQotLkxwYXJzZV92 Z2E6Ci0gICAgICAgIC8qIENoZWNrIGZvciAndmdhPScgY29tbWFuZC1saW5lIG9wdGlvbi4gKi8K LSAgICAgICAgbW92bCAgICAkc3ltX3BoeXMoLkx2Z2Ffb3B0KSw0KCVlc3ApCi0gICAgICAgIGNh bGwgICAgLkxmaW5kX29wdGlvbgotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgdGVz dCAgICAlZWF4LCVlYXgKLSAgICAgICAganogICAgICAuTGNtZGxpbmVfZXhpdAotICAgICAgICBj bXBiICAgICQnPScsMyglZWF4KQotICAgICAgICBqbmUgICAgIC5MY21kbGluZV9leGl0Ci0gICAg ICAgIGFkZCAgICAgJDQsJWVheAotCi0gICAgICAgIC8qIEZvdW5kIHRoZSAndmdhPScgb3B0aW9u LiBEZWZhdWx0IG9wdGlvbiBpcyB0byBkaXNwbGF5IHZnYSBtZW51LiAqLwotICAgICAgICBtb3Z3 ICAgICRBU0tfVkdBLHN5bV9waHlzKGJvb3RfdmlkX21vZGUpCi0KLSAgICAgICAgLyogQ2hlY2sg Zm9yICd2Z2E9dGV4dC04MHg8cm93cz4uICovCi0gICAgICAgIG1vdiAgICAgJWVheCwlZWJ4Ci0g ICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNobCAgICRzeW1fcGh5cyguTHZnYV90ZXh0 ODApCi0gICAgICAgIGNhbGwgICAgLkxzdHJfcHJlZml4Ci0gICAgICAgIGFkZCAgICAgJDgsJWVz cAotICAgICAgICB0ZXN0ICAgICVlYXgsJWVheAotICAgICAgICBqbnogICAgIC5McGFyc2Vfdmdh X2dmeAotCi0gICAgICAgIC8qIFdlIGhhdmUgJ3ZnYT10ZXh0LTgweDxyb3dzPicuICovCi0gICAg ICAgIGFkZCAgICAgJDgsJWVieAotICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgY2FsbCAg ICAuTGF0b2kKLSAgICAgICAgYWRkICAgICAkNCwlZXNwCi0gICAgICAgIG1vdiAgICAgJWF4LCVi eAotICAgICAgICBsZWEgICAgIHN5bV9waHlzKC5MdmdhX3RleHRfbW9kZXMpLCVlc2kKLTE6ICAg ICAgbG9kc3cKLSAgICAgICAgdGVzdCAgICAlYXgsJWF4Ci0gICAgICAgIGp6ICAgICAgLkxjbWRs aW5lX2V4aXQKLSAgICAgICAgY21wICAgICAlYXgsJWJ4Ci0gICAgICAgIGxvZHN3Ci0gICAgICAg IGpuZSAgICAgMWIKLSAgICAgICAgbW92ICAgICAlYXgsc3ltX3BoeXMoYm9vdF92aWRfbW9kZSkK LSAgICAgICAgam1wICAgICAuTGNtZGxpbmVfZXhpdAotCi0uTHBhcnNlX3ZnYV9nZng6Ci0gICAg ICAgIC8qIENoZWNrIGZvciAndmdhPWdmeC08d2lkdGg+eDxoZWlnaHQ+eDxkZXB0aD4nLiAqLwot ICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgcHVzaGwgICAkc3ltX3BoeXMoLkx2Z2FfZ2Z4 KQotICAgICAgICBjYWxsICAgIC5Mc3RyX3ByZWZpeAotICAgICAgICBhZGQgICAgICQ4LCVlc3AK LSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAgICAgam56ICAgICAuTHBhcnNlX3ZnYV9t b2RlCi0KLSAgICAgICAgLyogV2UgaGF2ZSAndmdhPWdmeC08d2lkdGg+eDxoZWlnaHQ+eDxkZXB0 aD4nLiAqLwotICAgICAgICAvKiBza2lwICdnZngtJyAqLwotICAgICAgICBhZGQgICAgICQ0LCVl YngKLSAgICAgICAgLyogcGFyc2UgPHdpZHRoPiAqLwotICAgICAgICBwdXNoICAgICVlYngKLSAg ICAgICAgY2FsbCAgICAuTGF0b2kKLSAgICAgICAgcG9wICAgICAlZXNpCi0gICAgICAgIG1vdiAg ICAgJWF4LHN5bV9waHlzKHZlc2Ffc2l6ZSkrMAotICAgICAgICAvKiBza2lwICd4JyAqLwotICAg ICAgICBsb2RzYgotICAgICAgICBjbXBiICAgICQneCcsJWFsCi0gICAgICAgIGpuZSAgICAgLkxj bWRsaW5lX2V4aXQKLSAgICAgICAgLyogcGFyc2UgPGhlaWdodD4gKi8KLSAgICAgICAgcHVzaCAg ICAlZXNpCi0gICAgICAgIGNhbGwgICAgLkxhdG9pCi0gICAgICAgIHBvcCAgICAgJWVzaQotICAg ICAgICBtb3YgICAgICVheCxzeW1fcGh5cyh2ZXNhX3NpemUpKzIKLSAgICAgICAgLyogc2tpcCAn eCcgKi8KLSAgICAgICAgbG9kc2IKLSAgICAgICAgY21wYiAgICAkJ3gnLCVhbAotICAgICAgICBq bmUgICAgIC5MY21kbGluZV9leGl0Ci0gICAgICAgIC8qIHBhcnNlIDxkZXB0aD4gKi8KLSAgICAg ICAgcHVzaCAgICAlZXNpCi0gICAgICAgIGNhbGwgICAgLkxhdG9pCi0gICAgICAgIHBvcCAgICAg JWVzaQotICAgICAgICBtb3YgICAgICVheCxzeW1fcGh5cyh2ZXNhX3NpemUpKzQKLSAgICAgICAg LyogY29tbWl0IHRvIHZlc2EgbW9kZSAqLwotICAgICAgICBtb3Z3ICAgICRWSURFT19WRVNBX0JZ X1NJWkUsc3ltX3BoeXMoYm9vdF92aWRfbW9kZSkKLSAgICAgICAgam1wICAgICAuTGNtZGxpbmVf ZXhpdAotCi0uTHBhcnNlX3ZnYV9tb2RlOgotICAgICAgICAvKiBDaGVjayBmb3IgJ3ZnYT1tb2Rl LTxtb2RlPicuICovCi0gICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNobCAgICRzeW1f cGh5cyguTHZnYV9tb2RlKQotICAgICAgICBjYWxsICAgIC5Mc3RyX3ByZWZpeAotICAgICAgICBh ZGQgICAgICQ4LCVlc3AKLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAgICAgam56ICAg ICAuTHBhcnNlX3ZnYV9jdXJyZW50Ci0KLSAgICAgICAgLyogV2UgaGF2ZSAndmdhPW1vZGUtPG1v ZGU+Jy4gKi8KLSAgICAgICAgYWRkICAgICAkNSwlZWJ4Ci0gICAgICAgIHB1c2ggICAgJWVieAot ICAgICAgICBjYWxsICAgIC5MYXRvaQotICAgICAgICBhZGQgICAgICQ0LCVlc3AKLSAgICAgICAg bW92ICAgICAlYXgsc3ltX3BoeXMoYm9vdF92aWRfbW9kZSkKLSAgICAgICAgam1wICAgICAuTGNt ZGxpbmVfZXhpdAotCi0uTHBhcnNlX3ZnYV9jdXJyZW50OgotICAgICAgICAvKiBDaGVjayBmb3Ig J3ZnYT1jdXJyZW50Jy4gKi8KLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIHB1c2hsICAg JHN5bV9waHlzKC5MdmdhX2N1cnJlbnQpCi0gICAgICAgIGNhbGwgICAgLkxzdHJfcHJlZml4Ci0g ICAgICAgIGFkZCAgICAgJDgsJWVzcAotICAgICAgICB0ZXN0ICAgICVlYXgsJWVheAotICAgICAg ICBqbnogICAgIC5MY21kbGluZV9leGl0Ci0KLSAgICAgICAgLyogV2UgaGF2ZSAndmdhPWN1cnJl bnQnLiAqLwotICAgICAgICBtb3Z3ICAgICRWSURFT19DVVJSRU5UX01PREUsc3ltX3BoeXMoYm9v dF92aWRfbW9kZSkKLQotLkxjbWRsaW5lX2V4aXQ6Ci0gICAgICAgIHBvcGEKLSAgICAgICAgcmV0 Ci0KLSAgICAgICAgLnB1c2hzZWN0aW9uIC5pbml0LnJvZGF0YSwgImEiLCBAcHJvZ2JpdHMKLQot Lkx2Z2FfdGV4dF9tb2RlczogLyogcm93cywgbW9kZV9udW1iZXIgKi8KLSAgICAgICAgLndvcmQg ICAyNSxWSURFT184MHgyNQotICAgICAgICAud29yZCAgIDUwLFZJREVPXzgweDUwCi0gICAgICAg IC53b3JkICAgNDMsVklERU9fODB4NDMKLSAgICAgICAgLndvcmQgICAyOCxWSURFT184MHgyOAot ICAgICAgICAud29yZCAgIDMwLFZJREVPXzgweDMwCi0gICAgICAgIC53b3JkICAgMzQsVklERU9f ODB4MzQKLSAgICAgICAgLndvcmQgICA2MCxWSURFT184MHg2MAotICAgICAgICAud29yZCAgIDAK LQotLkx2Z2Ffb3B0OgotICAgICAgICAuYXNjaXogICJ2Z2EiCi0uTHZnYV90ZXh0ODA6Ci0gICAg ICAgIC5hc2NpeiAgInRleHQtODB4IgotLkx2Z2FfZ2Z4OgotICAgICAgICAuYXNjaXogICJnZngt IgotLkx2Z2FfbW9kZToKLSAgICAgICAgLmFzY2l6ICAibW9kZS0iCi0uTHZnYV9jdXJyZW50Ogot ICAgICAgICAuYXNjaXogICJjdXJyZW50IgotLkxub19ybV9vcHQ6Ci0gICAgICAgIC5hc2NpeiAg Im5vLXJlYWwtbW9kZSIKLS5MdGJvb3Rfb3B0OgotICAgICAgICAuYXNjaXogICJ0Ym9vdCIKLS5M ZWRpZF9vcHQ6Ci0gICAgICAgIC5hc2NpeiAgImVkaWQiCi0uTGVkaWRfZm9yY2U6Ci0gICAgICAg IC5hc2NpeiAgImZvcmNlIgotLkxlZGlkX25vOgotICAgICAgICAuYXNjaXogICJubyIKLS5MZWRk X29wdDoKLSAgICAgICAgLmFzY2l6ICAiZWRkIgotCi0gICAgICAgIC5wb3BzZWN0aW9uCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLmMgYi94ZW4vYXJjaC94ODYvYm9vdC9j bWRsaW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxNjUxYgotLS0g L2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYwpAQCAtMCwwICsxLDMz OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSwgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwor ICogd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgKgorICogc3RybGVuKCksIHN0cm5jbXAoKSwgc3RyY2hyKCksIHN0cnNwbigp IGFuZCBzdHJjc3BuKCkgd2VyZSBjb3BpZWQgZnJvbQorICogTGludXgga2VybmVsIHNvdXJjZSAo bGludXgvbGliL3N0cmluZy5jKS4KKyAqLworCisvKgorICogVGhpcyBlbnRyeSBwb2ludCBpcyBl bnRlcmVkIGZyb20geGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIHdpdGg6CisgKiAgIC0gMHg0KCVl c3ApID0gJmNtZGxpbmUsCisgKiAgIC0gMHg4KCVlc3ApID0gJmVhcmx5X2Jvb3Rfb3B0cy4KKyAq LworYXNtICgKKyAgICAiICAgIC50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAg ICIgICAgLmdsb2JsIF9zdGFydCAgICAgICAgICAgICAgICAgXG4iCisgICAgIl9zdGFydDogICAg ICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAiICAgIGptcCAgY21kbGluZV9wYXJzZV9l YXJseSAgICAgIFxuIgorICAgICk7CisKKyNpbmNsdWRlICJkZWZzLmgiCisjaW5jbHVkZSAidmlk ZW8uaCIKKworLyogS2VlcCBpbiBzeW5jIHdpdGggdHJhbXBvbGluZS5TOmVhcmx5X2Jvb3Rfb3B0 cyBsYWJlbCEgKi8KK3R5cGVkZWYgc3RydWN0IF9fcGFja2VkIHsKKyAgICB1OCBza2lwX3JlYWxt b2RlOworICAgIHU4IG9wdF9lZGQ7CisgICAgdTggb3B0X2VkaWQ7CisgICAgdTE2IGJvb3Rfdmlk X21vZGU7CisgICAgdTE2IHZlc2Ffd2lkdGg7CisgICAgdTE2IHZlc2FfaGVpZ2h0OworICAgIHUx NiB2ZXNhX2RlcHRoOworfSBlYXJseV9ib290X29wdHNfdDsKKworLyoKKyAqIFNwYWNlIGFuZCBU QUIgYXJlIG9idmlvdXMgZGVsaW1pdGVycy4gSG93ZXZlciwgSSBhbQorICogYWRkaW5nICJcbiIg YW5kICJcciIgaGVyZSB0b28uIEp1c3QgaW4gY2FzZSB3aGVuCisgKiBjcmF6eSBib290bG9hZGVy L3VzZXIgcHV0cyB0aGVtIHNvbWV3aGVyZS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgZGVsaW1f Y2hhcnNfY29tbWFbXSA9ICIsIFxuXHJcdCI7CisKKyNkZWZpbmUgZGVsaW1fY2hhcnMJKGRlbGlt X2NoYXJzX2NvbW1hICsgMSkKKworc3RhdGljIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqcykK K3sKKyAgICBjb25zdCBjaGFyICpzYzsKKworICAgIGZvciAoIHNjID0gczsgKnNjICE9ICdcMCc7 ICsrc2MgKQorICAgICAgICAvKiBub3RoaW5nICovOworICAgIHJldHVybiBzYyAtIHM7Cit9CisK K3N0YXRpYyBpbnQgc3RybmNtcChjb25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3QsIHNpemVf dCBjb3VudCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGMxLCBjMjsKKworICAgIHdoaWxlICggY291 bnQgKQorICAgIHsKKyAgICAgICAgYzEgPSAqY3MrKzsKKyAgICAgICAgYzIgPSAqY3QrKzsKKyAg ICAgICAgaWYgKCBjMSAhPSBjMiApCisgICAgICAgICAgICByZXR1cm4gYzEgPCBjMiA/IC0xIDog MTsKKyAgICAgICAgaWYgKCAhYzEgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNvdW50 LS07CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY2hhciAqc3RyY2hyKGNvbnN0 IGNoYXIgKnMsIGludCBjKQoreworICAgIGZvciAoIDsgKnMgIT0gKGNoYXIpYzsgKytzICkKKyAg ICAgICAgaWYgKCAqcyA9PSAnXDAnICkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIHJl dHVybiAoY2hhciAqKXM7Cit9CisKK3N0YXRpYyBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKnMs IGNvbnN0IGNoYXIgKmFjY2VwdCkKK3sKKyAgICBjb25zdCBjaGFyICpwOworICAgIGNvbnN0IGNo YXIgKmE7CisgICAgc2l6ZV90IGNvdW50ID0gMDsKKworICAgIGZvciAoIHAgPSBzOyAqcCAhPSAn XDAnOyArK3AgKQorICAgIHsKKyAgICAgICAgZm9yICggYSA9IGFjY2VwdDsgKmEgIT0gJ1wwJzsg KythICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAqcCA9PSAqYSApCisgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAqYSA9PSAnXDAnICkKKyAgICAg ICAgICAgIHJldHVybiBjb3VudDsKKyAgICAgICAgKytjb3VudDsKKyAgICB9CisgICAgcmV0dXJu IGNvdW50OworfQorCitzdGF0aWMgc2l6ZV90IHN0cmNzcG4oY29uc3QgY2hhciAqcywgY29uc3Qg Y2hhciAqcmVqZWN0KQoreworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgY29uc3QgY2hhciAqcjsK KyAgICBzaXplX3QgY291bnQgPSAwOworCisgICAgZm9yICggcCA9IHM7ICpwICE9ICdcMCc7ICsr cCApCisgICAgeworICAgICAgICBmb3IgKCByID0gcmVqZWN0OyAqciAhPSAnXDAnOyArK3IgKQor ICAgICAgICB7CisgICAgICAgICAgICBpZiAoICpwID09ICpyICkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gY291bnQ7CisgICAgICAgIH0KKyAgICAgICAgKytjb3VudDsKKyAgICB9CisgICAgcmV0 dXJuIGNvdW50OworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHN0cnRvdWkoY29uc3QgY2hhciAq cywgY29uc3QgY2hhciAqc3RvcCwgY29uc3QgY2hhciAqKm5leHQpCit7CisgICAgY2hhciBiYXNl ID0gMTAsIGw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlcyA9IDA7CisKKyAgICBpZiAoICpz ID09ICcwJyApCisgICAgICBiYXNlID0gKHRvbG93ZXIoKisrcykgPT0gJ3gnKSA/ICgrK3MsIDE2 KSA6IDg7CisKKyAgICBmb3IgKCA7ICpzICE9ICdcMCc7ICsrcyApCisgICAgeworICAgICAgICBp ZiAoIHN0b3AgJiYgc3RyY2hyKHN0b3AsICpzKSApCisgICAgICAgICAgICBnb3RvIG91dDsKKwor ICAgICAgICBpZiAoICpzIDwgJzAnIHx8ICgqcyA+ICc3JyAmJiBiYXNlID09IDgpICkKKyAgICAg ICAgeworICAgICAgICAgICAgcmVzID0gVUlOVF9NQVg7CisgICAgICAgICAgICBnb3RvIG91dDsK KyAgICAgICAgfQorCisgICAgICAgIGwgPSB0b2xvd2VyKCpzKTsKKworICAgICAgICBpZiAoICpz ID4gJzknICYmIChiYXNlICE9IDE2IHx8IGwgPCAnYScgfHwgbCA+ICdmJykgKQorICAgICAgICB7 CisgICAgICAgICAgICByZXMgPSBVSU5UX01BWDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAg ICAgICB9CisKKyAgICAgICAgcmVzICo9IGJhc2U7CisgICAgICAgIHJlcyArPSAobCA+PSAnYScp ID8gKGwgLSAnYScgKyAxMCkgOiAoKnMgLSAnMCcpOworCisgICAgICAgIGlmICggcmVzID49IFVJ TlRfTUFYICkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzID0gVUlOVF9NQVg7CisgICAgICAg ICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworIG91dDoKKyAgICBpZiAoIG5leHQg KQorICAgICAgKm5leHQgPSBzOworCisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludCBz dHJtYXhjbXAoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0LCBjb25zdCBjaGFyICpfZGVs aW1fY2hhcnMpCit7CisgICAgcmV0dXJuIHN0cm5jbXAoY3MsIGN0LCBtYXgoc3RyY3Nwbihjcywg X2RlbGltX2NoYXJzKSwgc3RybGVuKGN0KSkpOworfQorCitzdGF0aWMgaW50IHN0cnN1YmNtcChj b25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3QpCit7CisgICAgcmV0dXJuIHN0cm5jbXAoY3Ms IGN0LCBzdHJsZW4oY3QpKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmZpbmRfb3B0KGNvbnN0 IGNoYXIgKmNtZGxpbmUsIGNvbnN0IGNoYXIgKm9wdCwgYm9vbCBhcmcpCit7CisgICAgc2l6ZV90 IGxjLCBsbzsKKworICAgIGxvID0gc3RybGVuKG9wdCk7CisKKyAgICBmb3IgKCA7IDsgKQorICAg IHsKKyAgICAgICAgY21kbGluZSArPSBzdHJzcG4oY21kbGluZSwgZGVsaW1fY2hhcnMpOworCisg ICAgICAgIGlmICggKmNtZGxpbmUgPT0gJ1wwJyApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsK KworICAgICAgICBpZiAoICFzdHJtYXhjbXAoY21kbGluZSwgIi0tIiwgZGVsaW1fY2hhcnMpICkK KyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGxjID0gc3RyY3NwbihjbWRsaW5l LCBkZWxpbV9jaGFycyk7CisKKyAgICAgICAgaWYgKCAhc3RybmNtcChjbWRsaW5lLCBvcHQsIGFy ZyA/IGxvIDogbWF4KGxjLCBsbykpICkKKyAgICAgICAgICAgIHJldHVybiBjbWRsaW5lICsgbG87 CisKKyAgICAgICAgY21kbGluZSArPSBsYzsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHNraXBf cmVhbG1vZGUoY29uc3QgY2hhciAqY21kbGluZSkKK3sKKyAgICByZXR1cm4gZmluZF9vcHQoY21k bGluZSwgIm5vLXJlYWwtbW9kZSIsIGZhbHNlKSB8fCBmaW5kX29wdChjbWRsaW5lLCAidGJvb3Q9 IiwgdHJ1ZSk7Cit9CisKK3N0YXRpYyB1OCBlZGRfcGFyc2UoY29uc3QgY2hhciAqY21kbGluZSkK K3sKKyAgICBjb25zdCBjaGFyICpjOworCisgICAgYyA9IGZpbmRfb3B0KGNtZGxpbmUsICJlZGQ9 IiwgdHJ1ZSk7CisKKyAgICBpZiAoICFjICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo ICFzdHJtYXhjbXAoYywgIm9mZiIsIGRlbGltX2NoYXJzKSApCisgICAgICAgIHJldHVybiAyOwor CisgICAgcmV0dXJuICFzdHJtYXhjbXAoYywgInNraXBtYnIiLCBkZWxpbV9jaGFycyk7Cit9CisK K3N0YXRpYyB1OCBlZGlkX3BhcnNlKGNvbnN0IGNoYXIgKmNtZGxpbmUpCit7CisgICAgY29uc3Qg Y2hhciAqYzsKKworICAgIGMgPSBmaW5kX29wdChjbWRsaW5lLCAiZWRpZD0iLCB0cnVlKTsKKwor ICAgIGlmICggIWMgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICggIXN0cm1heGNtcChj LCAiZm9yY2UiLCBkZWxpbV9jaGFycykgKQorICAgICAgICByZXR1cm4gMjsKKworICAgIHJldHVy biAhc3RybWF4Y21wKGMsICJubyIsIGRlbGltX2NoYXJzKTsKK30KKworc3RhdGljIHUxNiByb3dz MnZtb2RlKHVuc2lnbmVkIGludCByb3dzKQoreworICAgIHN3aXRjaCAoIHJvd3MgKQorICAgIHsK KyAgICBjYXNlIDI1OgorICAgICAgICByZXR1cm4gVklERU9fODB4MjU7CisKKyAgICBjYXNlIDI4 OgorICAgICAgICByZXR1cm4gVklERU9fODB4Mjg7CisKKyAgICBjYXNlIDMwOgorICAgICAgICBy ZXR1cm4gVklERU9fODB4MzA7CisKKyAgICBjYXNlIDM0OgorICAgICAgICByZXR1cm4gVklERU9f ODB4MzQ7CisKKyAgICBjYXNlIDQzOgorICAgICAgICByZXR1cm4gVklERU9fODB4NDM7CisKKyAg ICBjYXNlIDUwOgorICAgICAgICByZXR1cm4gVklERU9fODB4NTA7CisKKyAgICBjYXNlIDYwOgor ICAgICAgICByZXR1cm4gVklERU9fODB4NjA7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1 cm4gQVNLX1ZHQTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHZnYV9wYXJzZShjb25zdCBjaGFy ICpjbWRsaW5lLCBlYXJseV9ib290X29wdHNfdCAqZWJvKQoreworICAgIGNvbnN0IGNoYXIgKmM7 CisgICAgdW5zaWduZWQgaW50IHRtcCwgdmVzYV9kZXB0aCwgdmVzYV9oZWlnaHQsIHZlc2Ffd2lk dGg7CisKKyAgICBjID0gZmluZF9vcHQoY21kbGluZSwgInZnYT0iLCB0cnVlKTsKKworICAgIGlm ICggIWMgKQorICAgICAgICByZXR1cm47CisKKyAgICBlYm8tPmJvb3RfdmlkX21vZGUgPSBBU0tf VkdBOworCisgICAgaWYgKCAhc3RybWF4Y21wKGMsICJjdXJyZW50IiwgZGVsaW1fY2hhcnNfY29t bWEpICkKKyAgICAgICAgZWJvLT5ib290X3ZpZF9tb2RlID0gVklERU9fQ1VSUkVOVF9NT0RFOwor ICAgIGVsc2UgaWYgKCAhc3Ryc3ViY21wKGMsICJ0ZXh0LTgweCIpICkKKyAgICB7CisgICAgICAg IGMgKz0gc3RybGVuKCJ0ZXh0LTgweCIpOworICAgICAgICBlYm8tPmJvb3RfdmlkX21vZGUgPSBy b3dzMnZtb2RlKHN0cnRvdWkoYywgZGVsaW1fY2hhcnNfY29tbWEsIE5VTEwpKTsKKyAgICB9Cisg ICAgZWxzZSBpZiAoICFzdHJzdWJjbXAoYywgImdmeC0iKSApCisgICAgeworICAgICAgICB2ZXNh X3dpZHRoID0gc3RydG91aShjICsgc3RybGVuKCJnZngtIiksICJ4IiwgJmMpOworCisgICAgICAg IGlmICggdmVzYV93aWR0aCA+IFUxNl9NQVggKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg ICAgIC8qCisgICAgICAgICAqIEluY3JlbWVudCBjIG91dHNpZGUgb2Ygc3RydG91aSgpIGJlY2F1 c2Ugb3RoZXJ3aXNlIHNvbWUKKyAgICAgICAgICogY29tcGlsZXIgbWF5IGNvbXBsYWluIHdpdGgg Zm9sbG93aW5nIG1lc3NhZ2U6CisgICAgICAgICAqIHdhcm5pbmc6IG9wZXJhdGlvbiBvbiAnYycg bWF5IGJlIHVuZGVmaW5lZC4KKyAgICAgICAgICovCisgICAgICAgICsrYzsKKyAgICAgICAgdmVz YV9oZWlnaHQgPSBzdHJ0b3VpKGMsICJ4IiwgJmMpOworCisgICAgICAgIGlmICggdmVzYV9oZWln aHQgPiBVMTZfTUFYICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2ZXNhX2RlcHRo ID0gc3RydG91aSgrK2MsIGRlbGltX2NoYXJzX2NvbW1hLCBOVUxMKTsKKworICAgICAgICBpZiAo IHZlc2FfZGVwdGggPiBVMTZfTUFYICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBl Ym8tPnZlc2Ffd2lkdGggPSB2ZXNhX3dpZHRoOworICAgICAgICBlYm8tPnZlc2FfaGVpZ2h0ID0g dmVzYV9oZWlnaHQ7CisgICAgICAgIGViby0+dmVzYV9kZXB0aCA9IHZlc2FfZGVwdGg7CisgICAg ICAgIGViby0+Ym9vdF92aWRfbW9kZSA9IFZJREVPX1ZFU0FfQllfU0laRTsKKyAgICB9CisgICAg ZWxzZSBpZiAoICFzdHJzdWJjbXAoYywgIm1vZGUtIikgKQorICAgIHsKKyAgICAgICAgdG1wID0g c3RydG91aShjICsgc3RybGVuKCJtb2RlLSIpLCBkZWxpbV9jaGFyc19jb21tYSwgTlVMTCk7CisK KyAgICAgICAgaWYgKCB0bXAgPiBVMTZfTUFYICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg ICAgICBlYm8tPmJvb3RfdmlkX21vZGUgPSB0bXA7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs bCBjbWRsaW5lX3BhcnNlX2Vhcmx5KGNvbnN0IGNoYXIgKmNtZGxpbmUsIGVhcmx5X2Jvb3Rfb3B0 c190ICplYm8pCit7CisgICAgaWYgKCAhY21kbGluZSApCisgICAgICAgIHJldHVybjsKKworICAg IGViby0+c2tpcF9yZWFsbW9kZSA9IHNraXBfcmVhbG1vZGUoY21kbGluZSk7CisgICAgZWJvLT5v cHRfZWRkID0gZWRkX3BhcnNlKGNtZGxpbmUpOworICAgIGViby0+b3B0X2VkaWQgPSBlZGlkX3Bh cnNlKGNtZGxpbmUpOworICAgIHZnYV9wYXJzZShjbWRsaW5lLCBlYm8pOworfQpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5oIGIveGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMzQ3YzUKLS0tIC9kZXYvbnVsbAor KysgYi94ZW4vYXJjaC94ODYvYm9vdC9kZWZzLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv cHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRz IHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogbWF4 KCkgd2FzIGNvcGllZCBmcm9tIHhlbi94ZW4vaW5jbHVkZS94ZW4va2VybmVsLmguCisgKi8KKwor I2lmbmRlZiBfX0JPT1RfREVGU19IX18KKyNkZWZpbmUgX19CT09UX0RFRlNfSF9fCisKKyNpbmNs dWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9zdGRib29sLmgiCisKKyNkZWZpbmUgX19wYWNrZWQJ X19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCisjZGVmaW5lIF9fc3RkY2FsbAlfX2F0dHJpYnV0 ZV9fKChfX3N0ZGNhbGxfXykpCisKKyNkZWZpbmUgTlVMTAkJKCh2b2lkICopMCkKKworI2RlZmlu ZSBBTElHTl9VUChhcmcsIGFsaWduKSBcCisgICAgICAgICAgICAgICAgKCgoYXJnKSArIChhbGln bikgLSAxKSAmIH4oKHR5cGVvZihhcmcpKShhbGlnbikgLSAxKSkKKworI2RlZmluZSBtYXgoeCx5 KSAoeyBcCisgICAgICAgIGNvbnN0IHR5cGVvZih4KSBfeCA9ICh4KTsgICAgICAgXAorICAgICAg ICBjb25zdCB0eXBlb2YoeSkgX3kgPSAoeSk7ICAgICAgIFwKKyAgICAgICAgKHZvaWQpICgmX3gg PT0gJl95KTsgICAgICAgICAgICBcCisgICAgICAgIF94ID4gX3kgPyBfeCA6IF95OyB9KQorCisj ZGVmaW5lIF9wKHZhbCkJCSgodm9pZCAqKSh1bnNpZ25lZCBsb25nKSh2YWwpKQorCisjZGVmaW5l IHRvbG93ZXIoYykJKChjKSB8IDB4MjApCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKK3R5 cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgdTMyOwordHlw ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90 OworCisjZGVmaW5lIFUxNl9NQVgJCSgodTE2KSh+MFUpKQorI2RlZmluZSBVSU5UX01BWAkofjBV KQorCisjZW5kaWYgLyogX19CT09UX0RFRlNfSF9fICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvYm9vdC9lZGQuUyBiL3hlbi9hcmNoL3g4Ni9ib290L2VkZC5TCmluZGV4IDVjODBkYTYuLjcz MzcxZjkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L2VkZC5TCisrKyBiL3hlbi9hcmNo L3g4Ni9ib290L2VkZC5TCkBAIC0xNDIsOSArMTQyLDYgQEAgZWRkX25leHQ6CiBlZGRfZG9uZToK ICAgICAgICAgcmV0CiAKLW9wdF9lZGQ6Ci0gICAgICAgIC5ieXRlICAgMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGVkZD1vbi9vZmYvc2tpcG1icgotCiBHTE9CQUwoYm9vdF9lZGRf aW5mb19ucikKICAgICAgICAgLmJ5dGUgICAwCiBHTE9CQUwoYm9vdF9tYnJfc2lnbmF0dXJlX25y KQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIGIveGVuL2FyY2gveDg2L2Jv b3QvaGVhZC5TCmluZGV4IDAwZmE0N2QuLjEyYmJkOGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9ib290L2hlYWQuUworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKQEAgLTUwNiw2ICs1 MDYsMTMgQEAgdHJhbXBvbGluZV9zZXR1cDoKICAgICAgICAgY21wYiAgICAkMCxzeW1fcGh5cyhz a2lwX3JlYWxtb2RlKQogICAgICAgICBqbnogICAgIDFmCiAKKyAgICAgICAgLyogQmFpbCBpZiB0 aGVyZSBpcyBubyBjb21tYW5kIGxpbmUgdG8gcGFyc2UuICovCisgICAgICAgIG1vdiAgICAgc3lt X3BoeXMobXVsdGlib290X3B0ciksJWVieAorICAgICAgICB0ZXN0bCAgICRNQklfQ01ETElORSxN Ql9mbGFncyglZWJ4KQorICAgICAgICBqeiAgICAgIDFmCisKKyAgICAgICAgcHVzaGwgICAkc3lt X3BoeXMoZWFybHlfYm9vdF9vcHRzKQorICAgICAgICBwdXNobCAgIE1CX2NtZGxpbmUoJWVieCkK ICAgICAgICAgY2FsbCAgICBjbWRsaW5lX3BhcnNlX2Vhcmx5CiAKIDE6CkBAIC01MjQsNiArNTMx LDcgQEAgdHJhbXBvbGluZV9zZXR1cDoKICAgICAgICAgLyogSnVtcCBpbnRvIHRoZSByZWxvY2F0 ZWQgdHJhbXBvbGluZS4gKi8KICAgICAgICAgbHJldAogCitjbWRsaW5lX3BhcnNlX2Vhcmx5Ogog I2luY2x1ZGUgImNtZGxpbmUuUyIKIAogcmVsb2M6CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv Ym9vdC9yZWxvYy5jIGIveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYwppbmRleCBlNDIxYjA3Li5j Yjg0NjRkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCisrKyBiL3hlbi9h cmNoL3g4Ni9ib290L3JlbG9jLmMKQEAgLTI1LDIxICsyNSwxMCBAQCBhc20gKAogICAgICIgICAg am1wICByZWxvYyAgICAgICAgICAgICAgICAgICAgXG4iCiAgICAgKTsKIAotdHlwZWRlZiB1bnNp Z25lZCBpbnQgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwotCisjaW5jbHVk ZSAiZGVmcy5oIgogI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUveGVuL211bHRpYm9vdC5oIgog I2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaCIKIAotI2RlZmluZSBO VUxMCQkoKHZvaWQgKikwKQotCi0jZGVmaW5lIF9fc3RkY2FsbAlfX2F0dHJpYnV0ZV9fKChfX3N0 ZGNhbGxfXykpCi0KLSNkZWZpbmUgQUxJR05fVVAoYXJnLCBhbGlnbikgXAotICAgICAgICAgICAg ICAgICgoKGFyZykgKyAoYWxpZ24pIC0gMSkgJiB+KCh0eXBlb2YoYXJnKSkoYWxpZ24pIC0gMSkp Ci0KLSNkZWZpbmUgX3AodmFsKQkJKCh2b2lkICopKHVuc2lnbmVkIGxvbmcpKHZhbCkpCi0KICNk ZWZpbmUgZ2V0X21iMl9kYXRhKHRhZywgdHlwZSwgbWVtYmVyKSAgICgoKG11bHRpYm9vdDJfdGFn XyMjdHlwZSMjX3QgKikodGFnKSktPm1lbWJlcikKICNkZWZpbmUgZ2V0X21iMl9zdHJpbmcodGFn LCB0eXBlLCBtZW1iZXIpICgodTMyKWdldF9tYjJfZGF0YSh0YWcsIHR5cGUsIG1lbWJlcikpCiAK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L3RyYW1wb2xpbmUuUyBiL3hlbi9hcmNoL3g4 Ni9ib290L3RyYW1wb2xpbmUuUwppbmRleCBiMDEzNjE0Li45ZjA0YjJjIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvYm9vdC90cmFtcG9saW5lLlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvdHJh bXBvbGluZS5TCkBAIC0yMjAsOCArMjIwLDIyIEBAIHRyYW1wb2xpbmVfYm9vdF9jcHVfZW50cnk6 CiAgICAgICAgIC8qIEp1bXAgdG8gdGhlIGNvbW1vbiBib290c3RyYXAgZW50cnkgcG9pbnQuICov CiAgICAgICAgIGptcCAgICAgdHJhbXBvbGluZV9wcm90bW9kZV9lbnRyeQogCisjaW5jbHVkZSAi dmlkZW8uaCIKKworICAgICAgICAuYWxpZ24gIDIKKyAgICAgICAgLmJ5dGUgICAwCisvKiBLZWVw IGluIHN5bmMgd2l0aCBjbWRsaW5lLmM6ZWFybHlfYm9vdF9vcHRzX3QgdHlwZSEgKi8KK2Vhcmx5 X2Jvb3Rfb3B0czoKIHNraXBfcmVhbG1vZGU6CiAgICAgICAgIC5ieXRlICAgMAorb3B0X2VkZDoK KyAgICAgICAgLmJ5dGUgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVkZD1v bi9vZmYvc2tpcG1iciAqLworb3B0X2VkaWQ6CisgICAgICAgIC5ieXRlICAgMCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBFRElEIHBhcnNpbmcgb3B0aW9uIChmb3JjZS9uby9kZWZh dWx0KS4gKi8KK0dMT0JBTChib290X3ZpZF9tb2RlKQorICAgICAgICAud29yZCAgIFZJREVPXzgw eDI1ICAgICAgICAgICAgICAgICAgICAgLyogSWYgd2UgZG9uJ3QgcnVuIGF0IGFsbCwgYXNzdW1l IGJhc2ljIHZpZGVvIG1vZGUgMyBhdCA4MHgyNS4gKi8KK3Zlc2Ffc2l6ZToKKyAgICAgICAgLndv cmQgICAwLDAsMCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdpZHRoIHggZGVwdGggeCBo ZWlnaHQgKi8KIAogR0xPQkFMKGtiZF9zaGlmdF9mbGFncykKICAgICAgICAgLmJ5dGUgICAwCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC92aWRlby5TIGIveGVuL2FyY2gveDg2L2Jvb3Qv dmlkZW8uUwppbmRleCAyYWFmYmViLi4zMzVhNTFjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv Ym9vdC92aWRlby5TCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L3ZpZGVvLlMKQEAgLTk0NSw3ICs5 NDUsNiBAQCBzdG9yZV9lZGlkOgogI2VuZGlmCiAgICAgICAgIHJldAogCi1vcHRfZWRpZDogICAg ICAgLmJ5dGUgICAwICAgICAgICMgRURJRCBwYXJzaW5nIG9wdGlvbiAoZm9yY2Uvbm8vZGVmYXVs dCkKIG10X2VuZDogICAgICAgICAud29yZCAgIDAgICAgICAgIyBFbmQgb2YgdmlkZW8gbW9kZSB0 YWJsZSBpZiBidWlsdAogZWRpdF9idWY6ICAgICAgIC5zcGFjZSAgNiAgICAgICAjIExpbmUgZWRp dG9yIGJ1ZmZlcgogY2FyZF9uYW1lOiAgICAgIC53b3JkICAgMCAgICAgICAjIFBvaW50ZXIgdG8g YWRhcHRlciBuYW1lCkBAIC05OTEsMTIgKzk5MCw2IEBAIG5hbWVfYmFubjogICAgICAuYXNjaXog ICJWaWRlbyBhZGFwdGVyOiAiCiAKIGZvcmNlX3NpemU6ICAgICAud29yZCAgIDAgICAgICAgIyBV c2UgdGhpcyBzaXplIGluc3RlYWQgb2YgdGhlIG9uZSBpbiBCSU9TIHZhcnMKIAotdmVzYV9zaXpl OiAgICAgIC53b3JkICAgMCwwLDAgICAjIHdpZHRoIHggZGVwdGggeCBoZWlnaHQKLQotLyogSWYg d2UgZG9uJ3QgcnVuIGF0IGFsbCwgYXNzdW1lIGJhc2ljIHZpZGVvIG1vZGUgMyBhdCA4MHgyNS4g Ki8KLSAgICAgICAgLmFsaWduICAyCi1HTE9CQUwoYm9vdF92aWRfbW9kZSkKLSAgICAgICAgLndv cmQgICBWSURFT184MHgyNQogR0xPQkFMKGJvb3RfdmlkX2luZm8pCiAgICAgICAgIC5ieXRlICAg MCwgMCAgICAvKiBvcmlnX3gsIG9yaWdfeSAqLwogICAgICAgICAuYnl0ZSAgIDMgICAgICAgLyog dGV4dCBtb2RlIDMgICAgKi8KLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==