From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 05/62] tools/libxc: Multi modules support Date: Fri, 12 Jan 2018 11:28:13 +0000 Message-ID: <20180112112910.16762-6-wei.liu2@citrix.com> References: <20180112112910.16762-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eZxWO-0007Lu-09 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2018 11:29:16 +0000 In-Reply-To: <20180112112910.16762-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org RnJvbTogSm9uYXRoYW4gTHVkbGFtIDxqb25hdGhhbi5sdWRsYW1AY2l0cml4LmNvbT4KClNpZ25l ZC1vZmYtYnk6IEpvbmF0aGFuIEx1ZGxhbSA8am9uYXRoYW4ubHVkbGFtQGNpdHJpeC5jb20+ClNp Z25lZC1vZmYtYnk6IFNlcmdleSBEeWFzbGkgPHNlcmdleS5keWFzbGlAY2l0cml4LmNvbT4KU2ln bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KU2ln bmVkLW9mZi1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiBzdHViZG9tL2dy dWIva2V4ZWMuYyAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHRvb2xzL2hlbHBlcnMvaW5pdC14 ZW5zdG9yZS1kb21haW4uYyB8ICAgNCArLQogdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCAg ICAgICAgIHwgIDQ4ICsrKysrKy0tLS0tCiB0b29scy9saWJ4Yy94Y19kb21fY29tcGF0X2xpbnV4 LmMgICAgfCAgIDIgKy0KIHRvb2xzL2xpYnhjL3hjX2RvbV9jb3JlLmMgICAgICAgICAgICB8IDE1 MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfZG9t X3g4Ni5jICAgICAgICAgICAgIHwgIDY1ICsrKysrKysrLS0tLS0tLQogdG9vbHMvbGlieGwvbGli eGxfZG9tLmMgICAgICAgICAgICAgIHwgIDEwICstLQogNyBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5z ZXJ0aW9ucygrKSwgMTEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3N0dWJkb20vZ3J1Yi9r ZXhlYy5jIGIvc3R1YmRvbS9ncnViL2tleGVjLmMKaW5kZXggNDM3YTBhOTZlOS4uNjFjYTA4MmQ0 MiAxMDA2NDQKLS0tIGEvc3R1YmRvbS9ncnViL2tleGVjLmMKKysrIGIvc3R1YmRvbS9ncnViL2tl eGVjLmMKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgdm9pZCB0cG1faGFzaDJwY3Ioc3RydWN0 IHhjX2RvbV9pbWFnZSAqZG9tLCBjaGFyICpjbWRsaW5lKQogCUFTU0VSVChydiA9PSAwICYmIHJl c3AtPnN0YXR1cyA9PSAwKTsKIAogCWNtZC5wY3IgPSBic3dhcF8zMig1KTsgLy8gUENSICM1IGZv ciBpbml0cmQKLQlzaGExKGRvbS0+cmFtZGlza19ibG9iLCBkb20tPnJhbWRpc2tfc2l6ZSwgY21k Lmhhc2gpOworCXNoYTEoZG9tLT5tb2R1bGVzWzBdLmJsb2IsIGRvbS0+bW9kdWxlc1swXS5zaXpl LCBjbWQuaGFzaCk7CiAJcnYgPSB0cG1mcm9udF9jbWQodHBtLCAodm9pZCopJmNtZCwgc2l6ZW9m KGNtZCksICh2b2lkKikmcmVzcCwgJnJlc3BsZW4pOwogCUFTU0VSVChydiA9PSAwICYmIHJlc3At PnN0YXR1cyA9PSAwKTsKIApAQCAtMjMxLDEzICsyMzEsMTIgQEAgdm9pZCBrZXhlYyh2b2lkICpr ZXJuZWwsIGxvbmcga2VybmVsX3NpemUsIHZvaWQgKm1vZHVsZSwgbG9uZyBtb2R1bGVfc2l6ZSwg Y2hhcgogCiAgICAgLyogV2UgYXJlIHVzaW5nIGd1ZXN0IG93bmVkIG1lbW9yeSwgdGhlcmVmb3Jl IG5vIGxpbWl0cy4gKi8KICAgICB4Y19kb21fa2VybmVsX21heF9zaXplKGRvbSwgMCk7Ci0gICAg eGNfZG9tX3JhbWRpc2tfbWF4X3NpemUoZG9tLCAwKTsKKyAgICB4Y19kb21fbW9kdWxlX21heF9z aXplKGRvbSwgMCk7CiAKICAgICBkb20tPmtlcm5lbF9ibG9iID0ga2VybmVsOwogICAgIGRvbS0+ a2VybmVsX3NpemUgPSBrZXJuZWxfc2l6ZTsKIAotICAgIGRvbS0+cmFtZGlza19ibG9iID0gbW9k dWxlOwotICAgIGRvbS0+cmFtZGlza19zaXplID0gbW9kdWxlX3NpemU7CisgICAgeGNfZG9tX21v ZHVsZV9tZW0oZG9tLCBtb2R1bGUsIG1vZHVsZV9zaXplLCBOVUxMKTsKIAogICAgIGRvbS0+Zmxh Z3MgPSBmbGFnczsKICAgICBkb20tPmNvbnNvbGVfZXZ0Y2huID0gc3RhcnRfaW5mby5jb25zb2xl LmRvbVUuZXZ0Y2huOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaGVscGVycy9pbml0LXhlbnN0b3JlLWRv bWFpbi5jIGIvdG9vbHMvaGVscGVycy9pbml0LXhlbnN0b3JlLWRvbWFpbi5jCmluZGV4IDA0N2Fk MGNiMWQuLjg0NTNiZTI4M2IgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2hlbHBlcnMvaW5pdC14ZW5zdG9y ZS1kb21haW4uYworKysgYi90b29scy9oZWxwZXJzL2luaXQteGVuc3RvcmUtZG9tYWluLmMKQEAg LTE0NSwxMCArMTQ1LDEwIEBAIHN0YXRpYyBpbnQgYnVpbGQoeGNfaW50ZXJmYWNlICp4Y2gpCiAK ICAgICBpZiAoIHJhbWRpc2sgKQogICAgIHsKLSAgICAgICAgcnYgPSB4Y19kb21fcmFtZGlza19m aWxlKGRvbSwgcmFtZGlzayk7CisgICAgICAgIHJ2ID0geGNfZG9tX21vZHVsZV9maWxlKGRvbSwg cmFtZGlzaywgTlVMTCk7CiAgICAgICAgIGlmICggcnYgKQogICAgICAgICB7Ci0gICAgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgInhjX2RvbV9yYW1kaXNrX2ZpbGUgZmFpbGVkXG4iKTsKKyAgICAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAieGNfZG9tX21vZHVsZV9maWxlIGZhaWxlZFxuIik7CiAg ICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGNfZG9tLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCmlu ZGV4IGNkY2RkMDdkMmIuLjA4YmU4YThmM2YgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGNfZG9tLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaApAQCAtMjIsNiAr MjIsNyBAQAogI2RlZmluZSBJTlZBTElEX1BGTiAoKHhlbl9wZm5fdCktMSkKICNkZWZpbmUgWDg2 X0hWTV9OUl9TUEVDSUFMX1BBR0VTICAgIDgKICNkZWZpbmUgWDg2X0hWTV9FTkRfU1BFQ0lBTF9S RUdJT04gIDB4ZmYwMDB1CisjZGVmaW5lIFhHX01BWF9NT0RVTEVTIDIKIAogLyogLS0tIHR5cGVk ZWZzIGFuZCBzdHJ1Y3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g Ki8KIApAQCAtNTYsMTcgKzU3LDMyIEBAIHN0cnVjdCB4Y19kb21fcGh5cyB7CiAgICAgeGVuX3Bm bl90IGNvdW50OwogfTsKIAorc3RydWN0IHhjX2RvbV9tb2R1bGUgeworICAgIHZvaWQgKmJsb2I7 CisgICAgc2l6ZV90IHNpemU7CisgICAgdm9pZCAqY21kbGluZTsKKyAgICAvKiBJZiBzZWcudnN0 YXJ0IGlzIG5vbiB6ZXJvIHRoZW4gdGhlIG1vZHVsZSB3aWxsIGJlIGxvYWRlZCBhdCB0aGF0Cisg ICAgICogYWRkcmVzcywgb3RoZXJ3aXNlIGl0IHdpbGwgYXV0b21hdGljYWxseSBwbGFjZWQuCisg ICAgICoKKyAgICAgKiBJZiBhdXRvbWF0aWMgcGxhY2VtZW50IGlzIHVzZWQgYW5kIHRoZSBtb2R1 bGUgaXMgZ3ppcAorICAgICAqIGNvbXByZXNzZWQgdGhlbiBpdCB3aWxsIGJlIGRlY29tcHJlc3Nl ZCBhcyBpdCBpcyBsb2FkZWQuIElmIHRoZQorICAgICAqIG1vZHVsZSBoYXMgYmVlbiBleHBsaWNp dGx5IHBsYWNlZCB0aGVuIGl0IGlzIGxvYWRlZCBhcyBpcworICAgICAqIG90aGVyd2lzZSBkZWNv bXByZXNzaW5nIHJpc2tzIHVuZG9pbmcgdGhlIG1hbnVhbCBwbGFjZW1lbnQuCisgICAgICovCisg ICAgc3RydWN0IHhjX2RvbV9zZWcgc2VnOworfTsKKwogc3RydWN0IHhjX2RvbV9pbWFnZSB7CiAg ICAgLyogZmlsZXMgKi8KICAgICB2b2lkICprZXJuZWxfYmxvYjsKICAgICBzaXplX3Qga2VybmVs X3NpemU7Ci0gICAgdm9pZCAqcmFtZGlza19ibG9iOwotICAgIHNpemVfdCByYW1kaXNrX3NpemU7 CisgICAgdW5zaWduZWQgaW50IG51bV9tb2R1bGVzOworICAgIHN0cnVjdCB4Y19kb21fbW9kdWxl IG1vZHVsZXNbWEdfTUFYX01PRFVMRVNdOwogICAgIHZvaWQgKmRldmljZXRyZWVfYmxvYjsKICAg ICBzaXplX3QgZGV2aWNldHJlZV9zaXplOwogCiAgICAgc2l6ZV90IG1heF9rZXJuZWxfc2l6ZTsK LSAgICBzaXplX3QgbWF4X3JhbWRpc2tfc2l6ZTsKKyAgICBzaXplX3QgbWF4X21vZHVsZV9zaXpl OwogICAgIHNpemVfdCBtYXhfZGV2aWNldHJlZV9zaXplOwogCiAgICAgLyogYXJndW1lbnRzIGFu ZCBwYXJhbWV0ZXJzICovCkBAIC04MCwxNSArOTYsNiBAQCBzdHJ1Y3QgeGNfZG9tX2ltYWdlIHsK IAogICAgIC8qIG1lbW9yeSBsYXlvdXQgKi8KICAgICBzdHJ1Y3QgeGNfZG9tX3NlZyBrZXJuZWxf c2VnOwotICAgIC8qIElmIHJhbWRpc2tfc2VnLnZzdGFydCBpcyBub24gemVybyB0aGVuIHRoZSBy YW1kaXNrIHdpbGwgYmUKLSAgICAgKiBsb2FkZWQgYXQgdGhhdCBhZGRyZXNzLCBvdGhlcndpc2Ug aXQgd2lsbCBhdXRvbWF0aWNhbGx5IHBsYWNlZC4KLSAgICAgKgotICAgICAqIElmIGF1dG9tYXRp YyBwbGFjZW1lbnQgaXMgdXNlZCBhbmQgdGhlIHJhbWRpc2sgaXMgZ3ppcAotICAgICAqIGNvbXBy ZXNzZWQgdGhlbiBpdCB3aWxsIGJlIGRlY29tcHJlc3NlZCBhcyBpdCBpcyBsb2FkZWQuIElmIHRo ZQotICAgICAqIHJhbWRpc2sgaGFzIGJlZW4gZXhwbGljaXRseSBwbGFjZWQgdGhlbiBpdCBpcyBs b2FkZWQgYXMgaXMKLSAgICAgKiBvdGhlcndpc2UgZGVjb21wcmVzc2luZyByaXNrcyB1bmRvaW5n IHRoZSBtYW51YWwgcGxhY2VtZW50LgotICAgICAqLwotICAgIHN0cnVjdCB4Y19kb21fc2VnIHJh bWRpc2tfc2VnOwogICAgIHN0cnVjdCB4Y19kb21fc2VnIHAybV9zZWc7CiAgICAgc3RydWN0IHhj X2RvbV9zZWcgcGd0YWJsZXNfc2VnOwogICAgIHN0cnVjdCB4Y19kb21fc2VnIGRldmljZXRyZWVf c2VnOwpAQCAtMjc3LDEyICsyODQsMTIgQEAgdm9pZCB4Y19kb21fcmVsZWFzZShzdHJ1Y3QgeGNf ZG9tX2ltYWdlICpkb20pOwogaW50IHhjX2RvbV9yYW1iYXNlX2luaXQoc3RydWN0IHhjX2RvbV9p bWFnZSAqZG9tLCB1aW50NjRfdCByYW1iYXNlKTsKIGludCB4Y19kb21fbWVtX2luaXQoc3RydWN0 IHhjX2RvbV9pbWFnZSAqZG9tLCB1bnNpZ25lZCBpbnQgbWVtX21iKTsKIAotLyogU2V0IHRoaXMg bGFyZ2VyIGlmIHlvdSBoYXZlIGVub3Jtb3VzIHJhbWRpc2tzL2tlcm5lbHMuIE5vdGUgdGhhdAor LyogU2V0IHRoaXMgbGFyZ2VyIGlmIHlvdSBoYXZlIGVub3Jtb3VzIG1vZHVsZXMva2VybmVscy4g Tm90ZSB0aGF0CiAgKiB5b3Ugc2hvdWxkIHRydXN0IGFsbCBrZXJuZWxzIG5vdCB0byBiZSBtYWxp Y2lvdXNseSBsYXJnZSAoZS5nLiB0bwogICogZXhoYXVzdCBhbGwgZG9tMCBtZW1vcnkpIGlmIHlv dSBkbyB0aGlzIChzZWUgQ1ZFLTIwMTItNDU0NCAvCiAgKiBYU0EtMjUpLiBZb3UgY2FuIGFsc28g c2V0IHRoZSBkZWZhdWx0IGluZGVwZW5kZW50bHkgZm9yCi0gKiByYW1kaXNrcy9rZXJuZWxzIGlu IHhjX2RvbV9hbGxvY2F0ZSgpIG9yIGNhbGwKLSAqIHhjX2RvbV97a2VybmVsLHJhbWRpc2t9X21h eF9zaXplLgorICogbW9kdWxlcy9rZXJuZWxzIGluIHhjX2RvbV9hbGxvY2F0ZSgpIG9yIGNhbGwK KyAqIHhjX2RvbV97a2VybmVsLG1vZHVsZX1fbWF4X3NpemUuCiAgKi8KICNpZm5kZWYgWENfRE9N X0RFQ09NUFJFU1NfTUFYCiAjZGVmaW5lIFhDX0RPTV9ERUNPTVBSRVNTX01BWCAoMTAyNCoxMDI0 KjEwMjQpIC8qIDFHQiAqLwpAQCAtMjkxLDggKzI5OCw4IEBAIGludCB4Y19kb21fbWVtX2luaXQo c3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCB1bnNpZ25lZCBpbnQgbWVtX21iKTsKIGludCB4Y19k b21fa2VybmVsX2NoZWNrX3NpemUoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCBzaXplX3Qgc3op OwogaW50IHhjX2RvbV9rZXJuZWxfbWF4X3NpemUoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCBz aXplX3Qgc3opOwogCi1pbnQgeGNfZG9tX3JhbWRpc2tfY2hlY2tfc2l6ZShzdHJ1Y3QgeGNfZG9t X2ltYWdlICpkb20sIHNpemVfdCBzeik7Ci1pbnQgeGNfZG9tX3JhbWRpc2tfbWF4X3NpemUoc3Ry dWN0IHhjX2RvbV9pbWFnZSAqZG9tLCBzaXplX3Qgc3opOworaW50IHhjX2RvbV9tb2R1bGVfY2hl Y2tfc2l6ZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sIHNpemVfdCBzeik7CitpbnQgeGNfZG9t X21vZHVsZV9tYXhfc2l6ZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sIHNpemVfdCBzeik7CiAK IGludCB4Y19kb21fZGV2aWNldHJlZV9tYXhfc2l6ZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20s IHNpemVfdCBzeik7CiAKQEAgLTMwMywxMSArMzEwLDEyIEBAIGludCB4Y19kb21fZG9fZ3Vuemlw KHhjX2ludGVyZmFjZSAqeGNoLAogaW50IHhjX2RvbV90cnlfZ3VuemlwKHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSwgdm9pZCAqKmJsb2IsIHNpemVfdCAqIHNpemUpOwogCiBpbnQgeGNfZG9tX2tl cm5lbF9maWxlKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgY29uc3QgY2hhciAqZmlsZW5hbWUp OwotaW50IHhjX2RvbV9yYW1kaXNrX2ZpbGUoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCBjb25z dCBjaGFyICpmaWxlbmFtZSk7CitpbnQgeGNfZG9tX21vZHVsZV9maWxlKHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSwgY29uc3QgY2hhciAqZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKmNtZGxpbmUpOwogaW50IHhjX2RvbV9rZXJuZWxfbWVtKHN0cnVjdCB4Y19k b21faW1hZ2UgKmRvbSwgY29uc3Qgdm9pZCAqbWVtLAogICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCBtZW1zaXplKTsKLWludCB4Y19kb21fcmFtZGlza19tZW0oc3RydWN0IHhjX2RvbV9pbWFn ZSAqZG9tLCBjb25zdCB2b2lkICptZW0sCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBt ZW1zaXplKTsKK2ludCB4Y19kb21fbW9kdWxlX21lbShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20s IGNvbnN0IHZvaWQgKm1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1lbXNpemUs IGNvbnN0IGNoYXIgKmNtZGxpbmUpOwogaW50IHhjX2RvbV9kZXZpY2V0cmVlX2ZpbGUoc3RydWN0 IHhjX2RvbV9pbWFnZSAqZG9tLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CiBpbnQgeGNfZG9tX2Rl dmljZXRyZWVfbWVtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgY29uc3Qgdm9pZCAqbWVtLAog ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWVtc2l6ZSk7CmRpZmYgLS1naXQgYS90 b29scy9saWJ4Yy94Y19kb21fY29tcGF0X2xpbnV4LmMgYi90b29scy9saWJ4Yy94Y19kb21fY29t cGF0X2xpbnV4LmMKaW5kZXggYzkyMmM2MWU5MC4uYjNkNDNmZWVkOSAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGMveGNfZG9tX2NvbXBhdF9saW51eC5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9j b21wYXRfbGludXguYwpAQCAtNTYsNyArNTYsNyBAQCBpbnQgeGNfbGludXhfYnVpbGQoeGNfaW50 ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgIGlmICggKHJjID0geGNfZG9tX2tlcm5l bF9maWxlKGRvbSwgaW1hZ2VfbmFtZSkpICE9IDAgKQogICAgICAgICBnb3RvIG91dDsKICAgICBp ZiAoIGluaXRyZF9uYW1lICYmIHN0cmxlbihpbml0cmRfbmFtZSkgJiYKLSAgICAgICAgICgocmMg PSB4Y19kb21fcmFtZGlza19maWxlKGRvbSwgaW5pdHJkX25hbWUpKSAhPSAwKSApCisgICAgICAg ICAoKHJjID0geGNfZG9tX21vZHVsZV9maWxlKGRvbSwgaW5pdHJkX25hbWUsIE5VTEwpKSAhPSAw KSApCiAgICAgICAgIGdvdG8gb3V0OwogCiAgICAgZG9tLT5mbGFncyB8PSBmbGFnczsKZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9jb3JlLmMgYi90b29scy9saWJ4Yy94Y19kb21fY29y ZS5jCmluZGV4IDMwM2NiOTcxZTguLjNlNjVhZmYyMmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhj L3hjX2RvbV9jb3JlLmMKKysrIGIvdG9vbHMvbGlieGMveGNfZG9tX2NvcmUuYwpAQCAtMzE0LDE2 ICszMTQsMTYgQEAgaW50IHhjX2RvbV9rZXJuZWxfY2hlY2tfc2l6ZShzdHJ1Y3QgeGNfZG9tX2lt YWdlICpkb20sIHNpemVfdCBzeikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IHhjX2RvbV9yYW1k aXNrX2NoZWNrX3NpemUoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCBzaXplX3Qgc3opCitpbnQg eGNfZG9tX21vZHVsZV9jaGVja19zaXplKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgc2l6ZV90 IHN6KQogewogICAgIC8qIE5vIGxpbWl0ICovCi0gICAgaWYgKCAhZG9tLT5tYXhfcmFtZGlza19z aXplICkKKyAgICBpZiAoICFkb20tPm1heF9tb2R1bGVfc2l6ZSApCiAgICAgICAgIHJldHVybiAw OwogCi0gICAgaWYgKCBzeiA+IGRvbS0+bWF4X3JhbWRpc2tfc2l6ZSApCisgICAgaWYgKCBzeiA+ IGRvbS0+bWF4X21vZHVsZV9zaXplICkKICAgICB7CiAgICAgICAgIHhjX2RvbV9wYW5pYyhkb20t PnhjaCwgWENfSU5WQUxJRF9LRVJORUwsCi0gICAgICAgICAgICAgICAgICAgICAicmFtZGlzayBp bWFnZSB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgaW1hZ2UgdG9v IGxhcmdlIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIApAQCAtNzY0LDcgKzc2NCw3IEBA IHN0cnVjdCB4Y19kb21faW1hZ2UgKnhjX2RvbV9hbGxvY2F0ZSh4Y19pbnRlcmZhY2UgKnhjaCwK ICAgICBkb20tPnhjaCA9IHhjaDsKIAogICAgIGRvbS0+bWF4X2tlcm5lbF9zaXplID0gWENfRE9N X0RFQ09NUFJFU1NfTUFYOwotICAgIGRvbS0+bWF4X3JhbWRpc2tfc2l6ZSA9IFhDX0RPTV9ERUNP TVBSRVNTX01BWDsKKyAgICBkb20tPm1heF9tb2R1bGVfc2l6ZSA9IFhDX0RPTV9ERUNPTVBSRVNT X01BWDsKICAgICBkb20tPm1heF9kZXZpY2V0cmVlX3NpemUgPSBYQ19ET01fREVDT01QUkVTU19N QVg7CiAKICAgICBpZiAoIGNtZGxpbmUgKQpAQCAtNzk3LDEwICs3OTcsMTAgQEAgaW50IHhjX2Rv bV9rZXJuZWxfbWF4X3NpemUoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCBzaXplX3Qgc3opCiAg ICAgcmV0dXJuIDA7CiB9CiAKLWludCB4Y19kb21fcmFtZGlza19tYXhfc2l6ZShzdHJ1Y3QgeGNf ZG9tX2ltYWdlICpkb20sIHNpemVfdCBzeikKK2ludCB4Y19kb21fbW9kdWxlX21heF9zaXplKHN0 cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgc2l6ZV90IHN6KQogewotICAgIERPTVBSSU5URigiJXM6 IHJhbWRpc2tfbWF4X3NpemU9JXp4IiwgX19GVU5DVElPTl9fLCBzeik7Ci0gICAgZG9tLT5tYXhf cmFtZGlza19zaXplID0gc3o7CisgICAgRE9NUFJJTlRGKCIlczogbW9kdWxlX21heF9zaXplPSV6 eCIsIF9fRlVOQ1RJT05fXywgc3opOworICAgIGRvbS0+bWF4X21vZHVsZV9zaXplID0gc3o7CiAg ICAgcmV0dXJuIDA7CiB9CiAKQEAgLTgyMSwxNiArODIxLDMwIEBAIGludCB4Y19kb21fa2VybmVs X2ZpbGUoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKICAg ICByZXR1cm4geGNfZG9tX3RyeV9ndW56aXAoZG9tLCAmZG9tLT5rZXJuZWxfYmxvYiwgJmRvbS0+ a2VybmVsX3NpemUpOwogfQogCi1pbnQgeGNfZG9tX3JhbWRpc2tfZmlsZShzdHJ1Y3QgeGNfZG9t X2ltYWdlICpkb20sIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoraW50IHhjX2RvbV9tb2R1bGVfZmls ZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBj aGFyICpjbWRsaW5lKQogeworICAgIHVuc2lnbmVkIGludCBtb2QgPSBkb20tPm51bV9tb2R1bGVz Kys7CisKICAgICBET01QUklOVEYoIiVzOiBmaWxlbmFtZT1cIiVzXCIiLCBfX0ZVTkNUSU9OX18s IGZpbGVuYW1lKTsKLSAgICBkb20tPnJhbWRpc2tfYmxvYiA9Ci0gICAgICAgIHhjX2RvbV9tYWxs b2NfZmlsZW1hcChkb20sIGZpbGVuYW1lLCAmZG9tLT5yYW1kaXNrX3NpemUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb20tPm1heF9yYW1kaXNrX3NpemUpOworICAgIGRvbS0+bW9k dWxlc1ttb2RdLmJsb2IgPQorICAgICAgICB4Y19kb21fbWFsbG9jX2ZpbGVtYXAoZG9tLCBmaWxl bmFtZSwgJmRvbS0+bW9kdWxlc1ttb2RdLnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb20tPm1heF9tb2R1bGVfc2l6ZSk7CiAKLSAgICBpZiAoIGRvbS0+cmFtZGlza19ibG9i ID09IE5VTEwgKQorICAgIGlmICggZG9tLT5tb2R1bGVzW21vZF0uYmxvYiA9PSBOVUxMICkKICAg ICAgICAgcmV0dXJuIC0xOwotLy8gICAgcmV0dXJuIHhjX2RvbV90cnlfZ3VuemlwKGRvbSwgJmRv bS0+cmFtZGlza19ibG9iLCAmZG9tLT5yYW1kaXNrX3NpemUpOworCisgICAgaWYgKCBjbWRsaW5l ICkKKyAgICB7CisgICAgICAgIGRvbS0+bW9kdWxlc1ttb2RdLmNtZGxpbmUgPSB4Y19kb21fc3Ry ZHVwKGRvbSwgY21kbGluZSk7CisKKyAgICAgICAgaWYgKCBkb20tPm1vZHVsZXNbbW9kXS5jbWRs aW5lID09IE5VTEwgKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlCisg ICAgeworICAgICAgICBkb20tPm1vZHVsZXNbbW9kXS5jbWRsaW5lID0gTlVMTDsKKyAgICB9CisK ICAgICByZXR1cm4gMDsKIH0KIApAQCAtODU5LDEzICs4NzMsMjggQEAgaW50IHhjX2RvbV9rZXJu ZWxfbWVtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgY29uc3Qgdm9pZCAqbWVtLCBzaXplX3Qg bWVtc2l6ZSkKICAgICByZXR1cm4geGNfZG9tX3RyeV9ndW56aXAoZG9tLCAmZG9tLT5rZXJuZWxf YmxvYiwgJmRvbS0+a2VybmVsX3NpemUpOwogfQogCi1pbnQgeGNfZG9tX3JhbWRpc2tfbWVtKHN0 cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgY29uc3Qgdm9pZCAqbWVtLAotICAgICAgICAgICAgICAg ICAgICAgICBzaXplX3QgbWVtc2l6ZSkKK2ludCB4Y19kb21fbW9kdWxlX21lbShzdHJ1Y3QgeGNf ZG9tX2ltYWdlICpkb20sIGNvbnN0IHZvaWQgKm1lbSwKKyAgICAgICAgICAgICAgICAgICAgICBz aXplX3QgbWVtc2l6ZSwgY29uc3QgY2hhciAqY21kbGluZSkKIHsKKyAgICB1bnNpZ25lZCBpbnQg bW9kID0gZG9tLT5udW1fbW9kdWxlcysrOworCiAgICAgRE9NUFJJTlRGX0NBTExFRChkb20tPnhj aCk7Ci0gICAgZG9tLT5yYW1kaXNrX2Jsb2IgPSAodm9pZCAqKW1lbTsKLSAgICBkb20tPnJhbWRp c2tfc2l6ZSA9IG1lbXNpemU7Ci0vLyAgICByZXR1cm4geGNfZG9tX3RyeV9ndW56aXAoZG9tLCAm ZG9tLT5yYW1kaXNrX2Jsb2IsICZkb20tPnJhbWRpc2tfc2l6ZSk7CisKKyAgICBkb20tPm1vZHVs ZXNbbW9kXS5ibG9iID0gKHZvaWQgKiltZW07CisgICAgZG9tLT5tb2R1bGVzW21vZF0uc2l6ZSA9 IG1lbXNpemU7CisKKyAgICBpZiAoIGNtZGxpbmUgKQorICAgIHsKKyAgICAgICAgZG9tLT5tb2R1 bGVzW21vZF0uY21kbGluZSA9IHhjX2RvbV9zdHJkdXAoZG9tLCBjbWRsaW5lKTsKKworICAgICAg ICBpZiAoIGRvbS0+bW9kdWxlc1ttb2RdLmNtZGxpbmUgPT0gTlVMTCApCisgICAgICAgICAgICBy ZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGRvbS0+bW9kdWxlc1tt b2RdLmNtZGxpbmUgPSBOVUxMOworICAgIH0KKwogICAgIHJldHVybiAwOwogfQogCkBAIC05OTAs NDEgKzEwMTksNDIgQEAgaW50IHhjX2RvbV91cGRhdGVfZ3Vlc3RfcDJtKHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSkKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB4Y19kb21fYnVpbGRf cmFtZGlzayhzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCitzdGF0aWMgaW50IHhjX2RvbV9idWls ZF9tb2R1bGUoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCB1bnNpZ25lZCBpbnQgbW9kKQogewot ICAgIHNpemVfdCB1bnppcGxlbiwgcmFtZGlza2xlbjsKLSAgICB2b2lkICpyYW1kaXNrbWFwOwor ICAgIHNpemVfdCB1bnppcGxlbiwgbW9kdWxlbGVuOworICAgIHZvaWQgKm1vZHVsZW1hcDsKKyAg ICBjaGFyIG5hbWVbMTBdOwogCi0gICAgaWYgKCAhZG9tLT5yYW1kaXNrX3NlZy52c3RhcnQgKQor ICAgIGlmICggIWRvbS0+bW9kdWxlc1ttb2RdLnNlZy52c3RhcnQgKQogICAgIHsKICAgICAgICAg dW56aXBsZW4gPSB4Y19kb21fY2hlY2tfZ3ppcChkb20tPnhjaCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb20tPnJhbWRpc2tfYmxvYiwgZG9tLT5yYW1kaXNrX3NpemUp OwotICAgICAgICBpZiAoIHhjX2RvbV9yYW1kaXNrX2NoZWNrX3NpemUoZG9tLCB1bnppcGxlbikg IT0gMCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5tb2R1bGVz W21vZF0uYmxvYiwgZG9tLT5tb2R1bGVzW21vZF0uc2l6ZSk7CisgICAgICAgIGlmICggeGNfZG9t X21vZHVsZV9jaGVja19zaXplKGRvbSwgdW56aXBsZW4pICE9IDAgKQogICAgICAgICAgICAgdW56 aXBsZW4gPSAwOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIHVuemlwbGVuID0gMDsKIAotICAg IHJhbWRpc2tsZW4gPSB1bnppcGxlbiA/IHVuemlwbGVuIDogZG9tLT5yYW1kaXNrX3NpemU7Ci0K LSAgICBpZiAoIHhjX2RvbV9hbGxvY19zZWdtZW50KGRvbSwgJmRvbS0+cmFtZGlza19zZWcsICJy YW1kaXNrIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+cmFtZGlza19zZWcu dnN0YXJ0LCByYW1kaXNrbGVuKSAhPSAwICkKKyAgICBtb2R1bGVsZW4gPSB1bnppcGxlbiA/IHVu emlwbGVuIDogZG9tLT5tb2R1bGVzW21vZF0uc2l6ZTsKKyAgICBzbnByaW50ZihuYW1lLCBzaXpl b2YobmFtZSksICJtb2R1bGUldSIsIG1vZCk7CisgICAgaWYgKCB4Y19kb21fYWxsb2Nfc2VnbWVu dChkb20sICZkb20tPm1vZHVsZXNbbW9kXS5zZWcsIG5hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb20tPm1vZHVsZXNbbW9kXS5zZWcudnN0YXJ0LCBtb2R1bGVsZW4pICE9IDAg KQogICAgICAgICBnb3RvIGVycjsKLSAgICByYW1kaXNrbWFwID0geGNfZG9tX3NlZ190b19wdHIo ZG9tLCAmZG9tLT5yYW1kaXNrX3NlZyk7Ci0gICAgaWYgKCByYW1kaXNrbWFwID09IE5VTEwgKQor ICAgIG1vZHVsZW1hcCA9IHhjX2RvbV9zZWdfdG9fcHRyKGRvbSwgJmRvbS0+bW9kdWxlc1ttb2Rd LnNlZyk7CisgICAgaWYgKCBtb2R1bGVtYXAgPT0gTlVMTCApCiAgICAgewotICAgICAgICBET01Q UklOVEYoIiVzOiB4Y19kb21fc2VnX3RvX3B0cihkb20sICZkb20tPnJhbWRpc2tfc2VnKSA9PiBO VUxMIiwKLSAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIERPTVBSSU5U RigiJXM6IHhjX2RvbV9zZWdfdG9fcHRyKGRvbSwgJmRvbS0+bW9kdWxlc1sldV0uc2VnKSA9PiBO VUxMIiwKKyAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgbW9kKTsKICAgICAgICAgZ290 byBlcnI7CiAgICAgfQogICAgIGlmICggdW56aXBsZW4gKQogICAgIHsKLSAgICAgICAgaWYgKCB4 Y19kb21fZG9fZ3VuemlwKGRvbS0+eGNoLCBkb20tPnJhbWRpc2tfYmxvYiwgZG9tLT5yYW1kaXNr X3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW1kaXNrbWFwLCByYW1kaXNr bGVuKSA9PSAtMSApCisgICAgICAgIGlmICggeGNfZG9tX2RvX2d1bnppcChkb20tPnhjaCwgZG9t LT5tb2R1bGVzW21vZF0uYmxvYiwgZG9tLT5tb2R1bGVzW21vZF0uc2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1vZHVsZW1hcCwgbW9kdWxlbGVuKSA9PSAtMSApCiAgICAgICAg ICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgZWxzZQotICAgICAgICBtZW1jcHkocmFtZGlza21h cCwgZG9tLT5yYW1kaXNrX2Jsb2IsIGRvbS0+cmFtZGlza19zaXplKTsKKyAgICAgICAgbWVtY3B5 KG1vZHVsZW1hcCwgZG9tLT5tb2R1bGVzW21vZF0uYmxvYiwgZG9tLT5tb2R1bGVzW21vZF0uc2l6 ZSk7CiAKICAgICByZXR1cm4gMDsKIApAQCAtMTEzMSw2ICsxMTYxLDcgQEAgaW50IHhjX2RvbV9i dWlsZF9pbWFnZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgdW5zaWduZWQgaW50 IHBhZ2Vfc2l6ZTsKICAgICBib29sIHVubWFwcGVkX2luaXRyZDsKKyAgICB1bnNpZ25lZCBpbnQg bW9kOwogCiAgICAgRE9NUFJJTlRGX0NBTExFRChkb20tPnhjaCk7CiAKQEAgLTExNTQsMTUgKzEx ODUsMjQgQEAgaW50IHhjX2RvbV9idWlsZF9pbWFnZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p CiAgICAgaWYgKCBkb20tPmtlcm5lbF9sb2FkZXItPmxvYWRlcihkb20pICE9IDAgKQogICAgICAg ICBnb3RvIGVycjsKIAotICAgIC8qIERvbid0IGxvYWQgcmFtZGlzayBub3cgaWYgbm8gaW5pdGlh bCBtYXBwaW5nIHJlcXVpcmVkLiAqLwotICAgIHVubWFwcGVkX2luaXRyZCA9IGRvbS0+cGFybXMu dW5tYXBwZWRfaW5pdHJkICYmICFkb20tPnJhbWRpc2tfc2VnLnZzdGFydDsKLQotICAgIGlmICgg ZG9tLT5yYW1kaXNrX2Jsb2IgJiYgIXVubWFwcGVkX2luaXRyZCApCisgICAgLyogRG9uJ3QgbG9h ZCByYW1kaXNrIC8gb3RoZXIgbW9kdWxlcyBub3cgaWYgbm8gaW5pdGlhbCBtYXBwaW5nIHJlcXVp cmVkLiAqLworICAgIGZvciAoIG1vZCA9IDA7IG1vZCA8IGRvbS0+bnVtX21vZHVsZXM7IG1vZCsr ICkKICAgICB7Ci0gICAgICAgIGlmICggeGNfZG9tX2J1aWxkX3JhbWRpc2soZG9tKSAhPSAwICkK LSAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICBkb20tPmluaXRyZF9zdGFydCA9IGRvbS0+ cmFtZGlza19zZWcudnN0YXJ0OwotICAgICAgICBkb20tPmluaXRyZF9sZW4gPSBkb20tPnJhbWRp c2tfc2VnLnZlbmQgLSBkb20tPnJhbWRpc2tfc2VnLnZzdGFydDsKKyAgICAgICAgdW5tYXBwZWRf aW5pdHJkID0gKGRvbS0+cGFybXMudW5tYXBwZWRfaW5pdHJkICYmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAhZG9tLT5tb2R1bGVzW21vZF0uc2VnLnZzdGFydCk7CisKKyAgICAgICAgaWYg KCBkb20tPm1vZHVsZXNbbW9kXS5ibG9iICYmICF1bm1hcHBlZF9pbml0cmQgKQorICAgICAgICB7 CisgICAgICAgICAgICBpZiAoIHhjX2RvbV9idWlsZF9tb2R1bGUoZG9tLCBtb2QpICE9IDAgKQor ICAgICAgICAgICAgICAgIGdvdG8gZXJyOworCisgICAgICAgICAgICBpZiAoIG1vZCA9PSAwICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkb20tPmluaXRyZF9zdGFydCA9IGRvbS0+ bW9kdWxlc1ttb2RdLnNlZy52c3RhcnQ7CisgICAgICAgICAgICAgICAgZG9tLT5pbml0cmRfbGVu ID0KKyAgICAgICAgICAgICAgICAgICAgZG9tLT5tb2R1bGVzW21vZF0uc2VnLnZlbmQgLSBkb20t Pm1vZHVsZXNbbW9kXS5zZWcudnN0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg fQogCiAgICAgLyogbG9hZCBkZXZpY2V0cmVlICovCkBAIC0xMjE2LDE0ICsxMjU2LDI0IEBAIGlu dCB4Y19kb21fYnVpbGRfaW1hZ2Uoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogICAgIGlmICgg ZG9tLT52aXJ0X3BndGFiX2VuZCAmJiB4Y19kb21fYWxsb2NfcGFkKGRvbSwgZG9tLT52aXJ0X3Bn dGFiX2VuZCkgKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBMb2FkIHJhbWRpc2sgaWYg bm8gaW5pdGlhbCBtYXBwaW5nIHJlcXVpcmVkLiAqLwotICAgIGlmICggZG9tLT5yYW1kaXNrX2Js b2IgJiYgdW5tYXBwZWRfaW5pdHJkICkKKyAgICBmb3IgKCBtb2QgPSAwOyBtb2QgPCBkb20tPm51 bV9tb2R1bGVzOyBtb2QrKyApCiAgICAgewotICAgICAgICBpZiAoIHhjX2RvbV9idWlsZF9yYW1k aXNrKGRvbSkgIT0gMCApCi0gICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgZG9tLT5mbGFn cyB8PSBTSUZfTU9EX1NUQVJUX1BGTjsKLSAgICAgICAgZG9tLT5pbml0cmRfc3RhcnQgPSBkb20t PnJhbWRpc2tfc2VnLnBmbjsKLSAgICAgICAgZG9tLT5pbml0cmRfbGVuID0gcGFnZV9zaXplICog ZG9tLT5yYW1kaXNrX3NlZy5wYWdlczsKKyAgICAgICAgdW5tYXBwZWRfaW5pdHJkID0gKGRvbS0+ cGFybXMudW5tYXBwZWRfaW5pdHJkICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG9t LT5tb2R1bGVzW21vZF0uc2VnLnZzdGFydCk7CisKKyAgICAgICAgLyogTG9hZCByYW1kaXNrIC8g b3RoZXIgbW9kdWxlcyBpZiBubyBpbml0aWFsIG1hcHBpbmcgcmVxdWlyZWQuICovCisgICAgICAg IGlmICggZG9tLT5tb2R1bGVzW21vZF0uYmxvYiAmJiB1bm1hcHBlZF9pbml0cmQgKQorICAgICAg ICB7CisgICAgICAgICAgICBpZiAoIHhjX2RvbV9idWlsZF9tb2R1bGUoZG9tLCBtb2QpICE9IDAg KQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworCisgICAgICAgICAgICBpZiAoIG1vZCA9PSAw ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkb20tPmZsYWdzIHw9IFNJRl9NT0Rf U1RBUlRfUEZOOworICAgICAgICAgICAgICAgIGRvbS0+aW5pdHJkX3N0YXJ0ID0gZG9tLT5tb2R1 bGVzW21vZF0uc2VnLnBmbjsKKyAgICAgICAgICAgICAgICBkb20tPmluaXRyZF9sZW4gPSBwYWdl X3NpemUgKiBkb20tPm1vZHVsZXNbbW9kXS5zZWcucGFnZXM7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KICAgICB9CiAKICAgICAvKiBBbGxvY2F0ZSBwMm0gbGlzdCBpZiBvdXRzaWRlIG9mIGlu aXRpYWwga2VybmVsIG1hcHBpbmcuICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19kb21f eDg2LmMgYi90b29scy9saWJ4Yy94Y19kb21feDg2LmMKaW5kZXggYmZmNjhhMDExZi4uMGI2NWRh YjRiYyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jCisrKyBiL3Rvb2xzL2xp YnhjL3hjX2RvbV94ODYuYwpAQCAtNzAsOCArNzAsOCBAQAogI2RlZmluZSByb3VuZF91cChhZGRy LCBtYXNrKSAgICAgKChhZGRyKSB8IChtYXNrKSkKICNkZWZpbmUgcm91bmRfcGdfdXAoYWRkcikg ICgoKGFkZHIpICsgUEFHRV9TSVpFX1g4NiAtIDEpICYgfihQQUdFX1NJWkVfWDg2IC0gMSkpCiAK LSNkZWZpbmUgSFZNTE9BREVSX01PRFVMRV9NQVhfQ09VTlQgMQotI2RlZmluZSBIVk1MT0FERVJf TU9EVUxFX05BTUVfU0laRSAxMAorI2RlZmluZSBIVk1MT0FERVJfTU9EVUxFX01BWF9DT1VOVCAy CisjZGVmaW5lIEhWTUxPQURFUl9NT0RVTEVfQ01ETElORV9TSVpFIE1BWF9HVUVTVF9DTURMSU5F CiAKIHN0cnVjdCB4Y19kb21fcGFyYW1zIHsKICAgICB1bnNpZ25lZCBsZXZlbHM7CkBAIC02Mjcs NiArNjI3LDEyIEBAIHN0YXRpYyBpbnQgYWxsb2NfbWFnaWNfcGFnZXNfaHZtKHN0cnVjdCB4Y19k b21faW1hZ2UgKmRvbSkKICAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJB TV9TSEFSSU5HX1JJTkdfUEZOLAogICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbF9wZm4oU1BF Q0lBTFBBR0VfU0hBUklORykpOwogCisgICAgc3RhcnRfaW5mb19zaXplICs9CisgICAgICAgIHNp emVvZihzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkpICogSFZNTE9BREVSX01PRFVMRV9NQVhfQ09V TlQ7CisKKyAgICBzdGFydF9pbmZvX3NpemUgKz0KKyAgICAgICAgSFZNTE9BREVSX01PRFVMRV9D TURMSU5FX1NJWkUgKiBIVk1MT0FERVJfTU9EVUxFX01BWF9DT1VOVDsKKwogICAgIGlmICggIWRv bS0+ZGV2aWNlX21vZGVsICkKICAgICB7CiAgICAgICAgIGlmICggZG9tLT5jbWRsaW5lICkKQEAg LTYzNCwyMiArNjQwLDkgQEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlc19odm0oc3RydWN0 IHhjX2RvbV9pbWFnZSAqZG9tKQogICAgICAgICAgICAgZG9tLT5jbWRsaW5lX3NpemUgPSBST1VO RFVQKHN0cmxlbihkb20tPmNtZGxpbmUpICsgMSwgOCk7CiAgICAgICAgICAgICBzdGFydF9pbmZv X3NpemUgKz0gZG9tLT5jbWRsaW5lX3NpemU7CiAgICAgICAgIH0KLQotICAgICAgICAvKiBMaW1p dGVkIHRvIG9uZSBtb2R1bGUuICovCi0gICAgICAgIGlmICggZG9tLT5yYW1kaXNrX2Jsb2IgKQot ICAgICAgICAgICAgc3RhcnRfaW5mb19zaXplICs9IHNpemVvZihzdHJ1Y3QgaHZtX21vZGxpc3Rf ZW50cnkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzdGFydF9pbmZvX3NpemUg Kz0KLSAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkpICogSFZNTE9B REVSX01PRFVMRV9NQVhfQ09VTlQ7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIEFkZCBleHRyYSBz cGFjZSB0byB3cml0ZSBtb2R1bGVzIG5hbWUuCi0gICAgICAgICAqIFRoZSBIVk1MT0FERVJfTU9E VUxFX05BTUVfU0laRSBhY2NvdW50cyBmb3IgTlVMIGJ5dGUuCi0gICAgICAgICAqLwotICAgICAg ICBzdGFydF9pbmZvX3NpemUgKz0KLSAgICAgICAgICAgIEhWTUxPQURFUl9NT0RVTEVfTkFNRV9T SVpFICogSFZNTE9BREVSX01PRFVMRV9NQVhfQ09VTlQ7Ci0KICAgICAgICAgLyoKICAgICAgICAg ICogQWxsb2NhdGUgYW5kIGNsZWFyIGFkZGl0aW9uYWwgaW9yZXEgc2VydmVyIHBhZ2VzLiBUaGUg ZGVmYXVsdAogICAgICAgICAgKiBzZXJ2ZXIgd2lsbCB1c2UgdGhlIElPUkVRIGFuZCBCVUZJT1JF USBzcGVjaWFsIHBhZ2VzIGFib3ZlLgpAQCAtNzQ5LDcgKzc0Miw3IEBAIHN0YXRpYyBpbnQgc3Rh cnRfaW5mb194ODZfMzIoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogICAgIHN0YXJ0X2luZm8t PmNvbnNvbGUuZG9tVS5tZm4gPSB4Y19kb21fcDJtKGRvbSwgZG9tLT5jb25zb2xlX3Bmbik7CiAg ICAgc3RhcnRfaW5mby0+Y29uc29sZS5kb21VLmV2dGNobiA9IGRvbS0+Y29uc29sZV9ldnRjaG47 CiAKLSAgICBpZiAoIGRvbS0+cmFtZGlza19ibG9iICkKKyAgICBpZiAoIGRvbS0+bW9kdWxlc1sw XS5ibG9iICkKICAgICB7CiAgICAgICAgIHN0YXJ0X2luZm8tPm1vZF9zdGFydCA9IGRvbS0+aW5p dHJkX3N0YXJ0OwogICAgICAgICBzdGFydF9pbmZvLT5tb2RfbGVuID0gZG9tLT5pbml0cmRfbGVu OwpAQCAtODAwLDcgKzc5Myw3IEBAIHN0YXRpYyBpbnQgc3RhcnRfaW5mb194ODZfNjQoc3RydWN0 IHhjX2RvbV9pbWFnZSAqZG9tKQogICAgIHN0YXJ0X2luZm8tPmNvbnNvbGUuZG9tVS5tZm4gPSB4 Y19kb21fcDJtKGRvbSwgZG9tLT5jb25zb2xlX3Bmbik7CiAgICAgc3RhcnRfaW5mby0+Y29uc29s ZS5kb21VLmV2dGNobiA9IGRvbS0+Y29uc29sZV9ldnRjaG47CiAKLSAgICBpZiAoIGRvbS0+cmFt ZGlza19ibG9iICkKKyAgICBpZiAoIGRvbS0+bW9kdWxlc1swXS5ibG9iICkKICAgICB7CiAgICAg ICAgIHN0YXJ0X2luZm8tPm1vZF9zdGFydCA9IGRvbS0+aW5pdHJkX3N0YXJ0OwogICAgICAgICBz dGFydF9pbmZvLT5tb2RfbGVuID0gZG9tLT5pbml0cmRfbGVuOwpAQCAtMTIzNyw3ICsxMjMwLDcg QEAgc3RhdGljIGludCBtZW1pbml0X2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAgICAg dW5zaWduZWQgbG9uZyB0YXJnZXRfcGFnZXMgPSBkb20tPnRhcmdldF9wYWdlczsKICAgICB1bnNp Z25lZCBsb25nIGN1cl9wYWdlcywgY3VyX3BmbjsKICAgICBpbnQgcmM7Ci0gICAgdW5zaWduZWQg bG9uZyBzdGF0X25vcm1hbF9wYWdlcyA9IDAsIHN0YXRfMm1iX3BhZ2VzID0gMCwgCisgICAgdW5z aWduZWQgbG9uZyBzdGF0X25vcm1hbF9wYWdlcyA9IDAsIHN0YXRfMm1iX3BhZ2VzID0gMCwKICAg ICAgICAgc3RhdF8xZ2JfcGFnZXMgPSAwOwogICAgIHVuc2lnbmVkIGludCBtZW1mbGFncyA9IDA7 CiAgICAgaW50IGNsYWltX2VuYWJsZWQgPSBkb20tPmNsYWltX2VuYWJsZWQ7CkBAIC0xMzAzLDYg KzEyOTYsOCBAQCBzdGF0aWMgaW50IG1lbWluaXRfaHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRv bSkKICAgICBwMm1fc2l6ZSA9IDA7CiAgICAgZm9yICggaSA9IDA7IGkgPCBucl92bWVtcmFuZ2Vz OyBpKysgKQogICAgIHsKKyAgICAgICAgRE9NUFJJTlRGKCJyYW5nZTogc3RhcnQ9MHglIlBSSXg2 NCIgZW5kPTB4JSJQUkl4NjQsIHZtZW1yYW5nZXNbaV0uc3RhcnQsIHZtZW1yYW5nZXNbaV0uZW5k KTsKKwogICAgICAgICB0b3RhbF9wYWdlcyArPSAoKHZtZW1yYW5nZXNbaV0uZW5kIC0gdm1lbXJh bmdlc1tpXS5zdGFydCkKICAgICAgICAgICAgICAgICAgICAgICAgID4+IFBBR0VfU0hJRlQpOwog ICAgICAgICBwMm1fc2l6ZSA9IHAybV9zaXplID4gKHZtZW1yYW5nZXNbaV0uZW5kID4+IFBBR0Vf U0hJRlQpID8KQEAgLTE2MzMsNyArMTYyOCw3IEBAIHN0YXRpYyBpbnQgYWxsb2NfcGd0YWJsZXNf aHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKICAqLwogc3RhdGljIHZvaWQgYWRkX21vZHVs ZV90b19saXN0KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2Zpcm13YXJlX21vZHVsZSAqbW9kdWxlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY21kbGluZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkgKm1vZGxpc3QsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9zdGFydF9pbmZvICpzdGFydF9pbmZv KQogewpAQCAtMTY0OCwxNiArMTY0MywyMCBAQCBzdGF0aWMgdm9pZCBhZGRfbW9kdWxlX3RvX2xp c3Qoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLAogICAgICAgICByZXR1cm47CiAKICAgICBhc3Nl cnQoc3RhcnRfaW5mby0+bnJfbW9kdWxlcyA8IEhWTUxPQURFUl9NT0RVTEVfTUFYX0NPVU5UKTsK LSAgICBhc3NlcnQoc3RybmxlbihuYW1lLCBIVk1MT0FERVJfTU9EVUxFX05BTUVfU0laRSkKLSAg ICAgICAgICAgPCBIVk1MT0FERVJfTU9EVUxFX05BTUVfU0laRSk7CiAKICAgICBtb2RsaXN0W2lu ZGV4XS5wYWRkciA9IG1vZHVsZS0+Z3Vlc3RfYWRkcl9vdXQ7CiAgICAgbW9kbGlzdFtpbmRleF0u c2l6ZSA9IG1vZHVsZS0+bGVuZ3RoOwogCi0gICAgc3RybmNweShtb2R1bGVzX2NtZGxpbmVfc3Rh cnQgKyBIVk1MT0FERVJfTU9EVUxFX05BTUVfU0laRSAqIGluZGV4LAotICAgICAgICAgICAgbmFt ZSwgSFZNTE9BREVSX01PRFVMRV9OQU1FX1NJWkUpOworICAgIGlmICggY21kbGluZSApCisgICAg eworICAgICAgICBhc3NlcnQoc3RybmxlbihjbWRsaW5lLCBIVk1MT0FERVJfTU9EVUxFX0NNRExJ TkVfU0laRSkKKyAgICAgICAgICAgICAgIDwgSFZNTE9BREVSX01PRFVMRV9DTURMSU5FX1NJWkUp OworICAgICAgICBzdHJuY3B5KG1vZHVsZXNfY21kbGluZV9zdGFydCArIEhWTUxPQURFUl9NT0RV TEVfQ01ETElORV9TSVpFICogaW5kZXgsCisgICAgICAgICAgICAgICAgY21kbGluZSwgSFZNTE9B REVSX01PRFVMRV9DTURMSU5FX1NJWkUpOworICAgIH0KKwogICAgIG1vZGxpc3RbaW5kZXhdLmNt ZGxpbmVfcGFkZHIgPQotICAgICAgICBtb2R1bGVzX2NtZGxpbmVfcGFkZHIgKyBIVk1MT0FERVJf TU9EVUxFX05BTUVfU0laRSAqIGluZGV4OworICAgICAgICBtb2R1bGVzX2NtZGxpbmVfcGFkZHIg KyBIVk1MT0FERVJfTU9EVUxFX0NNRExJTkVfU0laRSAqIGluZGV4OwogCiAgICAgc3RhcnRfaW5m by0+bnJfbW9kdWxlcysrOwogfQpAQCAtMTY2OSwxMCArMTY2OCwxMCBAQCBzdGF0aWMgaW50IGJv b3RsYXRlX2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAgICAgc3RydWN0IGh2bV9zdGFy dF9pbmZvICpzdGFydF9pbmZvOwogICAgIHNpemVfdCBzdGFydF9pbmZvX3NpemU7CiAgICAgc3Ry dWN0IGh2bV9tb2RsaXN0X2VudHJ5ICptb2RsaXN0OworICAgIHVuc2lnbmVkIGludCBpOwogCiAg ICAgc3RhcnRfaW5mb19zaXplID0gc2l6ZW9mKCpzdGFydF9pbmZvKSArIGRvbS0+Y21kbGluZV9z aXplOwotICAgIGlmICggZG9tLT5yYW1kaXNrX2Jsb2IgKQotICAgICAgICBzdGFydF9pbmZvX3Np emUgKz0gc2l6ZW9mKHN0cnVjdCBodm1fbW9kbGlzdF9lbnRyeSk7CisgICAgc3RhcnRfaW5mb19z aXplICs9IHNpemVvZihzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkpICogZG9tLT5udW1fbW9kdWxl czsKIAogICAgIGlmICggc3RhcnRfaW5mb19zaXplID4KICAgICAgICAgIGRvbS0+c3RhcnRfaW5m b19zZWcucGFnZXMgPDwgWENfRE9NX1BBR0VfU0hJRlQoZG9tKSApCkBAIC0xNzAzLDEyICsxNzAy LDE4IEBAIHN0YXRpYyBpbnQgYm9vdGxhdGVfaHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50cHRyX3QpY21kbGluZSAtICh1 aW50cHRyX3Qpc3RhcnRfaW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIGRvbS0+cmFt ZGlza19ibG9iICkKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkb20tPm51bV9tb2R1bGVzOyBp KysgKQogICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2Zpcm13YXJlX21vZHVs ZSBtb2Q7CisKKyAgICAgICAgICAgIERPTVBSSU5URigiQWRkaW5nIG1vZHVsZSAldSIsIGkpOwor ICAgICAgICAgICAgbW9kLmd1ZXN0X2FkZHJfb3V0ID0KKyAgICAgICAgICAgICAgICBkb20tPm1v ZHVsZXNbaV0uc2VnLnZzdGFydCAtIGRvbS0+cGFybXMudmlydF9iYXNlOworICAgICAgICAgICAg bW9kLmxlbmd0aCA9CisgICAgICAgICAgICAgICAgZG9tLT5tb2R1bGVzW2ldLnNlZy52ZW5kIC0g ZG9tLT5tb2R1bGVzW2ldLnNlZy52c3RhcnQ7CiAKLSAgICAgICAgICAgIG1vZGxpc3RbMF0ucGFk ZHIgPSBkb20tPnJhbWRpc2tfc2VnLnZzdGFydCAtIGRvbS0+cGFybXMudmlydF9iYXNlOwotICAg ICAgICAgICAgbW9kbGlzdFswXS5zaXplID0gZG9tLT5yYW1kaXNrX3NlZy52ZW5kIC0gZG9tLT5y YW1kaXNrX3NlZy52c3RhcnQ7Ci0gICAgICAgICAgICBzdGFydF9pbmZvLT5ucl9tb2R1bGVzID0g MTsKKyAgICAgICAgICAgIGFkZF9tb2R1bGVfdG9fbGlzdChkb20sICZtb2QsIGRvbS0+bW9kdWxl c1tpXS5jbWRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGxpc3QsIHN0 YXJ0X2luZm8pOwogICAgICAgICB9CiAKICAgICAgICAgLyogQUNQSSBtb2R1bGUgMCBpcyB0aGUg UlNEUCAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMgYi90b29scy9saWJ4 bC9saWJ4bF9kb20uYwppbmRleCBlZjgzNGU2NTJkLi5mYmJkYjllYzJmIDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9saWJ4bF9kb20uYworKysgYi90b29scy9saWJ4bC9saWJ4bF9kb20uYwpAQCAt Nzk2LDEyICs3OTYsMTIgQEAgaW50IGxpYnhsX19idWlsZF9wdihsaWJ4bF9fZ2MgKmdjLCB1aW50 MzJfdCBkb21pZCwKIAogICAgIGlmICggc3RhdGUtPnB2X3JhbWRpc2sucGF0aCAmJiBzdHJsZW4o c3RhdGUtPnB2X3JhbWRpc2sucGF0aCkgKSB7CiAgICAgICAgIGlmIChzdGF0ZS0+cHZfcmFtZGlz ay5tYXBwZWQpIHsKLSAgICAgICAgICAgIGlmICggKHJldCA9IHhjX2RvbV9yYW1kaXNrX21lbShk b20sIHN0YXRlLT5wdl9yYW1kaXNrLmRhdGEsIHN0YXRlLT5wdl9yYW1kaXNrLnNpemUpKSAhPSAw ICkgeworICAgICAgICAgICAgaWYgKCAocmV0ID0geGNfZG9tX21vZHVsZV9tZW0oZG9tLCBzdGF0 ZS0+cHZfcmFtZGlzay5kYXRhLCBzdGF0ZS0+cHZfcmFtZGlzay5zaXplLCBOVUxMKSkgIT0gMCAp IHsKICAgICAgICAgICAgICAgICBMT0dFKEVSUk9SLCAieGNfZG9tX3JhbWRpc2tfbWVtIGZhaWxl ZCIpOwogICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgfQogICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgaWYgKCAocmV0ID0geGNfZG9tX3JhbWRpc2tfZmlsZShkb20s IHN0YXRlLT5wdl9yYW1kaXNrLnBhdGgpKSAhPSAwICkgeworICAgICAgICAgICAgaWYgKCAocmV0 ID0geGNfZG9tX21vZHVsZV9maWxlKGRvbSwgc3RhdGUtPnB2X3JhbWRpc2sucGF0aCwgTlVMTCkp ICE9IDAgKSB7CiAgICAgICAgICAgICAgICAgTE9HRShFUlJPUiwgInhjX2RvbV9yYW1kaXNrX2Zp bGUgZmFpbGVkIik7CiAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICB9CkBA IC0xMDQzLDE0ICsxMDQzLDE0IEBAIHN0YXRpYyBpbnQgbGlieGxfX2RvbWFpbl9maXJtd2FyZShs aWJ4bF9fZ2MgKmdjLAogCiAgICAgICAgIGlmIChzdGF0ZS0+cHZfcmFtZGlzay5wYXRoICYmIHN0 cmxlbihzdGF0ZS0+cHZfcmFtZGlzay5wYXRoKSkgewogICAgICAgICAgICAgaWYgKHN0YXRlLT5w dl9yYW1kaXNrLm1hcHBlZCkgewotICAgICAgICAgICAgICAgIHJjID0geGNfZG9tX3JhbWRpc2tf bWVtKGRvbSwgc3RhdGUtPnB2X3JhbWRpc2suZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0ZS0+cHZfcmFtZGlzay5zaXplKTsKKyAgICAgICAgICAgICAg ICByYyA9IHhjX2RvbV9tb2R1bGVfbWVtKGRvbSwgc3RhdGUtPnB2X3JhbWRpc2suZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5wdl9yYW1kaXNrLnNp emUsIE5VTEwpOwogICAgICAgICAgICAgICAgIGlmIChyYykgewogICAgICAgICAgICAgICAgICAg ICBMT0dFKEVSUk9SLCAieGNfZG9tX3JhbWRpc2tfbWVtIGZhaWxlZCIpOwogICAgICAgICAgICAg ICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgICAgIHJjID0geGNfZG9tX3JhbWRpc2tfZmlsZShkb20sIHN0YXRlLT5w dl9yYW1kaXNrLnBhdGgpOworICAgICAgICAgICAgICAgIHJjID0geGNfZG9tX21vZHVsZV9maWxl KGRvbSwgc3RhdGUtPnB2X3JhbWRpc2sucGF0aCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYg KHJjKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR0UoRVJST1IsICJ4Y19kb21fcmFtZGlza19m aWxlIGZhaWxlZCIpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKLS0gCjIuMTEuMAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=