From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chong Li Subject: [PATCH v9 for Xen 4.7 4/4] xl: enable per-VCPU parameter for RTDS Date: Thu, 31 Mar 2016 23:59:46 -0500 Message-ID: <1459486786-3085-5-git-send-email-lichong659@gmail.com> References: <1459486786-3085-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: <1459486786-3085-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 dT4KU2lnbmVkLW9mZi1ieTogU2lzdSBYaSA8eGlzaXN1QGdtYWlsLmNvbT4KCkFja2VkLWJ5OiBX ZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KQ2hhbmdlcyBvbiBQQVRDSCB2ODoKMSkg SW1wcm92ZSB0aGUgZXhhbXBsZSBpbiB4bC5wb2QuMQoyKSBBZGQgc2NoZWRfcnRkc192Y3B1X291 dHB1dF9hbGwoKSBhbmQgc2NoZWRfdmNwdV9nZXRfYWxsKCkKdG8gb3V0cHV0IGFsbCB2Y3B1cyBv ZiBhIGRvbWFpbgozKSBGaXggc29tZSBjb2Rpbmcgc3R5bGUgaXNzdWVzCgpDaGFuZ2VzIG9uIFBB VENIIHY3OgoxKSBBZGQgZXhhbXBsZSB0byB4bC5wb2QuMQoKQ2hhbmdlcyBvbiBQQVRDSCB2NjoK MSkgTW9yZSBleHBsYWluIGluIHhsLnBvZC4xIGFuZCBjbWR0YWJsZS5jCjIpIFJlc29sdmUgc29t ZSBjb2Rpbmcgc3l0bGUgaXNzdWVzCgoKQ2hhbmdlcyBvbiBQQVRDSCB2NToKMSkgQWRkIHNjaGVk X3ZjcHVfc2V0X2FsbCgpIGZvciB0aGUgY2FzZXMgdGhhdCBhbGwgdmNwdXMgb2YgYQpkb21haW4g bmVlZCB0byBiZSBjaGFuZ2VkIHRvZ2V0aGVyLgoKCkNoYW5nZXMgb24gUEFUQ0ggdjQ6CjEpIENv ZGluZyBzdHlsZSBjaGFuZ2VzCgoKQ2hhbmdlcyBvbiBQQVRDSCB2MzoKMSkgU3VwcG9ydCBjb21t YW5kcywgZS5nLiwgInhsIHNjaGVkLXJ0ZHMgLWQgdm0xIiB0byBvdXRwdXQgdGhlCmRlZmF1bHQg c2NoZWR1bGluZyBwYXJhbWV0ZXJzCgoKQ2hhbmdlcyBvbiBQQVRDSCB2MjoKMSkgUmVtb3ZlIHBl ci1kb21haW4gb3V0cHV0IGZ1bmN0aW9ucyBmb3IgUlREUyBzY2hlZHVsZXIuCgoyKSBVc2VycyBu b3cgdXNlICctdiBhbGwnIHRvIHNwZWNpZnkgYWxsIFZDUFVzLgoKMykgU3VwcG9ydCBvdXRwdXR0 aW5nIGEgc3Vic2V0IG9mIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBWQ1BVcyAKb2YgYSBzcGVjaWZp YyBkb21haW4uCgo0KSBXaGVuIHNldHRpbmcgYWxsIFZDUFVzIHdpdGggdGhlIHNhbWUgcGFyYW1l dGVycyAoYnkgb25seSBvbmUgCmNvbW1hbmQpLCBubyBwZXItZG9tYWluIGZ1bmN0aW9uIGlzIGlu dm9rZWQuCgpDQzogPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+CkNDOiA8Z2VvcmdlLmR1bmxh cEBldS5jaXRyaXguY29tPgpDQzogPGRnb2xvbWJAc2Vhcy51cGVubi5lZHU+CkNDOiA8bWVuZ3h1 QGNpcy51cGVubi5lZHU+CkNDOiA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IDxsaWNob25nNjU5 QGdtYWlsLmNvbT4KCi0tLQogZG9jcy9tYW4veGwucG9kLjEgICAgICAgICB8ICA2NyArKysrKysr KysKIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgfCAzNjUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLQogdG9vbHMvbGlieGwveGxfY21kdGFibGUuYyB8ICAg NCArLQogMyBmaWxlcyBjaGFuZ2VkLCA0MDAgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jcy9tYW4veGwucG9kLjEgYi9kb2NzL21hbi94bC5wb2QuMQppbmRl eCA0ZDRiMzMzLi45ZTg5ZTBhIDEwMDY0NAotLS0gYS9kb2NzL21hbi94bC5wb2QuMQorKysgYi9k b2NzL21hbi94bC5wb2QuMQpAQCAtMTA1Niw2ICsxMDU2LDEwIEBAIEI8T1BUSU9OUz4KIFNwZWNp ZnkgZG9tYWluIGZvciB3aGljaCBzY2hlZHVsZXIgcGFyYW1ldGVycyBhcmUgdG8gYmUgbW9kaWZp ZWQgb3IgcmV0cmlldmVkLgogTWFuZGF0b3J5IGZvciBtb2RpZnlpbmcgc2NoZWR1bGVyIHBhcmFt ZXRlcnMuCiAKKz1pdGVtIEI8LXYgVkNQVUlEL2FsbD4sIEI8LS12Y3B1aWQ9VkNQVUlEL2FsbD4K KworU3BlY2lmeSB2Y3B1IGZvciB3aGljaCBzY2hlZHVsZXIgcGFyYW1ldGVycyBhcmUgdG8gYmUg bW9kaWZpZWQgb3IgcmV0cmlldmVkLgorCiA9aXRlbSBCPC1wIFBFUklPRD4sIEI8LS1wZXJpb2Q9 UEVSSU9EPgogCiBQZXJpb2Qgb2YgdGltZSwgaW4gbWljcm9zZWNvbmRzLCBvdmVyIHdoaWNoIHRv IHJlcGxlbmlzaCB0aGUgYnVkZ2V0LgpAQCAtMTA3MSw2ICsxMDc1LDY5IEBAIFJlc3RyaWN0IG91 dHB1dCB0byBkb21haW5zIGluIHRoZSBzcGVjaWZpZWQgY3B1cG9vbC4KIAogPWJhY2sKIAorQjxF WEFNUExFPgorCis9b3ZlciA0CisKKzEpIFVzZSBCPC12IGFsbD4gdG8gc2VlIHRoZSBidWRnZXQg YW5kIHBlcmlvZCBvZiBhbGwgdGhlIFZDUFVzIG9mCithbGwgdGhlIGRvbWFpbnM6CisKKyAgICB4 bCBzY2hlZC1ydGRzIC12IGFsbAorICAgIENwdXBvb2wgUG9vbC0wOiBzY2hlZD1SVERTCisgICAg TmFtZSAgICAgICAgICAgICAgICAgICAgICAgIElEIFZDUFUgICAgUGVyaW9kICAgIEJ1ZGdldAor ICAgIERvbWFpbi0wICAgICAgICAgICAgICAgICAgICAgMCAgICAwICAgICAxMDAwMCAgICAgIDQw MDAKKyAgICB2bTEgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgMCAgICAgICAzMDAgICAg ICAgMTUwCisgICAgdm0xICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgIDEgICAgICAgNDAw ICAgICAgIDIwMAorICAgIHZtMSAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAyICAgICAx MDAwMCAgICAgIDQwMDAKKyAgICB2bTEgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgMyAg ICAgIDEwMDAgICAgICAgNTAwCisgICAgdm0yICAgICAgICAgICAgICAgICAgICAgICAgICAyICAg IDAgICAgIDEwMDAwICAgICAgNDAwMAorICAgIHZtMiAgICAgICAgICAgICAgICAgICAgICAgICAg MiAgICAxICAgICAxMDAwMCAgICAgIDQwMDAKKworV2l0aG91dCBhbnkgYXJndW1lbnRzLCBpdCB3 aWxsIG91dHB1dCB0aGUgZGVmYXVsdCBzY2hlZHVpbmcKK3BhcmFtZXRlcnMgZm9yIGVhY2ggZG9t YWluOgorCisgICAgeGwgc2NoZWQtcnRkcworICAgIENwdXBvb2wgUG9vbC0wOiBzY2hlZD1SVERT CisgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIElEICAgIFBlcmlvZCAgICBCdWRnZXQK KyAgICBEb21haW4tMCAgICAgICAgICAgICAgICAgICAgIDAgICAgIDEwMDAwICAgICAgNDAwMAor ICAgIHZtMSAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAgMTAwMDAgICAgICA0MDAwCisg ICAgdm0yICAgICAgICAgICAgICAgICAgICAgICAgICAyICAgICAxMDAwMCAgICAgIDQwMDAKKwor CisyKSBVc2UsIGZvciBpbnN0YW5jZSBCPC1kIHZtMSwgLXYgYWxsPiB0byBzZWUgdGhlIGJ1ZGdl dCBhbmQKK3BlcmlvZCBvZiBhbGwgVkNQVXMgb2YgYSBzcGVjaWZpYyBkb21haW4gKEI8dm0xPik6 CisKKyAgICB4bCBzY2hlZC1ydGRzIC1kIHZtMSAtdiBhbGwKKyAgICBOYW1lICAgICAgICAgICAg ICAgICAgICAgICAgSUQgVkNQVSAgICBQZXJpb2QgICAgQnVkZ2V0CisgICAgdm0xICAgICAgICAg ICAgICAgICAgICAgICAgICAxICAgIDAgICAgICAgMzAwICAgICAgIDE1MAorICAgIHZtMSAgICAg ICAgICAgICAgICAgICAgICAgICAgMSAgICAxICAgICAgIDQwMCAgICAgICAyMDAKKyAgICB2bTEg ICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgMiAgICAgMTAwMDAgICAgICA0MDAwCisgICAg dm0xICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgIDMgICAgICAxMDAwICAgICAgIDUwMAor CitUbyBzZWUgdGhlIHBhcmFtZXRlcnMgb2YgYSBzdWJzZXQgb2YgdGhlIFZDUFVzIG9mIGEgZG9t YWluLCB1c2U6CisKKyAgICB4bCBzY2hlZC1ydGRzIC1kIHZtMSAtdiAwIC12IDMKKyAgICBOYW1l ICAgICAgICAgICAgICAgICAgICAgICAgSUQgVkNQVSAgICBQZXJpb2QgICAgQnVkZ2V0CisgICAg dm0xICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgIDAgICAgICAgMzAwICAgICAgIDE1MAor ICAgIHZtMSAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAzICAgICAgMTAwMCAgICAgICA1 MDAKKworSWYgbm8gQjwtdj4gaXMgc3BlZmljaWZpZWQsIHRoZSBkZWZhdWx0IHNjaGVkdWxpbmcg cGFyYW1ldGVyIGZvciB0aGUKK2RvbWFpbiBhcmUgc2hvd246CisKKyAgICB4bCBzY2hlZC1ydGRz IC1kIHZtMQorICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICBJRCAgICBQZXJpb2QgICAg QnVkZ2V0CisgICAgdm0xICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICAxMDAwMCAgICAg IDQwMDAKKworCiszKSBVc2VycyBjYW4gc2V0IHRoZSBidWRnZXQgYW5kIHBlcmlvZCBvZiBtdWx0 aXBsZSBWQ1BVcyBvZiBhCitzcGVjaWZpYyBkb21haW4gd2l0aCBvbmx5IG9uZSBjb21tYW5kLAor ZS5nLiwgInhsIHNjaGVkLXJ0ZHMgLWQgdm0xIC12IDAgLXAgMTAwIC1iIDUwIC12IDMgLXAgMzAw IC1iIDE1MCIuCisKK1RvIGNoYW5nZSB0aGUgcGFyYW1ldGVycyBvZiBhbGwgdGhlIFZDUFVzIG9m IGEgZG9tYWluLCB1c2UgQjwtdiBhbGw+LAorZS5nLiwgInhsIHNjaGVkLXJ0ZHMgLWQgdm0xIC12 IGFsbCAtcCA1MDAgLWIgMjUwIi4KKworPWJhY2sKKwogPWJhY2sKIAogPWhlYWQxIENQVVBPT0xT IENPTU1BTkRTCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMgYi90b29scy9s aWJ4bC94bF9jbWRpbXBsLmMKaW5kZXggNzc1MDk5NS4uZGM3NzY4OSAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGwveGxfY21kaW1wbC5jCisrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwpAQCAt NjE1OSw2ICs2MTU5LDcyIEBAIHN0YXRpYyBpbnQgc2NoZWRfZG9tYWluX3NldChpbnQgZG9taWQs IGNvbnN0IGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXMgKnNjaW5mbykKICAgICByZXR1cm4gMDsK IH0KIAorc3RhdGljIGludCBzY2hlZF92Y3B1X2dldChsaWJ4bF9zY2hlZHVsZXIgc2NoZWQsIGlu dCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJh bXMgKnNjaW5mbykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxpYnhsX3ZjcHVfc2NoZWRf cGFyYW1zX2dldChjdHgsIGRvbWlkLCBzY2luZm8pOworICAgIGlmIChyYykgeworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2dldCBmYWlsZWQuXG4iKTsK KyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgIH0KKyAgICBpZiAoc2NpbmZvLT5zY2hl ZCAhPSBzY2hlZCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRf cGFyYW1zX2dldCByZXR1cm5lZCAlcyBub3QgJXMuXG4iLAorICAgICAgICAgICAgICAgIGxpYnhs X3NjaGVkdWxlcl90b19zdHJpbmcoc2NpbmZvLT5zY2hlZCksCisgICAgICAgICAgICAgICAgbGli eGxfc2NoZWR1bGVyX3RvX3N0cmluZyhzY2hlZCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9 CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzY2hlZF92Y3B1X2dldF9hbGwobGli eGxfc2NoZWR1bGVyIHNjaGVkLCBpbnQgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQoreworICAgIGludCByYzsKKwor ICAgIHJjID0gbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZ2V0X2FsbChjdHgsIGRvbWlkLCBzY2lu Zm8pOworICAgIGlmIChyYykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVf c2NoZWRfcGFyYW1zX2dldF9hbGwgZmFpbGVkLlxuIik7CisgICAgICAgIGV4aXQoRVhJVF9GQUlM VVJFKTsKKyAgICB9CisgICAgaWYgKHNjaW5mby0+c2NoZWQgIT0gc2NoZWQpIHsKKyAgICAgICAg ZnByaW50ZihzdGRlcnIsICJsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19nZXRfYWxsIHJldHVybmVk ICVzIG5vdCAlcy5cbiIsCisgICAgICAgICAgICAgICAgbGlieGxfc2NoZWR1bGVyX3RvX3N0cmlu ZyhzY2luZm8tPnNjaGVkKSwKKyAgICAgICAgICAgICAgICBsaWJ4bF9zY2hlZHVsZXJfdG9fc3Ry aW5nKHNjaGVkKSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfc2V0KGludCBkb21pZCwgY29uc3QgbGlieGxfdmNw dV9zY2hlZF9wYXJhbXMgKnNjaW5mbykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxpYnhs X3ZjcHVfc2NoZWRfcGFyYW1zX3NldChjdHgsIGRvbWlkLCBzY2luZm8pOworICAgIGlmIChyYykg eworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX3NldCBm YWlsZWQuXG4iKTsKKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgIH0KKworICAgIHJl dHVybiAwOworfQorCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfc2V0X2FsbChpbnQgZG9taWQsIGNv bnN0IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpzY2luZm8pCit7CisgICAgaW50IHJjOworCisg ICAgcmMgPSBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19zZXRfYWxsKGN0eCwgZG9taWQsIHNjaW5m byk7CisgICAgaWYgKHJjKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfdmNwdV9z Y2hlZF9wYXJhbXNfc2V0X2FsbCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZXhpdChFWElUX0ZBSUxV UkUpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHNjaGVkX2NyZWRp dF9wYXJhbXNfc2V0KGludCBwb29saWQsIGxpYnhsX3NjaGVkX2NyZWRpdF9wYXJhbXMgKnNjaW5m bykKIHsKICAgICBpZiAobGlieGxfc2NoZWRfY3JlZGl0X3BhcmFtc19zZXQoY3R4LCBwb29saWQs IHNjaW5mbykpIHsKQEAgLTYyNzgsNiArNjM0NCw2NiBAQCBzdGF0aWMgaW50IHNjaGVkX3J0ZHNf ZG9tYWluX291dHB1dCgKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBzY2hlZF9ydGRz X3ZjcHVfb3V0cHV0KGludCBkb21pZCwgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgKnNjaW5mbykK K3sKKyAgICBjaGFyICpkb21uYW1lOworICAgIGludCByYyA9IDA7CisgICAgaW50IGk7CisKKyAg ICBpZiAoZG9taWQgPCAwKSB7CisgICAgICAgIHByaW50ZigiJS0zM3MgJTRzICU0cyAlOXMgJTlz XG4iLCAiTmFtZSIsICJJRCIsCisgICAgICAgICAgICAgICAiVkNQVSIsICJQZXJpb2QiLCAiQnVk Z2V0Iik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJjID0gc2NoZWRfdmNwdV9n ZXQoTElCWExfU0NIRURVTEVSX1JURFMsIGRvbWlkLCBzY2luZm8pOworICAgIGlmIChyYykKKyAg ICAgICAgcmV0dXJuIDE7CisKKyAgICBkb21uYW1lID0gbGlieGxfZG9taWRfdG9fbmFtZShjdHgs IGRvbWlkKTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IHNjaW5mby0+bnVtX3ZjcHVzOyBpKysgKSB7 CisgICAgICAgIHByaW50ZigiJS0zM3MgJTRkICU0ZCAlOSJQUkl1MzIiICU5IlBSSXUzMiJcbiIs CisgICAgICAgICAgICAgICBkb21uYW1lLAorICAgICAgICAgICAgICAgZG9taWQsCisgICAgICAg ICAgICAgICBzY2luZm8tPnZjcHVzW2ldLnZjcHVpZCwKKyAgICAgICAgICAgICAgIHNjaW5mby0+ dmNwdXNbaV0ucGVyaW9kLAorICAgICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS5idWRnZXQp OworICAgIH0KKyAgICBmcmVlKGRvbW5hbWUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50IHNjaGVkX3J0ZHNfdmNwdV9vdXRwdXRfYWxsKGludCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgKnNjaW5mbykK K3sKKyAgICBjaGFyICpkb21uYW1lOworICAgIGludCByYyA9IDA7CisgICAgaW50IGk7CisKKyAg ICBpZiAoZG9taWQgPCAwKSB7CisgICAgICAgIHByaW50ZigiJS0zM3MgJTRzICU0cyAlOXMgJTlz XG4iLCAiTmFtZSIsICJJRCIsCisgICAgICAgICAgICAgICAiVkNQVSIsICJQZXJpb2QiLCAiQnVk Z2V0Iik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHNjaW5mby0+bnVtX3ZjcHVz ID0gMDsKKyAgICByYyA9IHNjaGVkX3ZjcHVfZ2V0X2FsbChMSUJYTF9TQ0hFRFVMRVJfUlREUywg ZG9taWQsIHNjaW5mbyk7CisgICAgaWYgKHJjKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGRv bW5hbWUgPSBsaWJ4bF9kb21pZF90b19uYW1lKGN0eCwgZG9taWQpOworICAgIGZvciAoIGkgPSAw OyBpIDwgc2NpbmZvLT5udW1fdmNwdXM7IGkrKyApIHsKKyAgICAgICAgcHJpbnRmKCIlLTMzcyAl NGQgJTRkICU5IlBSSXUzMiIgJTkiUFJJdTMyIlxuIiwKKyAgICAgICAgICAgICAgIGRvbW5hbWUs CisgICAgICAgICAgICAgICBkb21pZCwKKyAgICAgICAgICAgICAgIHNjaW5mby0+dmNwdXNbaV0u dmNwdWlkLAorICAgICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS5wZXJpb2QsCisgICAgICAg ICAgICAgICBzY2luZm8tPnZjcHVzW2ldLmJ1ZGdldCk7CisgICAgfQorICAgIGZyZWUoZG9tbmFt ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgc2NoZWRfcnRkc19wb29sX291dHB1 dCh1aW50MzJfdCBwb29saWQpCiB7CiAgICAgY2hhciAqcG9vbG5hbWU7CkBAIC02MzUxLDYgKzY0 NzcsNjEgQEAgc3RhdGljIGludCBzY2hlZF9kb21haW5fb3V0cHV0KGxpYnhsX3NjaGVkdWxlciBz Y2hlZCwgaW50ICgqb3V0cHV0KShpbnQpLAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50 IHNjaGVkX3ZjcHVfb3V0cHV0KGxpYnhsX3NjaGVkdWxlciBzY2hlZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ICgqb3V0cHV0KShpbnQsIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1z ICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpwb29sb3V0cHV0KSh1aW50 MzJfdCksIGNvbnN0IGNoYXIgKmNwdXBvb2wpCit7CisgICAgbGlieGxfZG9taW5mbyAqaW5mbzsK KyAgICBsaWJ4bF9jcHVwb29saW5mbyAqcG9vbGluZm8gPSBOVUxMOworICAgIHVpbnQzMl90IHBv b2xpZDsKKyAgICBpbnQgbmJfZG9tYWluLCBuX3Bvb2xzID0gMCwgaSwgcDsKKyAgICBpbnQgcmMg PSAwOworCisgICAgaWYgKGNwdXBvb2wpIHsKKyAgICAgICAgaWYgKGxpYnhsX2NwdXBvb2xfcXVh bGlmaWVyX3RvX2NwdXBvb2xpZChjdHgsIGNwdXBvb2wsICZwb29saWQsIE5VTEwpCisgICAgICAg ICAgICB8fCAhbGlieGxfY3B1cG9vbGlkX2lzX3ZhbGlkKGN0eCwgcG9vbGlkKSkgeworICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICJ1bmtub3duIGNwdXBvb2wgXCclc1wnXG4iLCBjcHVwb29s KTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaW5mbyA9 IGxpYnhsX2xpc3RfZG9tYWluKGN0eCwgJm5iX2RvbWFpbik7CisgICAgaWYgKCFpbmZvKSB7Cisg ICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfbGlzdF9kb21haW4gZmFpbGVkLlxuIik7Cisg ICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBwb29saW5mbyA9IGxpYnhsX2xpc3RfY3B1cG9v bChjdHgsICZuX3Bvb2xzKTsKKyAgICBpZiAoIXBvb2xpbmZvKSB7CisgICAgICAgIGZwcmludGYo c3RkZXJyLCAiZXJyb3IgZ2V0dGluZyBjcHVwb29sIGluZm9cbiIpOworICAgICAgICBsaWJ4bF9k b21pbmZvX2xpc3RfZnJlZShpbmZvLCBuYl9kb21haW4pOworICAgICAgICByZXR1cm4gMTsKKyAg ICB9CisKKyAgICBmb3IgKHAgPSAwOyAhcmMgJiYgKHAgPCBuX3Bvb2xzKTsgcCsrKSB7CisgICAg ICAgIGlmICgocG9vbGluZm9bcF0uc2NoZWQgIT0gc2NoZWQpIHx8CisgICAgICAgICAgICAoY3B1 cG9vbCAmJiAocG9vbGlkICE9IHBvb2xpbmZvW3BdLnBvb2xpZCkpKQorICAgICAgICAgICAgY29u dGludWU7CisKKyAgICAgICAgcG9vbG91dHB1dChwb29saW5mb1twXS5wb29saWQpOworCisgICAg ICAgIG91dHB1dCgtMSwgTlVMTCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYl9kb21haW47 IGkrKykgeworICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgc2NpbmZvOworICAg ICAgICAgICAgaWYgKGluZm9baV0uY3B1cG9vbCAhPSBwb29saW5mb1twXS5wb29saWQpCisgICAg ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFt c19pbml0KCZzY2luZm8pOworICAgICAgICAgICAgcmMgPSBvdXRwdXQoaW5mb1tpXS5kb21pZCwg JnNjaW5mbyk7CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19kaXNwb3NlKCZz Y2luZm8pOworICAgICAgICAgICAgaWYgKHJjKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICB9CisgICAgfQorCisgICAgbGlieGxfY3B1cG9vbGluZm9fbGlzdF9mcmVlKHBvb2xpbmZv LCBuX3Bvb2xzKTsKKyAgICBsaWJ4bF9kb21pbmZvX2xpc3RfZnJlZShpbmZvLCBuYl9kb21haW4p OworICAgIHJldHVybiAwOworfQorCiAvKiAKICAqIDxub3RoaW5nPiAgICAgICAgICAgICA6IExp c3QgYWxsIGRvbWFpbiBwYXJhbXMgYW5kIHNjaGVkIHBhcmFtcyBmcm9tIGFsbCBwb29scwogICog LWQgW2RvbWlkXSAgICAgICAgICAgIDogTGlzdCBkb21haW4gcGFyYW1zIGZvciBkb21haW4KQEAg LTY1NTQsODQgKzY3MzUsMTk4IEBAIGludCBtYWluX3NjaGVkX2NyZWRpdDIoaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCiAvKgogICogPG5vdGhpbmc+ICAgICAgICAgICAgOiBMaXN0IGFsbCBkb21h aW4gcGFyYW10ZXJzIGFuZCBzY2hlZCBwYXJhbXMKLSAqIC1kIFtkb21pZF0gICAgICAgICAgIDog TGlzdCBkb21haW4gcGFyYW1zIGZvciBkb21haW4KKyAqIC1kIFtkb21pZF0gICAgICAgICAgIDog TGlzdCBkZWZhdWx0IGRvbWFpbiBwYXJhbXMgZm9yIGRvbWFpbgogICogLWQgW2RvbWlkXSBbcGFy YW1zXSAgOiBTZXQgZG9tYWluIHBhcmFtcyBmb3IgZG9tYWluCisgKiAtZCBbZG9taWRdIC12IFt2 Y3B1aWQgMV0gLXYgW3ZjcHVpZCAyXSAuLi4gIDoKKyAqIExpc3QgcGVyLVZDUFUgcGFyYW1zIGZv ciBkb21haW4KKyAqIC1kIFtkb21pZF0gLXYgYWxsICA6IExpc3QgYWxsIHBlci1WQ1BVIHBhcmFt cyBmb3IgZG9tYWluCisgKiAtdiBhbGwgIDogTGlzdCBhbGwgcGVyLVZDUFUgcGFyYW1zIGZvciBh bGwgZG9tYWlucworICogLWQgW2RvbWlkXSAtdiBbdmNwdWlkIDFdIFtwYXJhbXNdIC12IFt2Y3B1 aWQgMl0gW3BhcmFtc10gLi4uICA6CisgKiBTZXQgcGVyLVZDUFUgcGFyYW1zIGZvciBkb21haW4K KyAqIC1kIFtkb21pZF0gLXYgYWxsIFtwYXJhbXNdICA6IFNldCBhbGwgcGVyLVZDUFUgcGFyYW1z IGZvciBkb21haW4KICAqLwogaW50IG1haW5fc2NoZWRfcnRkcyhpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiB7CiAgICAgY29uc3QgY2hhciAqZG9tID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpjcHVw b29sID0gTlVMTDsKLSAgICBpbnQgcGVyaW9kID0gMDsgLyogcGVyaW9kIGlzIGluIG1pY3Jvc2Vj b25kICovCi0gICAgaW50IGJ1ZGdldCA9IDA7IC8qIGJ1ZGdldCBpcyBpbiBtaWNyb3NlY29uZCAq LworICAgIGludCAqdmNwdXMgPSAoaW50ICopeG1hbGxvYyhzaXplb2YoaW50KSk7IC8qIElEcyBv ZiBWQ1BVcyB0aGF0IGNoYW5nZSAqLworICAgIGludCAqcGVyaW9kcyA9IChpbnQgKil4bWFsbG9j KHNpemVvZihpbnQpKTsgLyogcGVyaW9kIGlzIGluIG1pY3Jvc2Vjb25kICovCisgICAgaW50ICpi dWRnZXRzID0gKGludCAqKXhtYWxsb2Moc2l6ZW9mKGludCkpOyAvKiBidWRnZXQgaXMgaW4gbWlj cm9zZWNvbmQgKi8KKyAgICBpbnQgdl9zaXplID0gMTsgLyogc2l6ZSBvZiB2Y3B1cyBhcnJheSAq LworICAgIGludCBwX3NpemUgPSAxOyAvKiBzaXplIG9mIHBlcmlvZHMgYXJyYXkgKi8KKyAgICBp bnQgYl9zaXplID0gMTsgLyogc2l6ZSBvZiBidWRnZXRzIGFycmF5ICovCisgICAgaW50IHZfaW5k ZXggPSAwOyAvKiBpbmRleCBpbiB2Y3B1cyBhcnJheSAqLworICAgIGludCBwX2luZGV4ID0wOyAv KiBpbmRleCBpbiBwZXJpb2RzIGFycmF5ICovCisgICAgaW50IGJfaW5kZXggPTA7IC8qIGluZGV4 IGZvciBpbiBidWRnZXRzIGFycmF5ICovCiAgICAgYm9vbCBvcHRfcCA9IGZhbHNlOwogICAgIGJv b2wgb3B0X2IgPSBmYWxzZTsKLSAgICBpbnQgb3B0LCByYzsKKyAgICBib29sIG9wdF92ID0gZmFs c2U7CisgICAgYm9vbCBvcHRfYWxsID0gZmFsc2U7IC8qIG91dHB1dCBwZXItZG9tIHBhcmFtZXRl cnMgKi8KKyAgICBpbnQgb3B0LCBpLCByYywgcjsKICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBv cHRzW10gPSB7CiAgICAgICAgIHsiZG9tYWluIiwgMSwgMCwgJ2QnfSwKICAgICAgICAgeyJwZXJp b2QiLCAxLCAwLCAncCd9LAogICAgICAgICB7ImJ1ZGdldCIsIDEsIDAsICdiJ30sCisgICAgICAg IHsidmNwdWlkIiwxLCAwLCAndid9LAogICAgICAgICB7ImNwdXBvb2wiLCAxLCAwLCAnYyd9LAog ICAgICAgICBDT01NT05fTE9OR19PUFRTCiAgICAgfTsKIAotICAgIFNXSVRDSF9GT1JFQUNIX09Q VChvcHQsICJkOnA6YjpjOiIsIG9wdHMsICJzY2hlZC1ydGRzIiwgMCkgeworICAgIFNXSVRDSF9G T1JFQUNIX09QVChvcHQsICJkOnA6Yjp2OmMiLCBvcHRzLCAic2NoZWQtcnRkcyIsIDApIHsKICAg ICBjYXNlICdkJzoKICAgICAgICAgZG9tID0gb3B0YXJnOwogICAgICAgICBicmVhazsKICAgICBj YXNlICdwJzoKLSAgICAgICAgcGVyaW9kID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTApOwotICAg ICAgICBvcHRfcCA9IHRydWU7CisgICAgICAgIGlmIChwX2luZGV4ID49IHBfc2l6ZSkgeworICAg ICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHBlcmlvZHMgYXJyYXkgaXMgZnVsbAorICAgICAg ICAgICAgICogZG91YmxlIHRoZSBhcnJheSBzaXplIGZvciBuZXcgZWxlbWVudHMKKyAgICAgICAg ICAgICAqLworICAgICAgICAgICAgcF9zaXplICo9IDI7CisgICAgICAgICAgICBwZXJpb2RzID0g eHJlYWxsb2MocGVyaW9kcywgcF9zaXplKTsKKyAgICAgICAgfQorICAgICAgICBwZXJpb2RzW3Bf aW5kZXgrK10gPSBzdHJ0b2wob3B0YXJnLCBOVUxMLCAxMCk7CisgICAgICAgIG9wdF9wID0gMTsK ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnYic6Ci0gICAgICAgIGJ1ZGdldCA9IHN0cnRvbChv cHRhcmcsIE5VTEwsIDEwKTsKLSAgICAgICAgb3B0X2IgPSB0cnVlOworICAgICAgICBpZiAoYl9p bmRleCA+PSBiX3NpemUpIHsgLyogYnVkZ2V0cyBhcnJheSBpcyBmdWxsICovCisgICAgICAgICAg ICBiX3NpemUgKj0gMjsKKyAgICAgICAgICAgIGJ1ZGdldHMgPSB4cmVhbGxvYyhidWRnZXRzLCBi X3NpemUpOworICAgICAgICB9CisgICAgICAgIGJ1ZGdldHNbYl9pbmRleCsrXSA9IHN0cnRvbChv cHRhcmcsIE5VTEwsIDEwKTsKKyAgICAgICAgb3B0X2IgPSAxOworICAgICAgICBicmVhazsKKyAg ICBjYXNlICd2JzoKKyAgICAgICAgaWYgKCFzdHJjbXAob3B0YXJnLCAiYWxsIikpIHsgLyogZ2V0 IG9yIHNldCBhbGwgdmNwdXMgb2YgYSBkb21haW4gKi8KKyAgICAgICAgICAgIG9wdF9hbGwgPSAx OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZfaW5kZXggPj0g dl9zaXplKSB7IC8qIHZjcHVzIGFycmF5IGlzIGZ1bGwgKi8KKyAgICAgICAgICAgIHZfc2l6ZSAq PSAyOworICAgICAgICAgICAgdmNwdXMgPSB4cmVhbGxvYyh2Y3B1cywgdl9zaXplKTsKKyAgICAg ICAgfQorICAgICAgICB2Y3B1c1t2X2luZGV4KytdID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTAp OworICAgICAgICBvcHRfdiA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ2MnOgogICAg ICAgICBjcHVwb29sID0gb3B0YXJnOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAo Y3B1cG9vbCAmJiAoZG9tIHx8IG9wdF9wIHx8IG9wdF9iKSkgeworICAgIGlmIChjcHVwb29sICYm IChkb20gfHwgb3B0X3AgfHwgb3B0X2IgfHwgb3B0X3YgfHwgb3B0X2FsbCkpIHsKICAgICAgICAg ZnByaW50ZihzdGRlcnIsICJTcGVjaWZ5aW5nIGEgY3B1cG9vbCBpcyBub3QgYWxsb3dlZCB3aXRo ICIKICAgICAgICAgICAgICAgICAib3RoZXIgb3B0aW9ucy5cbiIpOwotICAgICAgICByZXR1cm4g RVhJVF9GQUlMVVJFOworICAgICAgICByID0gRVhJVF9GQUlMVVJFOworICAgICAgICBnb3RvIG91 dDsKICAgICB9Ci0gICAgaWYgKCFkb20gJiYgKG9wdF9wIHx8IG9wdF9iKSkgewotICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIk11c3Qgc3BlY2lmeSBhIGRvbWFpbi5cbiIpOwotICAgICAgICByZXR1 cm4gRVhJVF9GQUlMVVJFOworICAgIGlmICghZG9tICYmIChvcHRfcCB8fCBvcHRfYiB8fCBvcHRf dikpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJNaXNzaW5nIHBhcmFtZXRlcnMuXG4iKTsK KyAgICAgICAgciA9IEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBvdXQ7CiAgICAgfQotICAg IGlmIChvcHRfcCAhPSBvcHRfYikgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk11c3Qgc3Bl Y2lmeSBwZXJpb2QgYW5kIGJ1ZGdldFxuIik7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7 CisgICAgaWYgKGRvbSAmJiAhb3B0X3YgJiYgIW9wdF9hbGwgJiYgKG9wdF9wIHx8IG9wdF9iKSkg eworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk11c3Qgc3BlY2lmeSBWQ1BVLlxuIik7CisgICAg ICAgIHIgPSBFWElUX0ZBSUxVUkU7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBpZiAo b3B0X3YgJiYgb3B0X2FsbCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkluY29ycmVjdCBW Q1BVIElEcy5cbiIpOworICAgICAgICByID0gRVhJVF9GQUlMVVJFOworICAgICAgICBnb3RvIG91 dDsKKyAgICB9CisgICAgaWYgKCgodl9pbmRleCA+IGJfaW5kZXgpICYmIG9wdF9iKSB8fCAoKHZf aW5kZXggPiBwX2luZGV4KSAmJiBvcHRfcCkKKyAgICAgICAgfHwgcF9pbmRleCAhPSBiX2luZGV4 KSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5jb3JyZWN0IG51bWJlciBvZiBwZXJpb2Qg YW5kIGJ1ZGdldFxuIik7CisgICAgICAgIHIgPSBFWElUX0ZBSUxVUkU7CisgICAgICAgIGdvdG8g b3V0OwogICAgIH0KIAotICAgIGlmICghZG9tKSB7IC8qIGxpc3QgYWxsIGRvbWFpbidzIHJ0IHNj aGVkdWxlciBpbmZvICovCi0gICAgICAgIGlmIChzY2hlZF9kb21haW5fb3V0cHV0KExJQlhMX1ND SEVEVUxFUl9SVERTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZF9ydGRz X2RvbWFpbl9vdXRwdXQsCisgICAgaWYgKCghZG9tKSAmJiBvcHRfYWxsKSB7CisgICAgICAgIC8q IGdldCBhbGwgZG9tYWluJ3MgcGVyLXZjcHUgcnRkcyBzY2hlZHVsZXIgcGFyYW1ldGVycyAqLwor ICAgICAgICByYyA9IC1zY2hlZF92Y3B1X291dHB1dChMSUJYTF9TQ0hFRFVMRVJfUlREUywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWRfcnRkc192Y3B1X291dHB1dF9hbGws CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkX3J0ZHNfcG9vbF9vdXRwdXQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdXBvb2wpKQotICAgICAgICAgICAg cmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1 cG9vbCk7CisgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgciA9IEVYSVRfRkFJTFVSRTsK KyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfSBlbHNlIGlmICghZG9tICYm ICFvcHRfYWxsKSB7CisgICAgICAgIC8qIGxpc3QgYWxsIGRvbWFpbidzIGRlZmF1bHQgc2NoZWR1 bGluZyBwYXJhbWV0ZXJzICovCisgICAgICAgIHJjID0gLXNjaGVkX2RvbWFpbl9vdXRwdXQoTElC WExfU0NIRURVTEVSX1JURFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2No ZWRfcnRkc19kb21haW5fb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjaGVkX3J0ZHNfcG9vbF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3B1cG9vbCk7CisgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgciA9IEVYSVRfRkFJ TFVSRTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg ICAgICAgdWludDMyX3QgZG9taWQgPSBmaW5kX2RvbWFpbihkb20pOwotICAgICAgICBpZiAoIW9w dF9wICYmICFvcHRfYikgeyAvKiBvdXRwdXQgcnQgc2NoZWR1bGVyIGluZm8gKi8KKyAgICAgICAg aWYgKCFvcHRfdiAmJiAhb3B0X2FsbCkgeyAvKiBvdXRwdXQgZGVmYXVsdCBzY2hlZHVsaW5nIHBh cmFtZXRlcnMgKi8KICAgICAgICAgICAgIHNjaGVkX3J0ZHNfZG9tYWluX291dHB1dCgtMSk7Ci0g ICAgICAgICAgICBpZiAoc2NoZWRfcnRkc19kb21haW5fb3V0cHV0KGRvbWlkKSkKLSAgICAgICAg ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgICAgICB9IGVsc2UgeyAvKiBzZXQgcnQg c2NoZWR1bGVyIHBhcmFtYXRlcnMgKi8KLSAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9zY2hlZF9w YXJhbXMgc2NpbmZvOwotICAgICAgICAgICAgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtc19pbml0 KCZzY2luZm8pOworICAgICAgICAgICAgcmMgPSAtc2NoZWRfcnRkc19kb21haW5fb3V0cHV0KGRv bWlkKTsKKyAgICAgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgICAgIHIgPSBFWElUX0ZB SUxVUkU7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CisgICAgICAg IH0gZWxzZSBpZiAoIW9wdF9wICYmICFvcHRfYikgeworICAgICAgICAgICAgLyogZ2V0IHBlci12 Y3B1IHJ0ZHMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzICovCisgICAgICAgICAgICBsaWJ4bF92Y3B1 X3NjaGVkX3BhcmFtcyBzY2luZm87CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFt c19pbml0KCZzY2luZm8pOworICAgICAgICAgICAgc2NoZWRfcnRkc192Y3B1X291dHB1dCgtMSwg JnNjaW5mbyk7CisgICAgICAgICAgICBzY2luZm8ubnVtX3ZjcHVzID0gdl9pbmRleDsKKyAgICAg ICAgICAgIGlmICh2X2luZGV4ID4gMCkgeworICAgICAgICAgICAgICAgIHNjaW5mby52Y3B1cyA9 IChsaWJ4bF9zY2hlZF9wYXJhbXMgKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 bWFsbG9jKHNpemVvZihsaWJ4bF9zY2hlZF9wYXJhbXMpICogKHZfaW5kZXgpKTsKKyAgICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdl9pbmRleDsgaSsrKQorICAgICAgICAgICAgICAgICAg ICBzY2luZm8udmNwdXNbaV0udmNwdWlkID0gdmNwdXNbaV07CisgICAgICAgICAgICAgICAgcmMg PSAtc2NoZWRfcnRkc192Y3B1X291dHB1dChkb21pZCwgJnNjaW5mbyk7CisgICAgICAgICAgICB9 IGVsc2UgLyogZ2V0IHBhcmFtcyBmb3IgYWxsIHZjcHVzICovCisgICAgICAgICAgICAgICAgcmMg PSAtc2NoZWRfcnRkc192Y3B1X291dHB1dF9hbGwoZG9taWQsICZzY2luZm8pOworICAgICAgICAg ICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZGlzcG9zZSgmc2NpbmZvKTsKKyAgICAgICAgICAg IGlmIChyYykgeworICAgICAgICAgICAgICAgIHIgPSBFWElUX0ZBSUxVUkU7CisgICAgICAgICAg ICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CisgICAgfSBlbHNlIGlmIChvcHRfdiB8fCBv cHRfYWxsKSB7CisgICAgICAgICAgICAvKiBzZXQgcGVyLXZjcHUgcnRkcyBzY2hlZHVsaW5nIHBh cmFtZXRlcnMgKi8KKyAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zIHNjaW5mbzsK KyAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2luaXQoJnNjaW5mbyk7CiAgICAg ICAgICAgICBzY2luZm8uc2NoZWQgPSBMSUJYTF9TQ0hFRFVMRVJfUlREUzsKLSAgICAgICAgICAg IHNjaW5mby5wZXJpb2QgPSBwZXJpb2Q7Ci0gICAgICAgICAgICBzY2luZm8uYnVkZ2V0ID0gYnVk Z2V0OworICAgICAgICAgICAgaWYgKHZfaW5kZXggPiAwKSB7CisgICAgICAgICAgICAgICAgc2Np bmZvLm51bV92Y3B1cyA9IHZfaW5kZXg7CisgICAgICAgICAgICAgICAgc2NpbmZvLnZjcHVzID0g KGxpYnhsX3NjaGVkX3BhcmFtcyAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHht YWxsb2Moc2l6ZW9mKGxpYnhsX3NjaGVkX3BhcmFtcykgKiAodl9pbmRleCkpOworICAgICAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCB2X2luZGV4OyBpKyspIHsKKyAgICAgICAgICAgICAgICAg ICAgc2NpbmZvLnZjcHVzW2ldLnZjcHVpZCA9IHZjcHVzW2ldOworICAgICAgICAgICAgICAgICAg ICBzY2luZm8udmNwdXNbaV0ucGVyaW9kID0gcGVyaW9kc1tpXTsKKyAgICAgICAgICAgICAgICAg ICAgc2NpbmZvLnZjcHVzW2ldLmJ1ZGdldCA9IGJ1ZGdldHNbaV07CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIHJjID0gc2NoZWRfdmNwdV9zZXQoZG9taWQsICZzY2luZm8pOwor ICAgICAgICAgICAgfSBlbHNlIHsgLyogc2V0IHBhcmFtcyBmb3IgYWxsIHZjcHVzICovCisgICAg ICAgICAgICAgICAgc2NpbmZvLm51bV92Y3B1cyA9IDE7CisgICAgICAgICAgICAgICAgc2NpbmZv LnZjcHVzID0gKGxpYnhsX3NjaGVkX3BhcmFtcyAqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHhtYWxsb2Moc2l6ZW9mKGxpYnhsX3NjaGVkX3BhcmFtcykpOworICAgICAgICAgICAg ICAgIHNjaW5mby52Y3B1c1swXS5wZXJpb2QgPSBwZXJpb2RzWzBdOworICAgICAgICAgICAgICAg IHNjaW5mby52Y3B1c1swXS5idWRnZXQgPSBidWRnZXRzWzBdOworICAgICAgICAgICAgICAgIHJj ID0gc2NoZWRfdmNwdV9zZXRfYWxsKGRvbWlkLCAmc2NpbmZvKTsKKyAgICAgICAgICAgIH0KIAot ICAgICAgICAgICAgcmMgPSBzY2hlZF9kb21haW5fc2V0KGRvbWlkLCAmc2NpbmZvKTsKLSAgICAg ICAgICAgIGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXNfZGlzcG9zZSgmc2NpbmZvKTsKLSAgICAg ICAgICAgIGlmIChyYykKLSAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAg ICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZGlzcG9zZSgmc2NpbmZvKTsKKyAgICAg ICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgICAgIHIgPSBFWElUX0ZBSUxVUkU7CisgICAg ICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK LSAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIHIgPSBFWElUX1NVQ0NFU1M7CitvdXQ6Cisg ICAgZnJlZSh2Y3B1cyk7CisgICAgZnJlZShwZXJpb2RzKTsKKyAgICBmcmVlKGJ1ZGdldHMpOwor ICAgIHJldHVybiByOwogfQogCiBpbnQgbWFpbl9kb21pZChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jIGIvdG9vbHMvbGlieGwveGxf Y21kdGFibGUuYwppbmRleCA3ODgwYTljLi44NTlhZjc4IDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC94bF9jbWR0YWJsZS5jCisrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKQEAgLTI2OSw4 ICsyNjksMTAgQEAgc3RydWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgIHsgInNjaGVk LXJ0ZHMiLAogICAgICAgJm1haW5fc2NoZWRfcnRkcywgMCwgMSwKICAgICAgICJHZXQvc2V0IHJ0 ZHMgc2NoZWR1bGVyIHBhcmFtZXRlcnMiLAotICAgICAgIlstZCA8RG9tYWluPiBbLXBbPVBFUklP RF1dIFstYls9QlVER0VUXV1dIiwKKyAgICAgICJbLWQgPERvbWFpbj4gWy12Wz1WQ1BVSUQvYWxs XV0gWy1wWz1QRVJJT0RdXSBbLWJbPUJVREdFVF1dXSIsCiAgICAgICAiLWQgRE9NQUlOLCAtLWRv bWFpbj1ET01BSU4gICAgIERvbWFpbiB0byBtb2RpZnlcbiIKKyAgICAgICItdiBWQ1BVSUQvYWxs LCAtLXZjcHVpZD1WQ1BVSUQvYWxsICAgIFZDUFUgdG8gbW9kaWZ5IG9yIG91dHB1dDtcbiIKKyAg ICAgICIgICAgICAgICAgICAgICBVc2luZyAnLXYgYWxsJyB0byBtb2RpZnkvb3V0cHV0IGFsbCB2 Y3B1c1xuIgogICAgICAgIi1wIFBFUklPRCwgLS1wZXJpb2Q9UEVSSU9EICAgICBQZXJpb2QgKHVz KVxuIgogICAgICAgIi1iIEJVREdFVCwgLS1idWRnZXQ9QlVER0VUICAgICBCdWRnZXQgKHVzKVxu IgogICAgIH0sCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==