From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chong Li Subject: [PATCH v8 for Xen 4.7 4/4] xl: enable per-VCPU parameter for RTDS Date: Fri, 18 Mar 2016 16:26:25 -0500 Message-ID: <1458336385-2606-5-git-send-email-lichong659@gmail.com> References: <1458336385-2606-1-git-send-email-lichong659@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458336385-2606-1-git-send-email-lichong659@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Chong Li , wei.liu2@citrix.com, Sisu Xi , george.dunlap@eu.citrix.com, dario.faggioli@citrix.com, Meng Xu , lichong659@gmail.com, dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org Q2hhbmdlIG1haW5fc2NoZWRfcnRkcyBhbmQgcmVsYXRlZCBvdXRwdXQgZnVuY3Rpb25zIHRvIHN1 cHBvcnQKcGVyLVZDUFUgc2V0dGluZ3MuCgpTaWduZWQtb2ZmLWJ5OiBDaG9uZyBMaSA8Y2hvbmcu bGlAd3VzdGwuZWR1PgpTaWduZWQtb2ZmLWJ5OiBNZW5nIFh1IDxtZW5neHVAY2lzLnVwZW5uLmVk dT4KU2lnbmVkLW9mZi1ieTogU2lzdSBYaSA8eGlzaXN1QGdtYWlsLmNvbT4KCi0tLQpDaGFuZ2Vz IG9uIFBBVENIIHY3OgoxKSBBZGQgZXhhbXBsZSB0byB4bC5wb2QuMQoKQ2hhbmdlcyBvbiBQQVRD SCB2NjoKMSkgTW9yZSBleHBsYWluIGluIHhsLnBvZC4xIGFuZCBjbWR0YWJsZS5jCjIpIFJlc29s dmUgc29tZSBjb2Rpbmcgc3l0bGUgaXNzdWVzCgpDaGFuZ2VzIG9uIFBBVENIIHY1OgoxKSBBZGQg c2NoZWRfdmNwdV9zZXRfYWxsKCkgZm9yIHRoZSBjYXNlcyB0aGF0IGFsbCB2Y3B1cyBvZiBhCmRv bWFpbiBuZWVkIHRvIGJlIGNoYW5nZWQgdG9nZXRoZXIuCgpDaGFuZ2VzIG9uIFBBVENIIHY0Ogox KSBDb2Rpbmcgc3R5bGUgY2hhbmdlcwoKQ2hhbmdlcyBvbiBQQVRDSCB2MzoKMSkgU3VwcG9ydCBj b21tYW5kcywgZS5nLiwgInhsIHNjaGVkLXJ0ZHMgLWQgdm0xIiB0byBvdXRwdXQgdGhlCmRlZmF1 bHQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzCgpDaGFuZ2VzIG9uIFBBVENIIHYyOgoxKSBSZW1vdmUg cGVyLWRvbWFpbiBvdXRwdXQgZnVuY3Rpb25zIGZvciBSVERTIHNjaGVkdWxlci4KCjIpIFVzZXJz IG5vdyB1c2UgJy12IGFsbCcgdG8gc3BlY2lmeSBhbGwgVkNQVXMuCgozKSBTdXBwb3J0IG91dHB1 dHRpbmcgYSBzdWJzZXQgb2YgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIFZDUFVzCm9mIGEgc3BlY2lm aWMgZG9tYWluLgoKNCkgV2hlbiBzZXR0aW5nIGFsbCBWQ1BVcyB3aXRoIHRoZSBzYW1lIHBhcmFt ZXRlcnMgKGJ5IG9ubHkgb25lCmNvbW1hbmQpLCBubyBwZXItZG9tYWluIGZ1bmN0aW9uIGlzIGlu dm9rZWQuCgpDQzogPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+CkNDOiA8Z2VvcmdlLmR1bmxh cEBldS5jaXRyaXguY29tPgpDQzogPGRnb2xvbWJAc2Vhcy51cGVubi5lZHU+CkNDOiA8bWVuZ3h1 QGNpcy51cGVubi5lZHU+CkNDOiA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IDxsaWNob25nNjU5 QGdtYWlsLmNvbT4KCi0tLQogZG9jcy9tYW4veGwucG9kLjEgICAgICAgICB8ICA3NyArKysrKysr KysrKysKIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgfCAzMDEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLQogdG9vbHMvbGlieGwveGxfY21kdGFibGUuYyB8 ICAgNCArLQogMyBmaWxlcyBjaGFuZ2VkLCAzNDggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9tYW4veGwucG9kLjEgYi9kb2NzL21hbi94bC5wb2QuMQpp bmRleCA0Mjc5YzdjLi4wMzUwYmFhIDEwMDY0NAotLS0gYS9kb2NzL21hbi94bC5wb2QuMQorKysg Yi9kb2NzL21hbi94bC5wb2QuMQpAQCAtMTA1MSw2ICsxMDUxLDEwIEBAIEI8T1BUSU9OUz4KIFNw ZWNpZnkgZG9tYWluIGZvciB3aGljaCBzY2hlZHVsZXIgcGFyYW1ldGVycyBhcmUgdG8gYmUgbW9k aWZpZWQgb3IgcmV0cmlldmVkLgogTWFuZGF0b3J5IGZvciBtb2RpZnlpbmcgc2NoZWR1bGVyIHBh cmFtZXRlcnMuCiAKKz1pdGVtIEI8LXYgVkNQVUlEL2FsbD4sIEI8LS12Y3B1aWQ9VkNQVUlEL2Fs bD4KKworU3BlY2lmeSB2Y3B1IGZvciB3aGljaCBzY2hlZHVsZXIgcGFyYW1ldGVycyBhcmUgdG8g YmUgbW9kaWZpZWQgb3IgcmV0cmlldmVkLgorCiA9aXRlbSBCPC1wIFBFUklPRD4sIEI8LS1wZXJp b2Q9UEVSSU9EPgogCiBQZXJpb2Qgb2YgdGltZSwgaW4gbWljcm9zZWNvbmRzLCBvdmVyIHdoaWNo IHRvIHJlcGxlbmlzaCB0aGUgYnVkZ2V0LgpAQCAtMTA2Niw2ICsxMDcwLDc5IEBAIFJlc3RyaWN0 IG91dHB1dCB0byBkb21haW5zIGluIHRoZSBzcGVjaWZpZWQgY3B1cG9vbC4KIAogPWJhY2sKIAor QjxFWEFNUExFPgorCis9b3ZlciA0CisKKzEpIHNob3cgdGhlIGJ1ZGdldCBhbmQgcGVyaW9kIG9m IGVhY2ggVkNQVSBvZiBlYWNoIGRvbWFpbiwgCitieSB1c2luZyAieGwgc2NoZWQtcnRkcyAtdiBh bGwiIGNvbW1hbmQuIEFuIGV4YW1wbGUgd291bGQgYmUgbGlrZToKKworeGwgc2NoZWQtcnRkcyAt diBhbGwKKworQ3B1cG9vbCBQb29sLTA6IHNjaGVkPVJURFMKKworICAgIE5hbWUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElEIFZDUFUgICAgUGVyaW9kICAgIEJ1ZGdldAorICAgIERv bWFpbi0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgIDAgICAgIDEwMDAwICAgICAg NDAwMAorICAgIHZtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgIDAgICAg ICAgMzAwICAgICAgIDE1MAorICAgIHZtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxICAgIDEgICAgICAgNDAwICAgICAgIDIwMAorICAgIHZtMSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxICAgIDIgICAgIDEwMDAwICAgICAgNDAwMAorICAgIHZtMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgIDMgICAgICAxMDAwICAgICAgIDUwMAorICAg IHZtMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICAgIDAgICAgIDEwMDAwICAg ICAgNDAwMAorICAgIHZtMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICAgIDEg ICAgIDEwMDAwICAgICAgNDAwMAorCitVc2luZyAieGwgc2NoZWQtcnRkcyIgd2lsbCBvdXRwdXQg dGhlIGRlZmF1bHQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzCitmb3IgZWFjaCBkb21haW4uIEFuIGV4 YW1wbGUgd291bGQgYmUgbGlrZToKKworeGwgc2NoZWQtcnRkcworCitDcHVwb29sIFBvb2wtMDog c2NoZWQ9UlREUworCisgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQg ICAgUGVyaW9kICAgIEJ1ZGdldAorICAgIERvbWFpbi0wICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwICAgICAxMDAwMCAgICAgIDQwMDAKKyAgICB2bTEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMSAgICAgMTAwMDAgICAgICA0MDAwCisgICAgdm0yICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDIgICAgIDEwMDAwICAgICAgNDAwMAorCisKKzIpIHNob3cgdGhl IGJ1ZGdldCBhbmQgcGVyaW9kIG9mIGVhY2ggVkNQVSBvZiBhIHNwZWNpZmljIGRvbWFpbiwgCiti eSB1c2luZywgZS5nLiwgInhsIHNjaGVkLXJ0ZHMgLWQgdm0xIC12IGFsbCIgY29tbWFuZC4gVGhl IG91dHB1dCAKK3dvdWxkIGJlIGxpa2U6CisKK3hsIHNjaGVkLXJ0ZHMgLWQgdm0xIC12IGFsbAor CisgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQgVkNQVSAgICBQZXJp b2QgICAgQnVkZ2V0CisgICAgdm0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEg ICAgMCAgICAgICAzMDAgICAgICAgMTUwCisgICAgdm0xICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEgICAgMSAgICAgICA0MDAgICAgICAgMjAwCisgICAgdm0xICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDEgICAgMiAgICAgMTAwMDAgICAgICA0MDAwCisgICAgdm0x ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgMyAgICAgIDEwMDAgICAgICAg NTAwCisKK1RvIHNob3cgYSBzdWJzZXQgb2YgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIFZDUFVzIG9m IGEgc3BlY2lmaWMgZG9tYWluLCAKK3BsZWFzZSB1c2UsIGUuZy4sInhsIHNjaGVkLXJ0ZHMgLWQg dm0xIC12IDAgLXYgMyIgY29tbWFuZC4gCitUaGUgb3V0cHV0IHdvdWxkIGJlOgorCit4bCBzY2hl ZC1ydGRzIC1kIHZtMSAtdiAwIC12IDMKKworICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElEIFZDUFUgICAgUGVyaW9kICAgIEJ1ZGdldAorICAgIHZtMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxICAgIDAgICAgICAgMzAwICAgICAgIDE1MAorICAgIHZt MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgIDMgICAgICAxMDAwICAgICAg IDUwMAorCitVc2luZyBjb21tYW5kLCBlLmcuLCAieGwgc2NoZWQtcnRkcyAtZCB2bTEiIHdpbGwg b3V0cHV0IHRoZSBkZWZhdWx0CitzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb2Ygdm0xLiBBbiBleGFt cGxlIHdvdWxkIGJlIGxpa2U6CisKK3hsIHNjaGVkLXJ0ZHMgLWQgdm0xCisKKyAgICBOYW1lICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRCAgICBQZXJpb2QgICAgQnVkZ2V0CisgICAg dm0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgIDEwMDAwICAgICAgNDAw MAorCisKKzMpIFVzZXJzIGNhbiBzZXQgdGhlIGJ1ZGdldCBhbmQgcGVyaW9kIG9mIG11bHRpcGxl IFZDUFVzIG9mIGEgCitzcGVjaWZpYyBkb21haW4gd2l0aCBvbmx5IG9uZSBjb21tYW5kLCAKK2Uu Zy4sICJ4bCBzY2hlZC1ydGRzIC1kIHZtMSAtdiAwIC1wIDEwMCAtYiA1MCAtdiAzIC1wIDMwMCAt YiAxNTAiLgorCitVc2VycyBjYW4gc2V0IGFsbCBWQ1BVcyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRl cnMsIGJ5IG9uZSBjb21tYW5kLgorZS5nLiwgInhsIHNjaGVkLXJ0ZHMgLWQgdm0xIC12IGFsbCAt cCA1MDAgLWIgMjUwIi4KKworPWJhY2sKKwogPWJhY2sKIAogPWhlYWQxIENQVVBPT0xTIENPTU1B TkRTCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMgYi90b29scy9saWJ4bC94 bF9jbWRpbXBsLmMKaW5kZXggMmI2MzcxZC4uOTdlOGIzMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGli eGwveGxfY21kaW1wbC5jCisrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwpAQCAtNTgyMyw2 ICs1ODIzLDUyIEBAIHN0YXRpYyBpbnQgc2NoZWRfZG9tYWluX3NldChpbnQgZG9taWQsIGNvbnN0 IGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXMgKnNjaW5mbykKICAgICByZXR1cm4gMDsKIH0KIAor c3RhdGljIGludCBzY2hlZF92Y3B1X2dldChsaWJ4bF9zY2hlZHVsZXIgc2NoZWQsIGludCBkb21p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgKnNj aW5mbykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1z X2dldChjdHgsIGRvbWlkLCBzY2luZm8pOworICAgIGlmIChyYykgeworICAgICAgICBmcHJpbnRm KHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2dldCBmYWlsZWQuXG4iKTsKKyAgICAg ICAgZXhpdCgtMSk7CisgICAgfQorICAgIGlmIChzY2luZm8tPnNjaGVkICE9IHNjaGVkKSB7Cisg ICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZ2V0IHJldHVy bmVkICVzIG5vdCAlcy5cbiIsCisgICAgICAgICAgICAgICAgbGlieGxfc2NoZWR1bGVyX3RvX3N0 cmluZyhzY2luZm8tPnNjaGVkKSwKKyAgICAgICAgICAgICAgICBsaWJ4bF9zY2hlZHVsZXJfdG9f c3RyaW5nKHNjaGVkKSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAw OworfQorCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfc2V0KGludCBkb21pZCwgY29uc3QgbGlieGxf dmNwdV9zY2hlZF9wYXJhbXMgKnNjaW5mbykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxp YnhsX3ZjcHVfc2NoZWRfcGFyYW1zX3NldChjdHgsIGRvbWlkLCBzY2luZm8pOworICAgIGlmIChy YykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX3Nl dCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZXhpdCgtMSk7CisgICAgfQorCisgICAgcmV0dXJuIHJj OworfQorCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfc2V0X2FsbChpbnQgZG9taWQsIGNvbnN0IGxp YnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpzY2luZm8pCit7CisgICAgaW50IHJjOworCisgICAgcmMg PSBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19zZXRfYWxsKGN0eCwgZG9taWQsIHNjaW5mbyk7Cisg ICAgaWYgKHJjKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfdmNwdV9zY2hlZF9w YXJhbXNfc2V0IGZhaWxlZC5cbiIpOworICAgICAgICBleGl0KC0xKTsKKyAgICB9CisKKyAgICBy ZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgc2NoZWRfY3JlZGl0X3BhcmFtc19zZXQoaW50IHBv b2xpZCwgbGlieGxfc2NoZWRfY3JlZGl0X3BhcmFtcyAqc2NpbmZvKQogewogICAgIGlmIChsaWJ4 bF9zY2hlZF9jcmVkaXRfcGFyYW1zX3NldChjdHgsIHBvb2xpZCwgc2NpbmZvKSkgewpAQCAtNTk0 Miw2ICs1OTg4LDM3IEBAIHN0YXRpYyBpbnQgc2NoZWRfcnRkc19kb21haW5fb3V0cHV0KAogICAg IHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHNjaGVkX3J0ZHNfdmNwdV9vdXRwdXQoaW50IGRv bWlkLCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQoreworICAgIGNoYXIgKmRvbW5h bWU7CisgICAgaW50IHJjID0gMDsKKyAgICBpbnQgaTsKKworICAgIGlmIChkb21pZCA8IDApIHsK KyAgICAgICAgcHJpbnRmKCIlLTMzcyAlNHMgJTRzICU5cyAlOXNcbiIsICJOYW1lIiwgIklEIiwK KyAgICAgICAgICAgICAgICJWQ1BVIiwgIlBlcmlvZCIsICJCdWRnZXQiKTsKKyAgICAgICAgcmV0 dXJuIDA7CisgICAgfQorCisgICAgcmMgPSBzY2hlZF92Y3B1X2dldChMSUJYTF9TQ0hFRFVMRVJf UlREUywgZG9taWQsIHNjaW5mbyk7CisgICAgaWYgKHJjKQorICAgICAgICBnb3RvIG91dDsKKwor ICAgIGRvbW5hbWUgPSBsaWJ4bF9kb21pZF90b19uYW1lKGN0eCwgZG9taWQpOworICAgIGZvciAo IGkgPSAwOyBpIDwgc2NpbmZvLT5udW1fdmNwdXM7IGkrKyApIHsKKyAgICAgICAgcHJpbnRmKCIl LTMzcyAlNGQgJTRkICU5IlBSSXUzMiIgJTkiUFJJdTMyIlxuIiwKKyAgICAgICAgICAgICAgIGRv bW5hbWUsCisgICAgICAgICAgICAgICBkb21pZCwKKyAgICAgICAgICAgICAgIHNjaW5mby0+dmNw dXNbaV0udmNwdWlkLAorICAgICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS5wZXJpb2QsCisg ICAgICAgICAgICAgICBzY2luZm8tPnZjcHVzW2ldLmJ1ZGdldCk7CisgICAgfQorICAgIGZyZWUo ZG9tbmFtZSk7CisKK291dDoKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgc2NoZWRf cnRkc19wb29sX291dHB1dCh1aW50MzJfdCBwb29saWQpCiB7CiAgICAgY2hhciAqcG9vbG5hbWU7 CkBAIC02MDE1LDYgKzYwOTIsNjUgQEAgc3RhdGljIGludCBzY2hlZF9kb21haW5fb3V0cHV0KGxp YnhsX3NjaGVkdWxlciBzY2hlZCwgaW50ICgqb3V0cHV0KShpbnQpLAogICAgIHJldHVybiAwOwog fQogCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfb3V0cHV0KGxpYnhsX3NjaGVkdWxlciBzY2hlZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqb3V0cHV0KShpbnQsIGxpYnhsX3Zj cHVfc2NoZWRfcGFyYW1zICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpw b29sb3V0cHV0KSh1aW50MzJfdCksIGNvbnN0IGNoYXIgKmNwdXBvb2wpCit7CisgICAgbGlieGxf ZG9taW5mbyAqaW5mbzsKKyAgICBsaWJ4bF9jcHVwb29saW5mbyAqcG9vbGluZm8gPSBOVUxMOwor ICAgIHVpbnQzMl90IHBvb2xpZDsKKyAgICBpbnQgbmJfZG9tYWluLCBuX3Bvb2xzID0gMCwgaSwg cDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgaWYgKGNwdXBvb2wpIHsKKyAgICAgICAgaWYgKGxp YnhsX2NwdXBvb2xfcXVhbGlmaWVyX3RvX2NwdXBvb2xpZChjdHgsIGNwdXBvb2wsICZwb29saWQs IE5VTEwpCisgICAgICAgICAgICB8fCAhbGlieGxfY3B1cG9vbGlkX2lzX3ZhbGlkKGN0eCwgcG9v bGlkKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bmtub3duIGNwdXBvb2wgXCcl c1wnXG4iLCBjcHVwb29sKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAg fQorCisgICAgaW5mbyA9IGxpYnhsX2xpc3RfZG9tYWluKGN0eCwgJm5iX2RvbWFpbik7CisgICAg aWYgKCFpbmZvKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfbGlzdF9kb21haW4g ZmFpbGVkLlxuIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBwb29saW5mbyA9IGxp YnhsX2xpc3RfY3B1cG9vbChjdHgsICZuX3Bvb2xzKTsKKyAgICBpZiAoIXBvb2xpbmZvKSB7Cisg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiZXJyb3IgZ2V0dGluZyBjcHVwb29sIGluZm9cbiIpOwor ICAgICAgICBsaWJ4bF9kb21pbmZvX2xpc3RfZnJlZShpbmZvLCBuYl9kb21haW4pOworICAgICAg ICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBmb3IgKHAgPSAwOyAhcmMgJiYgKHAgPCBuX3Bvb2xz KTsgcCsrKSB7CisgICAgICAgIGlmICgocG9vbGluZm9bcF0uc2NoZWQgIT0gc2NoZWQpIHx8Cisg ICAgICAgICAgICAoY3B1cG9vbCAmJiAocG9vbGlkICE9IHBvb2xpbmZvW3BdLnBvb2xpZCkpKQor ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcG9vbG91dHB1dChwb29saW5mb1twXS5w b29saWQpOworCisgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zIHNjaW5mb19vdXQ7Cisg ICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2luaXQoJnNjaW5mb19vdXQpOworICAgICAg ICBvdXRwdXQoLTEsICZzY2luZm9fb3V0KTsKKyAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJh bXNfZGlzcG9zZSgmc2NpbmZvX291dCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYl9kb21h aW47IGkrKykgeworICAgICAgICAgICAgaWYgKGluZm9baV0uY3B1cG9vbCAhPSBwb29saW5mb1tw XS5wb29saWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsaWJ4bF92 Y3B1X3NjaGVkX3BhcmFtcyBzY2luZm87CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3Bh cmFtc19pbml0KCZzY2luZm8pOworICAgICAgICAgICAgc2NpbmZvLm51bV92Y3B1cyA9IDA7Cisg ICAgICAgICAgICByYyA9IG91dHB1dChpbmZvW2ldLmRvbWlkLCAmc2NpbmZvKTsKKyAgICAgICAg ICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2Rpc3Bvc2UoJnNjaW5mbyk7CisgICAgICAgICAg ICBpZiAocmMpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICBsaWJ4bF9jcHVwb29saW5mb19saXN0X2ZyZWUocG9vbGluZm8sIG5fcG9vbHMpOworICAgIGxp YnhsX2RvbWluZm9fbGlzdF9mcmVlKGluZm8sIG5iX2RvbWFpbik7CisgICAgcmV0dXJuIDA7Cit9 CisKIC8qIAogICogPG5vdGhpbmc+ICAgICAgICAgICAgIDogTGlzdCBhbGwgZG9tYWluIHBhcmFt cyBhbmQgc2NoZWQgcGFyYW1zIGZyb20gYWxsIHBvb2xzCiAgKiAtZCBbZG9taWRdICAgICAgICAg ICAgOiBMaXN0IGRvbWFpbiBwYXJhbXMgZm9yIGRvbWFpbgpAQCAtNjIxNSw4NCArNjM1MSwxODMg QEAgaW50IG1haW5fc2NoZWRfY3JlZGl0MihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIC8qCiAg KiA8bm90aGluZz4gICAgICAgICAgICA6IExpc3QgYWxsIGRvbWFpbiBwYXJhbXRlcnMgYW5kIHNj aGVkIHBhcmFtcwotICogLWQgW2RvbWlkXSAgICAgICAgICAgOiBMaXN0IGRvbWFpbiBwYXJhbXMg Zm9yIGRvbWFpbgorICogLWQgW2RvbWlkXSAgICAgICAgICAgOiBMaXN0IGRlZmF1bHQgZG9tYWlu IHBhcmFtcyBmb3IgZG9tYWluCiAgKiAtZCBbZG9taWRdIFtwYXJhbXNdICA6IFNldCBkb21haW4g cGFyYW1zIGZvciBkb21haW4KKyAqIC1kIFtkb21pZF0gLXYgW3ZjcHVpZCAxXSAtdiBbdmNwdWlk IDJdIC4uLiAgOgorICogTGlzdCBwZXItVkNQVSBwYXJhbXMgZm9yIGRvbWFpbgorICogLWQgW2Rv bWlkXSAtdiBhbGwgIDogTGlzdCBhbGwgcGVyLVZDUFUgcGFyYW1zIGZvciBkb21haW4KKyAqIC12 IGFsbCAgOiBMaXN0IGFsbCBwZXItVkNQVSBwYXJhbXMgZm9yIGFsbCBkb21haW5zCisgKiAtZCBb ZG9taWRdIC12IFt2Y3B1aWQgMV0gW3BhcmFtc10gLXYgW3ZjcHVpZCAyXSBbcGFyYW1zXSAuLi4g IDoKKyAqIFNldCBwZXItVkNQVSBwYXJhbXMgZm9yIGRvbWFpbgorICogLWQgW2RvbWlkXSAtdiBh bGwgW3BhcmFtc10gIDogU2V0IGFsbCBwZXItVkNQVSBwYXJhbXMgZm9yIGRvbWFpbgogICovCiBp bnQgbWFpbl9zY2hlZF9ydGRzKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgICBjb25zdCBj aGFyICpkb20gPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmNwdXBvb2wgPSBOVUxMOwotICAgIGlu dCBwZXJpb2QgPSAwOyAvKiBwZXJpb2QgaXMgaW4gbWljcm9zZWNvbmQgKi8KLSAgICBpbnQgYnVk Z2V0ID0gMDsgLyogYnVkZ2V0IGlzIGluIG1pY3Jvc2Vjb25kICovCisgICAgaW50ICp2Y3B1cyA9 IChpbnQgKil4bWFsbG9jKHNpemVvZihpbnQpKTsgLyogSURzIG9mIFZDUFVzIHRoYXQgY2hhbmdl ICovCisgICAgaW50ICpwZXJpb2RzID0gKGludCAqKXhtYWxsb2Moc2l6ZW9mKGludCkpOyAvKiBw ZXJpb2QgaXMgaW4gbWljcm9zZWNvbmQgKi8KKyAgICBpbnQgKmJ1ZGdldHMgPSAoaW50ICopeG1h bGxvYyhzaXplb2YoaW50KSk7IC8qIGJ1ZGdldCBpcyBpbiBtaWNyb3NlY29uZCAqLworICAgIGlu dCB2X3NpemUgPSAxOyAvKiBzaXplIG9mIHZjcHVzIGFycmF5ICovCisgICAgaW50IHBfc2l6ZSA9 IDE7IC8qIHNpemUgb2YgcGVyaW9kcyBhcnJheSAqLworICAgIGludCBiX3NpemUgPSAxOyAvKiBz aXplIG9mIGJ1ZGdldHMgYXJyYXkgKi8KKyAgICBpbnQgdl9pbmRleCA9IDA7IC8qIGluZGV4IGlu IHZjcHVzIGFycmF5ICovCisgICAgaW50IHBfaW5kZXggPTA7IC8qIGluZGV4IGluIHBlcmlvZHMg YXJyYXkgKi8KKyAgICBpbnQgYl9pbmRleCA9MDsgLyogaW5kZXggZm9yIGluIGJ1ZGdldHMgYXJy YXkgKi8KICAgICBib29sIG9wdF9wID0gZmFsc2U7CiAgICAgYm9vbCBvcHRfYiA9IGZhbHNlOwot ICAgIGludCBvcHQsIHJjOworICAgIGJvb2wgb3B0X3YgPSBmYWxzZTsKKyAgICBib29sIG9wdF9h bGwgPSBmYWxzZTsgLyogb3V0cHV0IHBlci1kb20gcGFyYW1ldGVycyAqLworICAgIGludCBvcHQs IGksIHJjOwogICAgIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKICAgICAgICAgeyJk b21haW4iLCAxLCAwLCAnZCd9LAogICAgICAgICB7InBlcmlvZCIsIDEsIDAsICdwJ30sCiAgICAg ICAgIHsiYnVkZ2V0IiwgMSwgMCwgJ2InfSwKKyAgICAgICAgeyJ2Y3B1aWQiLDEsIDAsICd2J30s CiAgICAgICAgIHsiY3B1cG9vbCIsIDEsIDAsICdjJ30sCiAgICAgICAgIENPTU1PTl9MT05HX09Q VFMKICAgICB9OwogCi0gICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgImQ6cDpiOmM6Iiwgb3B0 cywgInNjaGVkLXJ0ZHMiLCAwKSB7CisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgImQ6cDpi OnY6YyIsIG9wdHMsICJzY2hlZC1ydGRzIiwgMCkgewogICAgIGNhc2UgJ2QnOgogICAgICAgICBk b20gPSBvcHRhcmc7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ3AnOgotICAgICAgICBwZXJp b2QgPSBzdHJ0b2wob3B0YXJnLCBOVUxMLCAxMCk7CisgICAgICAgIGlmIChwX2luZGV4ID49IHBf c2l6ZSkgeworICAgICAgICAgICAgLyogcGVyaW9kcyBhcnJheSBpcyBmdWxsCisgICAgICAgICAg ICAgKiBkb3VibGUgdGhlIGFycmF5IHNpemUgZm9yIG5ldyBlbGVtZW50cworICAgICAgICAgICAg ICovCisgICAgICAgICAgICBwX3NpemUgKj0gMjsKKyAgICAgICAgICAgIHBlcmlvZHMgPSB4cmVh bGxvYyhwZXJpb2RzLCBwX3NpemUpOworICAgICAgICB9CisgICAgICAgIHBlcmlvZHNbcF9pbmRl eCsrXSA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDEwKTsKICAgICAgICAgb3B0X3AgPSAxOwogICAg ICAgICBicmVhazsKICAgICBjYXNlICdiJzoKLSAgICAgICAgYnVkZ2V0ID0gc3RydG9sKG9wdGFy ZywgTlVMTCwgMTApOworICAgICAgICBpZiAoYl9pbmRleCA+PSBiX3NpemUpIHsgLyogYnVkZ2V0 cyBhcnJheSBpcyBmdWxsICovCisgICAgICAgICAgICBiX3NpemUgKj0gMjsKKyAgICAgICAgICAg IGJ1ZGdldHMgPSB4cmVhbGxvYyhidWRnZXRzLCBiX3NpemUpOworICAgICAgICB9CisgICAgICAg IGJ1ZGdldHNbYl9pbmRleCsrXSA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDEwKTsKICAgICAgICAg b3B0X2IgPSAxOwogICAgICAgICBicmVhazsKKyAgICBjYXNlICd2JzoKKyAgICAgICAgaWYgKCFz dHJjbXAob3B0YXJnLCAiYWxsIikpIHsgLyogZ2V0IG9yIHNldCBhbGwgdmNwdXMgb2YgYSBkb21h aW4gKi8KKyAgICAgICAgICAgIG9wdF9hbGwgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIH0KKyAgICAgICAgaWYgKHZfaW5kZXggPj0gdl9zaXplKSB7IC8qIHZjcHVzIGFycmF5IGlz IGZ1bGwgKi8KKyAgICAgICAgICAgIHZfc2l6ZSAqPSAyOworICAgICAgICAgICAgdmNwdXMgPSB4 cmVhbGxvYyh2Y3B1cywgdl9zaXplKTsKKyAgICAgICAgfQorICAgICAgICB2Y3B1c1t2X2luZGV4 KytdID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTApOworICAgICAgICBvcHRfdiA9IDE7CisgICAg ICAgIGJyZWFrOwogICAgIGNhc2UgJ2MnOgogICAgICAgICBjcHVwb29sID0gb3B0YXJnOwogICAg ICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoY3B1cG9vbCAmJiAoZG9tIHx8IG9wdF9wIHx8 IG9wdF9iKSkgeworICAgIGlmIChjcHVwb29sICYmIChkb20gfHwgb3B0X3AgfHwgb3B0X2IgfHwg b3B0X3YgfHwgb3B0X2FsbCkpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTcGVjaWZ5aW5n IGEgY3B1cG9vbCBpcyBub3QgYWxsb3dlZCB3aXRoICIKICAgICAgICAgICAgICAgICAib3RoZXIg b3B0aW9ucy5cbiIpOwotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICByYyA9 IEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBvdXQ7CiAgICAgfQotICAgIGlmICghZG9tICYm IChvcHRfcCB8fCBvcHRfYikpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJNdXN0IHNwZWNp ZnkgYSBkb21haW4uXG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBpZiAo IWRvbSAmJiAob3B0X3AgfHwgb3B0X2IgfHwgb3B0X3YpKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiTWlzc2luZyBwYXJhbWV0ZXJzLlxuIik7CisgICAgICAgIHJjID0gRVhJVF9GQUlMVVJF OworICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gICAgaWYgKG9wdF9wICE9IG9wdF9iKSB7Ci0g ICAgICAgIGZwcmludGYoc3RkZXJyLCAiTXVzdCBzcGVjaWZ5IHBlcmlvZCBhbmQgYnVkZ2V0XG4i KTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBpZiAoZG9tICYmICFvcHRfdiAm JiAhb3B0X2FsbCAmJiAob3B0X3AgfHwgb3B0X2IpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJy LCAiTXVzdCBzcGVjaWZ5IFZDUFUuXG4iKTsKKyAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Cisg ICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBpZiAob3B0X3YgJiYgb3B0X2FsbCkgeworICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIkluY29ycmVjdCBWQ1BVIElEcy5cbiIpOworICAgICAgICBy YyA9IEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGlmICgoKHZf aW5kZXggPiBiX2luZGV4KSAmJiBvcHRfYikgfHwgKCh2X2luZGV4ID4gcF9pbmRleCkgJiYgb3B0 X3ApCisgICAgICAgIHx8IHBfaW5kZXggIT0gYl9pbmRleCkgeworICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIkluY29ycmVjdCBudW1iZXIgb2YgcGVyaW9kIGFuZCBidWRnZXRcbiIpOworICAgICAg ICByYyA9IEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgaWYg KCFkb20pIHsgLyogbGlzdCBhbGwgZG9tYWluJ3MgcnQgc2NoZWR1bGVyIGluZm8gKi8KLSAgICAg ICAgaWYgKHNjaGVkX2RvbWFpbl9vdXRwdXQoTElCWExfU0NIRURVTEVSX1JURFMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkX3J0ZHNfZG9tYWluX291dHB1dCwKKyAgICBp ZiAoKCFkb20pICYmIG9wdF9hbGwpIHsKKyAgICAgICAgLyogZ2V0IGFsbCBkb21haW4ncyBwZXIt dmNwdSBydGRzIHNjaGVkdWxlciBwYXJhbWV0ZXJzICovCisgICAgICAgIHJjID0gLXNjaGVkX3Zj cHVfb3V0cHV0KExJQlhMX1NDSEVEVUxFUl9SVERTLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzY2hlZF9ydGRzX3ZjcHVfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzY2hlZF9ydGRzX3Bvb2xfb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjcHVwb29sKSkKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdXBvb2wpOworICAgICAgICBnb3RvIG91dDsK KyAgICB9IGVsc2UgaWYgKCFkb20gJiYgIW9wdF9hbGwpIHsKKyAgICAgICAgLyogbGlzdCBhbGwg ZG9tYWluJ3MgZGVmYXVsdCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgcmMgPSAt c2NoZWRfZG9tYWluX291dHB1dChMSUJYTF9TQ0hFRFVMRVJfUlREUywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzY2hlZF9ydGRzX2RvbWFpbl9vdXRwdXQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWRfcnRkc19wb29sX291dHB1dCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVwb29sKTsKKyAgICAgICAgZ290byBvdXQ7CiAg ICAgfSBlbHNlIHsKICAgICAgICAgdWludDMyX3QgZG9taWQgPSBmaW5kX2RvbWFpbihkb20pOwot ICAgICAgICBpZiAoIW9wdF9wICYmICFvcHRfYikgeyAvKiBvdXRwdXQgcnQgc2NoZWR1bGVyIGlu Zm8gKi8KKyAgICAgICAgaWYgKCFvcHRfdiAmJiAhb3B0X2FsbCkgeyAvKiBvdXRwdXQgZGVmYXVs dCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgKi8KICAgICAgICAgICAgIHNjaGVkX3J0ZHNfZG9tYWlu X291dHB1dCgtMSk7Ci0gICAgICAgICAgICBpZiAoc2NoZWRfcnRkc19kb21haW5fb3V0cHV0KGRv bWlkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgICAgICB9IGVs c2UgeyAvKiBzZXQgcnQgc2NoZWR1bGVyIHBhcmFtYXRlcnMgKi8KLSAgICAgICAgICAgIGxpYnhs X2RvbWFpbl9zY2hlZF9wYXJhbXMgc2NpbmZvOwotICAgICAgICAgICAgbGlieGxfZG9tYWluX3Nj aGVkX3BhcmFtc19pbml0KCZzY2luZm8pOworICAgICAgICAgICAgcmMgPSAtc2NoZWRfcnRkc19k b21haW5fb3V0cHV0KGRvbWlkKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9IGVs c2UgaWYgKCFvcHRfcCAmJiAhb3B0X2IpIHsKKyAgICAgICAgICAgIC8qIGdldCBwZXItdmNwdSBy dGRzIHNjaGVkdWxpbmcgcGFyYW1ldGVycyAqLworICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hl ZF9wYXJhbXMgc2NpbmZvOworICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfaW5p dCgmc2NpbmZvKTsKKyAgICAgICAgICAgIHNjaGVkX3J0ZHNfdmNwdV9vdXRwdXQoLTEsICZzY2lu Zm8pOworICAgICAgICAgICAgc2NpbmZvLm51bV92Y3B1cyA9IHZfaW5kZXg7CisgICAgICAgICAg ICBpZiAodl9pbmRleCA+IDApCisgICAgICAgICAgICAgICAgc2NpbmZvLnZjcHVzID0gKGxpYnhs X3NjaGVkX3BhcmFtcyAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtYWxsb2Mo c2l6ZW9mKGxpYnhsX3NjaGVkX3BhcmFtcykgKiAodl9pbmRleCkpOworICAgICAgICAgICAgZm9y IChpID0gMDsgaSA8IHZfaW5kZXg7IGkrKykKKyAgICAgICAgICAgICAgICBzY2luZm8udmNwdXNb aV0udmNwdWlkID0gdmNwdXNbaV07CisgICAgICAgICAgICByYyA9IC1zY2hlZF9ydGRzX3ZjcHVf b3V0cHV0KGRvbWlkLCAmc2NpbmZvKTsKKyAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFy YW1zX2Rpc3Bvc2UoJnNjaW5mbyk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICB9IGVsc2Ug aWYgKG9wdF92IHx8IG9wdF9hbGwpIHsKKyAgICAgICAgICAgIC8qIHNldCBwZXItdmNwdSBydGRz IHNjaGVkdWxpbmcgcGFyYW1ldGVycyAqLworICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9w YXJhbXMgc2NpbmZvOworICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfaW5pdCgm c2NpbmZvKTsKICAgICAgICAgICAgIHNjaW5mby5zY2hlZCA9IExJQlhMX1NDSEVEVUxFUl9SVERT OwotICAgICAgICAgICAgc2NpbmZvLnBlcmlvZCA9IHBlcmlvZDsKLSAgICAgICAgICAgIHNjaW5m by5idWRnZXQgPSBidWRnZXQ7CisgICAgICAgICAgICBpZiAodl9pbmRleCA+IDApIHsKKyAgICAg ICAgICAgICAgICBzY2luZm8ubnVtX3ZjcHVzID0gdl9pbmRleDsKKyAgICAgICAgICAgICAgICBz Y2luZm8udmNwdXMgPSAobGlieGxfc2NoZWRfcGFyYW1zICopCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeG1hbGxvYyhzaXplb2YobGlieGxfc2NoZWRfcGFyYW1zKSAqICh2X2luZGV4 KSk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHZfaW5kZXg7IGkrKykgeworICAg ICAgICAgICAgICAgICAgICBzY2luZm8udmNwdXNbaV0udmNwdWlkID0gdmNwdXNbaV07CisgICAg ICAgICAgICAgICAgICAgIHNjaW5mby52Y3B1c1tpXS5wZXJpb2QgPSBwZXJpb2RzW2ldOworICAg ICAgICAgICAgICAgICAgICBzY2luZm8udmNwdXNbaV0uYnVkZ2V0ID0gYnVkZ2V0c1tpXTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmMgPSBzY2hlZF92Y3B1X3NldChkb21p ZCwgJnNjaW5mbyk7CisgICAgICAgICAgICB9IGVsc2UgeyAvKiBzZXQgcGFyYW1zIGZvciBhbGwg dmNwdXMgKi8KKyAgICAgICAgICAgICAgICBzY2luZm8ubnVtX3ZjcHVzID0gMTsKKyAgICAgICAg ICAgICAgICBzY2luZm8udmNwdXMgPSAobGlieGxfc2NoZWRfcGFyYW1zICopCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeG1hbGxvYyhzaXplb2YobGlieGxfc2NoZWRfcGFyYW1zKSk7 CisgICAgICAgICAgICAgICAgc2NpbmZvLnZjcHVzWzBdLnBlcmlvZCA9IHBlcmlvZHNbMF07Cisg ICAgICAgICAgICAgICAgc2NpbmZvLnZjcHVzWzBdLmJ1ZGdldCA9IGJ1ZGdldHNbMF07CisgICAg ICAgICAgICAgICAgcmMgPSBzY2hlZF92Y3B1X3NldF9hbGwoZG9taWQsICZzY2luZm8pOworICAg ICAgICAgICAgfQogCi0gICAgICAgICAgICByYyA9IHNjaGVkX2RvbWFpbl9zZXQoZG9taWQsICZz Y2luZm8pOwotICAgICAgICAgICAgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtc19kaXNwb3NlKCZz Y2luZm8pOwotICAgICAgICAgICAgaWYgKHJjKQotICAgICAgICAgICAgICAgIHJldHVybiBFWElU X0ZBSUxVUkU7CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19kaXNwb3NlKCZz Y2luZm8pOworICAgICAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICAgICAgcmMgPSAtcmM7 CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg ICB9CiAKLSAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIHJjID0gRVhJVF9TVUNDRVNTOwor b3V0OgorICAgIGZyZWUodmNwdXMpOworICAgIGZyZWUocGVyaW9kcyk7CisgICAgZnJlZShidWRn ZXRzKTsKKyAgICByZXR1cm4gcmM7CiB9CiAKIGludCBtYWluX2RvbWlkKGludCBhcmdjLCBjaGFy ICoqYXJndikKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgYi90b29scy9s aWJ4bC94bF9jbWR0YWJsZS5jCmluZGV4IGZkYzFhYzYuLjk2NjJiZGEgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKKysrIGIvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYwpA QCAtMjY4LDggKzI2OCwxMCBAQCBzdHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAg eyAic2NoZWQtcnRkcyIsCiAgICAgICAmbWFpbl9zY2hlZF9ydGRzLCAwLCAxLAogICAgICAgIkdl dC9zZXQgcnRkcyBzY2hlZHVsZXIgcGFyYW1ldGVycyIsCi0gICAgICAiWy1kIDxEb21haW4+IFst cFs9UEVSSU9EXV0gWy1iWz1CVURHRVRdXV0iLAorICAgICAgIlstZCA8RG9tYWluPiBbLXZbPVZD UFVJRC9hbGxdXSBbLXBbPVBFUklPRF1dIFstYls9QlVER0VUXV1dIiwKICAgICAgICItZCBET01B SU4sIC0tZG9tYWluPURPTUFJTiAgICAgRG9tYWluIHRvIG1vZGlmeVxuIgorICAgICAgIi12IFZD UFVJRC9hbGwsIC0tdmNwdWlkPVZDUFVJRC9hbGwgICAgVkNQVSB0byBtb2RpZnkgb3Igb3V0cHV0 O1xuIgorICAgICAgIiAgICAgICAgICAgICAgIFVzaW5nICctdiBhbGwnIHRvIG1vZGlmeS9vdXRw dXQgYWxsIHZjcHVzXG4iCiAgICAgICAiLXAgUEVSSU9ELCAtLXBlcmlvZD1QRVJJT0QgICAgIFBl cmlvZCAodXMpXG4iCiAgICAgICAiLWIgQlVER0VULCAtLWJ1ZGdldD1CVURHRVQgICAgIEJ1ZGdl dCAodXMpXG4iCiAgICAgfSwKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK