From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v1 06/12] libxl: add support for different hotplug interfaces Date: Wed, 23 Jan 2013 18:48:31 +0100 Message-ID: <1358963317-10221-7-git-send-email-roger.pau@citrix.com> References: <1358963317-10221-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1358963317-10221-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org QWRkIGEgbmV3IHZhcmlhYmxlIHRvIGxpYnhsX2RldmljZV9kaXNrICJob3RwbHVnX3ZlcnNpb24i LCB0aGF0IHdpbGwKYmUgYXV0b21hdGljYWxseSBzZXQgdG8gdGhlIGRldGVjdGVkIGhvdHBsdWcg c2NyaXB0IGludGVyZmFjZSB2ZXJzaW9uLgoKVGhpcyBwYXRjaCBhZGRzIHRoZSBiYXNpYyBzdXBw b3J0IHRvIGhhbmRsZSB0aGlzIG5ldyBzY3JpcHRzLCBieQphZGRpbmcgdGhlIHByZXBhcmUvdW5w cmVwYXJlIHByaXZhdGUgbGlieGwgZnVuY3Rpb25zLCBhbmQgbW9kaWZ5aW5nCnRoZSBjdXJyZW50 IGRvbWFpbiBjcmVhdGlvbi9kZXN0cnVjdGlvbiB0byBjYWxsIHRoaXMgZnVuY3Rpb25zIGF0IHRo ZQphcHByb3ByaWF0ZSBzcG90cy4gVGhlIGhvdHBsdWcgaW50ZXJmYWNlIGRldGVjdGlvbiBpcyBk b25lIGluIHRoZQpfcHJlcGFyZSBjYWxsLgoKVGhpcyBwYXRjaCBhbHNvIGFkZHMgc29tZSBoZWxw ZXJzLCB0aGF0IHdpbGwgYmUgdXNlZCBoZXJlIGFuZCBpbiBsYXRlcgpwYXRjaGVzLgoKU2lnbmVk LW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNjOiBJYW4g Q2FtcGJlbGwgPGlhbi5jYW1wYmVsbEBjaXRyaXguY29tPgotLS0KIHRvb2xzL2xpYnhsL2xpYnhs LmMgICAgICAgICAgfCAgMTcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMgICB8ICAgNjIgKysrKysrKysrKysrKysr LQogdG9vbHMvbGlieGwvbGlieGxfZGV2aWNlLmMgICB8ICAxMjcgKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLQogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCB8ICAgNDMgKysrKysr KysrKysKIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgfCAgICAxICsKIDUgZmlsZXMgY2hh bmdlZCwgMzgxIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsLmMgYi90b29scy9saWJ4bC9saWJ4bC5jCmluZGV4IGE2N2M0ZGMuLjkw NjFmZGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMKKysrIGIvdG9vbHMvbGlieGwv bGlieGwuYwpAQCAtMjAxMSw2ICsyMDExLDE0NiBAQCBpbnQgbGlieGxfX2RldmljZV9mcm9tX2Rp c2sobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIDA7CiB9CiAKKy8q IENhbGxiYWNrcyBmb3IgbGlieGxfX2RldmljZV9kaXNrX3ByZXBhcmUgKi8KKworc3RhdGljIHZv aWQgZGV2aWNlX2Rpc2tfcHJlcGFyZV9jYihsaWJ4bF9fZWdjICosIGxpYnhsX19hb19kZXZpY2Ug Kik7CisKK3ZvaWQgbGlieGxfX2RldmljZV9kaXNrX3ByZXBhcmUobGlieGxfX2VnYyAqZWdjLCB1 aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2 aWNlX2Rpc2sgKmRpc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19h b19kZXZpY2UgKnByZXBhcmVfYW9kZXYpCit7CisgICAgU1RBVEVfQU9fR0MocHJlcGFyZV9hb2Rl di0+YW8pOworICAgIGNoYXIgKmhvdHBsdWdfcGF0aDsKKyAgICBjaGFyICpzY3JpcHRfcGF0aDsK KyAgICBpbnQgcmM7CisgICAgeHNfdHJhbnNhY3Rpb25fdCB0ID0gWEJUX05VTEw7CisgICAgbGli eGxfX2Rpc2tfcHJlcGFyZSAqZHA7CisgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXY7CisKKyAg ICBpZiAoIWRpc2stPnNjcmlwdCkgeworICAgICAgICAvKiBJZiBzY3JpcHQgaXMgbm90IHNldCBh c3N1bWUgdjEgKi8KKyAgICAgICAgZGlzay0+aG90cGx1Z192ZXJzaW9uID0gMTsKKyAgICAgICAg cHJlcGFyZV9hb2Rldi0+Y2FsbGJhY2soZWdjLCBwcmVwYXJlX2FvZGV2KTsKKyAgICAgICAgcmV0 dXJuOworICAgIH0KKworICAgIEdDTkVXKGRwKTsKKyAgICBkcC0+ZGlzayA9IGRpc2s7CisgICAg LyogU2F2ZSBvcmlnaW5hbCBhb2Rldiwgc2luY2Ugd2Ugd2lsbCBjYWxsIGl0IG9uY2UgaG90cGx1 ZworICAgICAqIHNjcmlwdCBkZXRlY3Rpb24gaGFzIGZpbmlzaGVkCisgICAgICovCisgICAgZHAt PmFvZGV2ID0gcHJlcGFyZV9hb2RldjsKKyAgICBhb2RldiA9ICZkcC0+dmVyc2lvbl9hb2RldjsK KyAgICBsaWJ4bF9fcHJlcGFyZV9hb19kZXZpY2UoYW8sIGFvZGV2KTsKKworICAgIEdDTkVXKGFv ZGV2LT5kZXYpOworICAgIHJjID0gbGlieGxfX2RldmljZV9mcm9tX2Rpc2soZ2MsIGRvbWlkLCBk aXNrLCBhb2Rldi0+ZGV2KTsKKyAgICBpZiAocmMgIT0gMCkgeworICAgICAgICBMT0coRVJST1Is ICJJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIHZpcnR1YWwgZGlzayBpZGVudGlmaWVyICVzIiwKKyAg ICAgICAgICAgICAgICAgICBkaXNrLT52ZGV2KTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9 CisKKyAgICBzY3JpcHRfcGF0aCA9IGxpYnhsX19hYnNfcGF0aChnYywgZGlzay0+c2NyaXB0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194ZW5fc2NyaXB0X2Rpcl9w YXRoKCkpOworCisgICAgaG90cGx1Z19wYXRoID0gbGlieGxfX2RldmljZV94c19ob3RwbHVnX3Bh dGgoZ2MsIGFvZGV2LT5kZXYpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgcmMgPSBsaWJ4bF9f eHNfdHJhbnNhY3Rpb25fc3RhcnQoZ2MsICZ0KTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIGVycm9y OworCisgICAgICAgIHJjID0gbGlieGxfX3hzX3dyaXRlX2NoZWNrZWQoZ2MsIHQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL3BhcmFtcyIsIGhvdHBsdWdf cGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNrLT5wZGV2X3BhdGgp OworICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIHJj ID0gbGlieGxfX3hzX3dyaXRlX2NoZWNrZWQoZ2MsIHQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHQ1NQUklOVEYoIiVzL3NjcmlwdCIsIGhvdHBsdWdfcGF0aCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfcGF0aCk7CisgICAgICAgIGlmIChyYykK KyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgcmMgPSBsaWJ4bF9feHNfdHJhbnNh Y3Rpb25fY29tbWl0KGdjLCAmdCk7CisgICAgICAgIGlmICghcmMpIGJyZWFrOworICAgICAgICBp ZiAocmMgPCAwKSBnb3RvIGVycm9yOworICAgIH0KKworICAgIGFvZGV2LT5jYWxsYmFjayA9IGRl dmljZV9kaXNrX3ByZXBhcmVfY2I7CisgICAgYW9kZXYtPmFjdGlvbiA9IExJQlhMX19ERVZJQ0Vf QUNUSU9OX1ZFUlNJT047CisgICAgYW9kZXYtPmRpc2sgPSBkaXNrOworICAgIGFvZGV2LT5ob3Rw bHVnLnZlcnNpb24gPSAyOworICAgIGxpYnhsX19kZXZpY2VfaG90cGx1ZyhlZ2MsIGFvZGV2KTsK KyAgICByZXR1cm47CisKK2Vycm9yOgorICAgIGFzc2VydChyYyk7CisgICAgbGlieGxfX3hzX3Ry YW5zYWN0aW9uX2Fib3J0KGdjLCAmdCk7CisgICAgYW9kZXYtPnJjID0gcmM7CisgICAgYW9kZXYt PmNhbGxiYWNrKGVnYywgYW9kZXYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgZGV2 aWNlX2Rpc2tfcHJlcGFyZV9jYihsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKnZlcnNpb25fYW9kZXYpCit7CisgICAg U1RBVEVfQU9fR0ModmVyc2lvbl9hb2Rldi0+YW8pOworICAgIGxpYnhsX19kaXNrX3ByZXBhcmUg KmRwID0gQ09OVEFJTkVSX09GKHZlcnNpb25fYW9kZXYsICpkcCwgdmVyc2lvbl9hb2Rldik7Cisg ICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYgPSBkcC0+YW9kZXY7CisKKyAgICBpZiAoZHAtPmRp c2stPmhvdHBsdWdfdmVyc2lvbiA9PSAxKSB7CisgICAgICAgIGFvZGV2LT5jYWxsYmFjayhlZ2Ms IGFvZGV2KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFvZGV2LT5hY3Rpb24gPSBM SUJYTF9fREVWSUNFX0FDVElPTl9QUkVQQVJFOworICAgIGFvZGV2LT5ob3RwbHVnLnZlcnNpb24g PSBkcC0+ZGlzay0+aG90cGx1Z192ZXJzaW9uOworICAgIGFvZGV2LT5kZXYgPSB2ZXJzaW9uX2Fv ZGV2LT5kZXY7CisgICAgbGlieGxfX2RldmljZV9ob3RwbHVnKGVnYywgYW9kZXYpOworICAgIHJl dHVybjsKK30KKwordm9pZCBsaWJ4bF9fZGV2aWNlX2Rpc2tfdW5wcmVwYXJlKGxpYnhsX19lZ2Mg KmVnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfZGV2aWNlX2Rpc2sgKmRpc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpCit7CisgICAgU1RBVEVfQU9fR0MoYW9kZXYtPmFv KTsKKyAgICBjaGFyICpob3RwbHVnX3BhdGg7CisgICAgaW50IHJjOworCisgICAgaWYgKGRpc2st PmhvdHBsdWdfdmVyc2lvbiA9PSAxKSB7CisgICAgICAgIGFvZGV2LT5jYWxsYmFjayhlZ2MsIGFv ZGV2KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdDTkVXKGFvZGV2LT5kZXYpOwor ICAgIHJjID0gbGlieGxfX2RldmljZV9mcm9tX2Rpc2soZ2MsIGRvbWlkLCBkaXNrLCBhb2Rldi0+ ZGV2KTsKKyAgICBpZiAocmMgIT0gMCkgeworICAgICAgICBMT0coRVJST1IsICJJbnZhbGlkIG9y IHVuc3VwcG9ydGVkIHZpcnR1YWwgZGlzayBpZGVudGlmaWVyICVzIiwKKyAgICAgICAgICAgICAg ICAgICBkaXNrLT52ZGV2KTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBob3Rw bHVnX3BhdGggPSBsaWJ4bF9fZGV2aWNlX3hzX2hvdHBsdWdfcGF0aChnYywgYW9kZXYtPmRldik7 CisgICAgaWYgKCFsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsIGhvdHBsdWdfcGF0aCkpIHsK KyAgICAgICAgTE9HKERFQlVHLCAidW5hYmxlIHRvIHVucHJlcGFyZSBkZXZpY2UgYmVjYXVzZSAl cyBkb2Vzbid0IGV4aXN0IiwKKyAgICAgICAgICAgICAgICAgICBob3RwbHVnX3BhdGgpOworICAg ICAgICBhb2Rldi0+Y2FsbGJhY2soZWdjLCBhb2Rldik7CisgICAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fVU5QUkVQQVJFOwor ICAgIGFvZGV2LT5ob3RwbHVnLnZlcnNpb24gPSBkaXNrLT5ob3RwbHVnX3ZlcnNpb247CisgICAg bGlieGxfX2RldmljZV9ob3RwbHVnKGVnYywgYW9kZXYpOworICAgIHJldHVybjsKKworZXJyb3I6 CisgICAgYXNzZXJ0KHJjKTsKKyAgICBhb2Rldi0+cmMgPSByYzsKKyAgICBhb2Rldi0+Y2FsbGJh Y2soZWdjLCBhb2Rldik7CisgICAgcmV0dXJuOworfQorCiAvKiBTcGVjaWZpYyBmdW5jdGlvbiBj YWxsZWQgZGlyZWN0bHkgb25seSBieSBsb2NhbCBkaXNrIGF0dGFjaCwKICAqIGFsbCBvdGhlciB1 c2VycyBzaG91bGQgaW5zdGVhZCB1c2UgdGhlIHJlZ3VsYXIKICAqIGxpYnhsX19kZXZpY2VfZGlz a19hZGQgd3JhcHBlcgpAQCAtMjA3MCw4ICsyMjEwLDE1IEBAIHN0YXRpYyB2b2lkIGRldmljZV9k aXNrX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAg IGRldiA9IGRpc2stPnBkZXZfcGF0aDsKIAogICAgICAgICBkb19iYWNrZW5kX3BoeToKLSAgICAg ICAgICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJwYXJhbXMiKTsKLSAgICAgICAgICAg ICAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIGRldik7CisgICAgICAgICAgICAgICAgaWYgKGRp c2stPmhvdHBsdWdfdmVyc2lvbiA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAg ICAgICAgICAgICAgICAgICAqIElmIHRoZSBuZXcgaG90cGx1ZyB2ZXJzaW9uIGlzIHVzZWQgcGFy YW1zIGlzCisgICAgICAgICAgICAgICAgICAgICAqIHN0b3JlZCB1bmRlciBhIHByaXZhdGUgcGF0 aCwgc2luY2UgaXQgY2FuIGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICogZGF0YSB0aGF0 IHRoZSBndWVzdCBzaG91bGQgbm90IHNlZS4KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAg ICAgICAgICAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInBhcmFtcyIpOworICAgICAg ICAgICAgICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIGRldik7CisgICAgICAgICAgICAg ICAgfQogCiAgICAgICAgICAgICAgICAgc2NyaXB0ID0gbGlieGxfX2Fic19wYXRoKGdjLCBkaXNr LT5zY3JpcHQ/OiAiYmxvY2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9feGVuX3NjcmlwdF9kaXJfcGF0aCgpKTsKQEAgLTIxNjQsNiArMjMxMSw4IEBA IHN0YXRpYyB2b2lkIGRldmljZV9kaXNrX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRv bWlkLAogCiAgICAgYW9kZXYtPmRldiA9IGRldmljZTsKICAgICBhb2Rldi0+YWN0aW9uID0gTElC WExfX0RFVklDRV9BQ1RJT05fQUREOworICAgIGFvZGV2LT5ob3RwbHVnLnZlcnNpb24gPSBkaXNr LT5ob3RwbHVnX3ZlcnNpb247CisgICAgYW9kZXYtPmRpc2sgPSBkaXNrOwogICAgIGxpYnhsX193 YWl0X2RldmljZV9jb25uZWN0aW9uKGVnYywgYW9kZXYpOwogCiAgICAgcmMgPSAwOwpAQCAtMjI1 Nyw2ICsyNDA2LDcgQEAgaW50IGxpYnhsX3ZkZXZfdG9fZGV2aWNlX2Rpc2sobGlieGxfY3R4ICpj dHgsIHVpbnQzMl90IGRvbWlkLAogICAgIEdDX0lOSVQoY3R4KTsKICAgICBjaGFyICpkb21wYXRo LCAqcGF0aDsKICAgICBpbnQgZGV2aWQgPSBsaWJ4bF9fZGV2aWNlX2Rpc2tfZGV2X251bWJlcih2 ZGV2LCBOVUxMLCBOVUxMKTsKKyAgICBsaWJ4bF9fZGV2aWNlIGRldjsKICAgICBpbnQgcmMgPSBF UlJPUl9GQUlMOwogCiAgICAgaWYgKGRldmlkIDwgMCkKQEAgLTIyNzUsNiArMjQyNSwyMyBAQCBp bnQgbGlieGxfdmRldl90b19kZXZpY2VfZGlzayhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCiAgICAgICAgIGdvdG8gb3V0OwogCiAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX2Rpc2tfZnJv bV94c19iZShnYywgcGF0aCwgZGlzayk7CisgICAgaWYgKHJjKSB7CisgICAgICAgIExPRyhFUlJP UiwgInVuYWJsZSB0byBwYXJzZSBkaXNrIGRldmljZSBmcm9tIHBhdGggJXMiLCBwYXRoKTsKKyAg ICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgLyogQ2hlY2sgaWYgdGhlIGRldmljZSBpcyB1 c2luZyB0aGUgbmV3IGhvdHBsdWcgaW50ZXJmYWNlICovCisgICAgcmMgPSBsaWJ4bF9fZGV2aWNl X2Zyb21fZGlzayhnYywgZG9taWQsIGRpc2ssICZkZXYpOworICAgIGlmIChyYykgeworICAgICAg ICBMT0coRVJST1IsICJpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIHZpcnR1YWwgZGlzayBpZGVudGlm aWVyICVzIiwKKyAgICAgICAgICAgICAgICAgICAgZGlzay0+dmRldik7CisgICAgICAgIGdvdG8g b3V0OworICAgIH0KKyAgICBkaXNrLT5ob3RwbHVnX3ZlcnNpb24gPSAxOworICAgIHBhdGggPSBs aWJ4bF9fZGV2aWNlX3hzX2hvdHBsdWdfcGF0aChnYywgJmRldik7CisgICAgaWYgKGxpYnhsX194 c19yZWFkKGdjLCBYQlRfTlVMTCwgcGF0aCkpCisgICAgICAgIGRpc2stPmhvdHBsdWdfdmVyc2lv biA9IDI7CisKIG91dDoKICAgICBHQ19GUkVFOwogICAgIHJldHVybiByYzsKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMK aW5kZXggYThkZmU2MS4uYWFkZWMwMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY3Jl YXRlLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKQEAgLTU1NCw2ICs1NTQsMTAg QEAgc3RhdGljIGludCBzdG9yZV9saWJ4bF9lbnRyeShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBk b21pZCwKICAqLwogCiAvKiBFdmVudCBjYWxsYmFja3MsIGluIHRoaXMgb3JkZXI6ICovCisKK3N0 YXRpYyB2b2lkIGRvbWNyZWF0ZV9sYXVuY2hfYm9vdGxvYWRlcihsaWJ4bF9fZWdjICplZ2MsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2ICpt dWx0aWRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0 KTsKIHN0YXRpYyB2b2lkIGRvbWNyZWF0ZV9kZXZtb2RlbF9zdGFydGVkKGxpYnhsX19lZ2MgKmVn YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kbV9zcGF3 bl9zdGF0ZSAqZG1zcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCByYyk7CkBAIC01OTAsNiArNTk0LDEyIEBAIHN0YXRpYyB2b2lkIGRvbWNyZWF0ZV9kZXN0cnVj dGlvbl9jYihsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfX2RvbWFpbl9kZXN0cm95X3N0YXRlICpkZHMsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHJjKTsKIAorLyogSWYgY3JlYXRpb24gaXMgbm90IHN1 Y2Nlc3NmdWwsIHRoaXMgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZAorICogd2hlbiBkZXZpY2Vz IGhhdmUgYmVlbiB1bnByZXBhcmVkICovCitzdGF0aWMgdm9pZCBkb21jcmVhdGVfdW5wcmVwYXJl X2NiKGxpYnhsX19lZ2MgKmVnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHJldCk7CisKIHN0YXRpYyB2b2lkIGluaXRpYXRlX2RvbWFpbl9jcmVhdGUobGli eGxfX2VnYyAqZWdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9f ZG9tYWluX2NyZWF0ZV9zdGF0ZSAqZGNzKQogewpAQCAtNjAwLDcgKzYxMCw2IEBAIHN0YXRpYyB2 b2lkIGluaXRpYXRlX2RvbWFpbl9jcmVhdGUobGlieGxfX2VnYyAqZWdjLAogCiAgICAgLyogY29u dmVuaWVuY2UgYWxpYXNlcyAqLwogICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmNvbnN0IGRfY29u ZmlnID0gZGNzLT5ndWVzdF9jb25maWc7Ci0gICAgY29uc3QgaW50IHJlc3RvcmVfZmQgPSBkY3Mt PnJlc3RvcmVfZmQ7CiAgICAgbWVtc2V0KCZkY3MtPmJ1aWxkX3N0YXRlLCAwLCBzaXplb2YoZGNz LT5idWlsZF9zdGF0ZSkpOwogCiAgICAgZG9taWQgPSAwOwpAQCAtNjMzLDYgKzY0MiwzMyBAQCBz dGF0aWMgdm9pZCBpbml0aWF0ZV9kb21haW5fY3JlYXRlKGxpYnhsX19lZ2MgKmVnYywKICAgICAg ICAgaWYgKHJldCkgZ290byBlcnJvcl9vdXQ7CiAgICAgfQogCisgICAgbGlieGxfX211bHRpZGV2 X2JlZ2luKGFvLCAmZGNzLT5tdWx0aWRldik7CisgICAgZGNzLT5tdWx0aWRldi5jYWxsYmFjayA9 IGRvbWNyZWF0ZV9sYXVuY2hfYm9vdGxvYWRlcjsKKyAgICBsaWJ4bF9fcHJlcGFyZV9kaXNrcyhl Z2MsIGFvLCBkb21pZCwgZF9jb25maWcsICZkY3MtPm11bHRpZGV2KTsKKyAgICBsaWJ4bF9fbXVs dGlkZXZfcHJlcGFyZWQoZWdjLCAmZGNzLT5tdWx0aWRldiwgMCk7CisgICAgcmV0dXJuOworCitl cnJvcl9vdXQ6CisgICAgYXNzZXJ0KHJldCk7CisgICAgZG9tY3JlYXRlX2NvbXBsZXRlKGVnYywg ZGNzLCByZXQpOworfQorCitzdGF0aWMgdm9pZCBkb21jcmVhdGVfbGF1bmNoX2Jvb3Rsb2FkZXIo bGlieGxfX2VnYyAqZWdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnhsX19tdWx0aWRldiAqbXVsdGlkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHJldCkKK3sKKyAgICBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSAq ZGNzID0gQ09OVEFJTkVSX09GKG11bHRpZGV2LCAqZGNzLCBtdWx0aWRldik7CisgICAgU1RBVEVf QU9fR0MoZGNzLT5hbyk7CisKKyAgICAvKiBjb252ZW5pZW5jZSBhbGlhc2VzICovCisgICAgY29u c3QgaW50IHJlc3RvcmVfZmQgPSBkY3MtPnJlc3RvcmVfZmQ7CisgICAgbGlieGxfZG9tYWluX2Nv bmZpZyAqY29uc3QgZF9jb25maWcgPSBkY3MtPmd1ZXN0X2NvbmZpZzsKKworICAgIGlmIChyZXQp IHsKKyAgICAgICAgTE9HKEVSUk9SLCAidW5hYmxlIHRvIHByZXBhcmUgZGV2aWNlcyIpOworICAg ICAgICBnb3RvIGVycm9yX291dDsKKyAgICB9CisKICAgICBkY3MtPmJsLmFvID0gYW87CiAgICAg bGlieGxfZGV2aWNlX2Rpc2sgKmJvb3RkaXNrID0KICAgICAgICAgZF9jb25maWctPm51bV9kaXNr cyA+IDAgPyAmZF9jb25maWctPmRpc2tzWzBdIDogTlVMTDsKQEAgLTExNzEsMTEgKzEyMDcsMzUg QEAgc3RhdGljIHZvaWQgZG9tY3JlYXRlX2Rlc3RydWN0aW9uX2NiKGxpYnhsX19lZ2MgKmVnYywK IHsKICAgICBTVEFURV9BT19HQyhkZHMtPmFvKTsKICAgICBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9z dGF0ZSAqZGNzID0gQ09OVEFJTkVSX09GKGRkcywgKmRjcywgZGRzKTsKKyAgICB1aW50MzJfdCBk b21pZCA9IGRjcy0+Z3Vlc3RfZG9taWQ7CisgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqY29uc3Qg ZF9jb25maWcgPSBkY3MtPmd1ZXN0X2NvbmZpZzsKIAogICAgIGlmIChyYykKICAgICAgICAgTE9H KEVSUk9SLCAidW5hYmxlIHRvIGRlc3Ryb3kgZG9tYWluICV1IGZvbGxvd2luZyBmYWlsZWQgY3Jl YXRpb24iLAogICAgICAgICAgICAgICAgICAgIGRkcy0+ZG9taWQpOwogCisgICAgLyoKKyAgICAg KiBXZSBtaWdodCBoYXZlIGRldmljZXMgdGhhdCBoYXZlIGJlZW4gcHJlcGFyZWQsIGJ1dCB3aXRo IG5vCisgICAgICogZnJvbnRlbmQgeGVuc3RvcmUgZW50cmllcywgc28gZG9tYWluIGRlc3RydWN0 aW9uIGZhaWxzIHRvCisgICAgICogZmluZCB0aGVtLCB0aGF0IGlzIHdoeSB3ZSBoYXZlIHRvIHVu cHJlcGFyZSB0aGVtIG1hbnVhbGx5LgorICAgICAqLworICAgIGxpYnhsX19tdWx0aWRldl9iZWdp bihhbywgJmRjcy0+bXVsdGlkZXYpOworICAgIGRjcy0+bXVsdGlkZXYuY2FsbGJhY2sgPSBkb21j cmVhdGVfdW5wcmVwYXJlX2NiOworICAgIGxpYnhsX191bnByZXBhcmVfZGlza3MoZWdjLCBhbywg ZG9taWQsIGRfY29uZmlnLCAmZGNzLT5tdWx0aWRldik7CisgICAgbGlieGxfX211bHRpZGV2X3By ZXBhcmVkKGVnYywgJmRjcy0+bXVsdGlkZXYsIDApOworICAgIHJldHVybjsKK30KKworc3RhdGlj IHZvaWQgZG9tY3JlYXRlX3VucHJlcGFyZV9jYihsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAqbXVsdGlkZXYsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXQpCit7CisgICAgbGlieGxfX2Rv bWFpbl9jcmVhdGVfc3RhdGUgKmRjcyA9IENPTlRBSU5FUl9PRihtdWx0aWRldiwgKmRjcywgbXVs dGlkZXYpOworICAgIFNUQVRFX0FPX0dDKGRjcy0+YW8pOworCisgICAgaWYgKHJldCkKKyAgICAg ICAgTE9HKEVSUk9SLCAidW5hYmxlIHRvIHVucHJlcGFyZSBkZXZpY2VzIik7CisKICAgICBkY3Mt PmNhbGxiYWNrKGVnYywgZGNzLCBFUlJPUl9GQUlMLCBkY3MtPmd1ZXN0X2RvbWlkKTsKIH0KIApk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZGV2aWNlLmMgYi90b29scy9saWJ4bC9saWJ4 bF9kZXZpY2UuYwppbmRleCA5MDQ4NTNhLi5kZjRlYTExIDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bF9kZXZpY2UuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwpAQCAtNDk4 LDE4ICs0OTgsMjEgQEAgdm9pZCBsaWJ4bF9fbXVsdGlkZXZfcHJlcGFyZWQobGlieGxfX2VnYyAq ZWdjLAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiBNYWNybyBmb3IgZGVmaW5pbmcg dGhlIGZ1bmN0aW9ucyB0aGF0IHdpbGwgYWRkIGEgYnVuY2ggb2YgZGlza3Mgd2hlbgorLyogTWFj cm8gZm9yIGRlZmluaW5nIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIG9wZXJhdGUgYSBidW5jaCBv ZiBkZXZpY2VzIHdoZW4KICAqIGluc2lkZSBhbiBhc3luYyBvcCB3aXRoIG11bHRpZGV2LgogICog VGhpcyBtYWNybyBpcyBhZGRlZCB0byBwcmV2ZW50IHJlcGV0aXRpb24gb2YgY29kZS4KICAqCiAg KiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZDoKKyAqIGxpYnhsX19wcmVwYXJl X2Rpc2tzCisgKiBsaWJ4bF9fdW5wcmVwYXJlX2Rpc2tzCiAgKiBsaWJ4bF9fYWRkX2Rpc2tzCiAg KiBsaWJ4bF9fYWRkX25pY3MKICAqIGxpYnhsX19hZGRfdnRwbXMKICAqLwogCi0jZGVmaW5lIERF RklORV9ERVZJQ0VTX0FERCh0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgdm9pZCBsaWJ4bF9fYWRkXyMjdHlwZSMjcyhsaWJ4bF9fZWdjICplZ2MsIGxp YnhsX19hbyAqYW8sIHVpbnQzMl90IGRvbWlkLCBcCisjZGVmaW5lIERFRklORV9ERVZJQ0VTX0ZV TkModHlwZSwgb3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9p ZCBsaWJ4bF9fIyNvcCMjXyMjdHlwZSMjcyhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19hbyAqYW8s ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCwg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywgICAgICAgICAgICBcCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fbXVsdGlkZXYgKm11bHRpZGV2KSAgICAgICAgICAg ICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC01MTcsMTYgKzUyMCwxOSBAQCB2b2lkIGxpYnhs X19tdWx0aWRldl9wcmVwYXJlZChsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgIGludCBpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBkX2NvbmZpZy0+bnVtXyMjdHlwZSMjczsgaSsrKSB7ICAg ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2aWNlICphb2RldiA9IGxp YnhsX19tdWx0aWRldl9wcmVwYXJlKG11bHRpZGV2KTsgIFwKLSAgICAgICAgICAgIGxpYnhsX19k ZXZpY2VfIyN0eXBlIyNfYWRkKGVnYywgZG9taWQsICZkX2NvbmZpZy0+dHlwZSMjc1tpXSwgXAor ICAgICAgICAgICAgbGlieGxfX2RldmljZV8jI3R5cGUjI18jI29wKGVnYywgZG9taWQsICZkX2Nv bmZpZy0+dHlwZSMjc1tpXSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYW9kZXYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgIH0KIAotREVGSU5FX0RFVklDRVNfQUREKGRpc2spCi1ERUZJTkVfREVWSUNFU19BREQobmlj KQotREVGSU5FX0RFVklDRVNfQUREKHZ0cG0pCitERUZJTkVfREVWSUNFU19GVU5DKGRpc2ssIGFk ZCkKK0RFRklORV9ERVZJQ0VTX0ZVTkMobmljLCBhZGQpCitERUZJTkVfREVWSUNFU19GVU5DKHZ0 cG0sIGFkZCkKIAotI3VuZGVmIERFRklORV9ERVZJQ0VTX0FERAorREVGSU5FX0RFVklDRVNfRlVO QyhkaXNrLCBwcmVwYXJlKQorREVGSU5FX0RFVklDRVNfRlVOQyhkaXNrLCB1bnByZXBhcmUpCisK KyN1bmRlZiBERUZJTkVfREVWSUNFU19GVU5DCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAK QEAgLTUzNCw2ICs1NDAsNyBAQCBpbnQgbGlieGxfX2RldmljZV9kZXN0cm95KGxpYnhsX19nYyAq Z2MsIGxpYnhsX19kZXZpY2UgKmRldikKIHsKICAgICBjb25zdCBjaGFyICpiZV9wYXRoID0gbGli eGxfX2RldmljZV9iYWNrZW5kX3BhdGgoZ2MsIGRldik7CiAgICAgY29uc3QgY2hhciAqZmVfcGF0 aCA9IGxpYnhsX19kZXZpY2VfZnJvbnRlbmRfcGF0aChnYywgZGV2KTsKKyAgICBjb25zdCBjaGFy ICpob3RwbHVnX3BhdGggPSBsaWJ4bF9fZGV2aWNlX3hzX2hvdHBsdWdfcGF0aChnYywgZGV2KTsK ICAgICBjb25zdCBjaGFyICp0YXBkaXNrX3BhdGggPSBHQ1NQUklOVEYoIiVzLyVzIiwgYmVfcGF0 aCwgInRhcGRpc2stcGFyYW1zIik7CiAgICAgY29uc3QgY2hhciAqdGFwZGlza19wYXJhbXM7CiAg ICAgeHNfdHJhbnNhY3Rpb25fdCB0ID0gMDsKQEAgLTU0OSw2ICs1NTYsNyBAQCBpbnQgbGlieGxf X2RldmljZV9kZXN0cm95KGxpYnhsX19nYyAqZ2MsIGxpYnhsX19kZXZpY2UgKmRldikKIAogICAg ICAgICBsaWJ4bF9feHNfcGF0aF9jbGVhbnVwKGdjLCB0LCBmZV9wYXRoKTsKICAgICAgICAgbGli eGxfX3hzX3BhdGhfY2xlYW51cChnYywgdCwgYmVfcGF0aCk7CisgICAgICAgIGxpYnhsX194c19w YXRoX2NsZWFudXAoZ2MsIHQsIGhvdHBsdWdfcGF0aCk7CiAKICAgICAgICAgcmMgPSBsaWJ4bF9f eHNfdHJhbnNhY3Rpb25fY29tbWl0KGdjLCAmdCk7CiAgICAgICAgIGlmICghcmMpIGJyZWFrOwpA QCAtNjIxLDYgKzYyOSwxNCBAQCB2b2lkIGxpYnhsX19kZXZpY2VzX2Rlc3Ryb3kobGlieGxfX2Vn YyAqZWdjLCBsaWJ4bF9fZGV2aWNlc19yZW1vdmVfc3RhdGUgKmRycykKICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFvZGV2 ID0gbGlieGxfX211bHRpZGV2X3ByZXBhcmUobXVsdGlkZXYpOworICAgICAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgICAgICogQ2hlY2sgaWYgdGhlIGRldmljZSBoYXMgaG90cGx1ZyBlbnRy aWVzIGluIHhlbnN0b3JlLAorICAgICAgICAgICAgICAgICAqIHdoaWNoIHdvdWxkIG1lYW4gaXQn cyB1c2luZyB0aGUgbmV3IGhvdHBsdWcgY2FsbGluZworICAgICAgICAgICAgICAgICAqIGNvbnZl bnRpb24uCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcGF0aCA9IGxpYnhs X19kZXZpY2VfeHNfaG90cGx1Z19wYXRoKGdjLCBkZXYpOworICAgICAgICAgICAgICAgIGlmIChs aWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsIHBhdGgpKQorICAgICAgICAgICAgICAgICAgICBh b2Rldi0+aG90cGx1Zy52ZXJzaW9uID0gMjsKICAgICAgICAgICAgICAgICBhb2Rldi0+YWN0aW9u ID0gTElCWExfX0RFVklDRV9BQ1RJT05fUkVNT1ZFOwogICAgICAgICAgICAgICAgIGFvZGV2LT5k ZXYgPSBkZXY7CiAgICAgICAgICAgICAgICAgYW9kZXYtPmZvcmNlID0gZHJzLT5mb3JjZTsKQEAg LTY3Myw4ICs2ODksNiBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfYmFja2VuZF9jYWxsYmFjayhsaWJ4 bF9fZWdjICplZ2MsIGxpYnhsX19ldl9kZXZzdGF0ZSAqZHMsCiBzdGF0aWMgdm9pZCBkZXZpY2Vf YmFja2VuZF9jbGVhbnVwKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsKIAotc3RhdGljIHZvaWQgZGV2aWNl X2hvdHBsdWcobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fYW9fZGV2aWNlICphb2Rldik7Ci0KIHN0 YXRpYyB2b2lkIGRldmljZV9ob3RwbHVnX3RpbWVvdXRfY2IobGlieGxfX2VnYyAqZWdjLCBsaWJ4 bF9fZXZfdGltZSAqZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB0aW1ldmFsICpyZXF1ZXN0ZWRfYWJzKTsKIApAQCAtNzA5LDcgKzcyMyw3IEBA IHZvaWQgbGlieGxfX3dhaXRfZGV2aWNlX2Nvbm5lY3Rpb24obGlieGxfX2VnYyAqZWdjLCBsaWJ4 bF9fYW9fZGV2aWNlICphb2RldikKICAgICAgICAgICogSWYgUWVtdSBpcyBydW5uaW5nLCBpdCB3 aWxsIHNldCB0aGUgc3RhdGUgb2YgdGhlIGRldmljZSB0bwogICAgICAgICAgKiA0IGRpcmVjdGx5 LCB3aXRob3V0IHdhaXRpbmcgaW4gc3RhdGUgMiBmb3IgYW55IGhvdHBsdWcgZXhlY3V0aW9uLgog ICAgICAgICAgKi8KLSAgICAgICAgZGV2aWNlX2hvdHBsdWcoZWdjLCBhb2Rldik7CisgICAgICAg IGxpYnhsX19kZXZpY2VfaG90cGx1ZyhlZ2MsIGFvZGV2KTsKICAgICAgICAgcmV0dXJuOwogICAg IH0KIApAQCAtODQxLDcgKzg1NSw3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9xZW11X3RpbWVvdXQo bGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfdGltZSAqZXYsCiAgICAgcmMgPSBsaWJ4bF9feHNf d3JpdGVfY2hlY2tlZChnYywgWEJUX05VTEwsIHN0YXRlX3BhdGgsICI2Iik7CiAgICAgaWYgKHJj KSBnb3RvIG91dDsKIAotICAgIGRldmljZV9ob3RwbHVnKGVnYywgYW9kZXYpOworICAgIGxpYnhs X19kZXZpY2VfaG90cGx1ZyhlZ2MsIGFvZGV2KTsKICAgICByZXR1cm47CiAKIG91dDoKQEAgLTg3 MSw3ICs4ODUsNyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfYmFja2VuZF9jYWxsYmFjayhsaWJ4bF9f ZWdjICplZ2MsIGxpYnhsX19ldl9kZXZzdGF0ZSAqZHMsCiAgICAgICAgIGdvdG8gb3V0OwogICAg IH0KIAotICAgIGRldmljZV9ob3RwbHVnKGVnYywgYW9kZXYpOworICAgIGxpYnhsX19kZXZpY2Vf aG90cGx1ZyhlZ2MsIGFvZGV2KTsKICAgICByZXR1cm47CiAKIG91dDoKQEAgLTg4Niw3ICs5MDAs NyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfYmFja2VuZF9jbGVhbnVwKGxpYnhsX19nYyAqZ2MsIGxp YnhsX19hb19kZXZpY2UgKmFvZGV2KQogICAgIGxpYnhsX19ldl9kZXZzdGF0ZV9jYW5jZWwoZ2Ms ICZhb2Rldi0+YmFja2VuZF9kcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGRldmljZV9ob3RwbHVnKGxp YnhsX19lZ2MgKmVnYywgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpCit2b2lkIGxpYnhsX19kZXZp Y2VfaG90cGx1ZyhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KQogewog ICAgIFNUQVRFX0FPX0dDKGFvZGV2LT5hbyk7CiAgICAgY2hhciAqYmVfcGF0aCA9IGxpYnhsX19k ZXZpY2VfYmFja2VuZF9wYXRoKGdjLCBhb2Rldi0+ZGV2KTsKQEAgLTk5NCwxMCArMTAwOCwxMyBA QCBzdGF0aWMgdm9pZCBkZXZpY2VfaG90cGx1Z19jaGlsZF9kZWF0aF9jYihsaWJ4bF9fZWdjICpl Z2MsCiAgICAgICAgIGlmIChob3RwbHVnX2Vycm9yKQogICAgICAgICAgICAgTE9HKEVSUk9SLCAi c2NyaXB0OiAlcyIsIGhvdHBsdWdfZXJyb3IpOwogICAgICAgICBhb2Rldi0+cmMgPSBFUlJPUl9G QUlMOwotICAgICAgICBpZiAoYW9kZXYtPmFjdGlvbiA9PSBMSUJYTF9fREVWSUNFX0FDVElPTl9B REQpCisgICAgICAgIGlmIChhb2Rldi0+YWN0aW9uID09IExJQlhMX19ERVZJQ0VfQUNUSU9OX0FE RCB8fAorICAgICAgICAgICAgYW9kZXYtPmFjdGlvbiA9PSBMSUJYTF9fREVWSUNFX0FDVElPTl9Q UkVQQVJFIHx8CisgICAgICAgICAgICBhb2Rldi0+YWN0aW9uID09IExJQlhMX19ERVZJQ0VfQUNU SU9OX0xPQ0FMQVRUQUNIKQogICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIE9ubHkgZmFp bCBvbiBkZXZpY2UgY29ubmVjdGlvbiwgb24gZGlzY29ubmVjdGlvbgotICAgICAgICAgICAgICog aWdub3JlIGVycm9yLCBhbmQgY29udGludWUgd2l0aCB0aGUgcmVtb3ZlIHByb2Nlc3MKKyAgICAg ICAgICAgICAqIE9ubHkgZmFpbCBvbiBkZXZpY2UgY29ubmVjdGlvbiwgcHJlcGFyZSBvciBsb2Nh bGF0dGFjaCwKKyAgICAgICAgICAgICAqIG9uIG90aGVyIGNhc2VzIGlnbm9yZSBlcnJvciwgYW5k IGNvbnRpbnVlIHdpdGggdGhlIHJlbW92ZQorICAgICAgICAgICAgICogcHJvY2Vzcy4KICAgICAg ICAgICAgICAqLwogICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTAwNyw3ICsx MDI0LDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2hvdHBsdWdfY2hpbGRfZGVhdGhfY2IobGlieGxf X2VnYyAqZWdjLAogICAgICAqIGRldmljZV9ob3RwbHVnX2RvbmUgYnJlYWtpbmcgdGhlIGxvb3Au CiAgICAgICovCiAgICAgYW9kZXYtPmhvdHBsdWcubnVtX2V4ZWMrKzsKLSAgICBkZXZpY2VfaG90 cGx1ZyhlZ2MsIGFvZGV2KTsKKyAgICBsaWJ4bF9fZGV2aWNlX2hvdHBsdWcoZWdjLCBhb2Rldik7 CiAKICAgICByZXR1cm47CiAKQEAgLTEwMTksMTcgKzEwMzYsODcgQEAgZXJyb3I6CiBzdGF0aWMg dm9pZCBkZXZpY2VfaG90cGx1Z19kb25lKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2FvX2Rldmlj ZSAqYW9kZXYpCiB7CiAgICAgU1RBVEVfQU9fR0MoYW9kZXYtPmFvKTsKKyAgICBjaGFyICpob3Rw bHVnX3BhdGg7CisgICAgY29uc3QgY2hhciAqcGRldiwgKmhvdHBsdWdfdmVyc2lvbjsKICAgICBp bnQgcmM7CiAKICAgICBkZXZpY2VfaG90cGx1Z19jbGVhbihnYywgYW9kZXYpOwogCi0gICAgLyog Q2xlYW4geGVuc3RvcmUgaWYgaXQncyBhIGRpc2Nvbm5lY3Rpb24gKi8KLSAgICBpZiAoYW9kZXYt PmFjdGlvbiA9PSBMSUJYTF9fREVWSUNFX0FDVElPTl9SRU1PVkUpIHsKKyAgICBzd2l0Y2ggKGFv ZGV2LT5hY3Rpb24pIHsKKyAgICBjYXNlIExJQlhMX19ERVZJQ0VfQUNUSU9OX1JFTU9WRToKKyAg ICAgICAgc3dpdGNoIChhb2Rldi0+aG90cGx1Zy52ZXJzaW9uKSB7CisgICAgICAgIGNhc2UgMToK KyAgICAgICAgICAgIC8qIENsZWFuIHhlbnN0b3JlIGlmIGl0J3MgYSBkaXNjb25uZWN0aW9uICov CisgICAgICAgICAgICByYyA9IGxpYnhsX19kZXZpY2VfZGVzdHJveShnYywgYW9kZXYtPmRldik7 CisgICAgICAgICAgICBpZiAoIWFvZGV2LT5yYykKKyAgICAgICAgICAgICAgICBhb2Rldi0+cmMg PSByYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAv KgorICAgICAgICAgICAgICogQ2hhaW4gdW5wcmVwYXJlIGhvdHBsdWcgZXhlY3V0aW9uCisgICAg ICAgICAgICAgKiBhZnRlciBkaXNjb25uZWN0aW9uIG9mIGRldmljZS4KKyAgICAgICAgICAgICAq LworICAgICAgICAgICAgYW9kZXYtPmhvdHBsdWcubnVtX2V4ZWMgPSAwOworICAgICAgICAgICAg YW9kZXYtPmFjdGlvbiA9IExJQlhMX19ERVZJQ0VfQUNUSU9OX1VOUFJFUEFSRTsKKyAgICAgICAg ICAgIGxpYnhsX19kZXZpY2VfaG90cGx1ZyhlZ2MsIGFvZGV2KTsKKyAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhFUlJPUiwgInVua25vd24gaG90 cGx1ZyBzY3JpcHQgdmVyc2lvbiAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgYW9kZXYt PmhvdHBsdWcudmVyc2lvbik7CisgICAgICAgICAgICBpZiAoIWFvZGV2LT5yYykKKyAgICAgICAg ICAgICAgICBhb2Rldi0+cmMgPSBFUlJPUl9GQUlMOworICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJYTF9fREVWSUNFX0FDVElPTl9VTlBS RVBBUkU6CisgICAgICAgIC8qIENsZWFuIGhvdHBsdWcgeGVuc3RvcmUgcGF0aCAqLwogICAgICAg ICByYyA9IGxpYnhsX19kZXZpY2VfZGVzdHJveShnYywgYW9kZXYtPmRldik7CiAgICAgICAgIGlm ICghYW9kZXYtPnJjKQogICAgICAgICAgICAgYW9kZXYtPnJjID0gcmM7CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgTElCWExfX0RFVklDRV9BQ1RJT05fQUREOgorICAgICAgICBpZiAoYW9kZXYt PmhvdHBsdWcudmVyc2lvbiA9PSAxKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIC8q CisgICAgICAgICAqIFVwZGF0ZSBwZGV2X3BhdGggaW4gbGlieGxfZGV2aWNlX2Rpc2sgdG8gcG9p bnQgdG8gdGhlIGJsb2NrCisgICAgICAgICAqIGRldmljZQorICAgICAgICAgKi8KKyAgICAgICAg aG90cGx1Z19wYXRoID0gbGlieGxfX2RldmljZV94c19ob3RwbHVnX3BhdGgoZ2MsIGFvZGV2LT5k ZXYpOworICAgICAgICByYyA9IGxpYnhsX194c19yZWFkX2NoZWNrZWQoZ2MsIFhCVF9OVUxMLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy9wZGV2Iiwg aG90cGx1Z19wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZGV2 KTsKKyAgICAgICAgaWYgKHJjIHx8ICFwZGV2KSB7CisgICAgICAgICAgICBMT0coRVJST1IsICJ1 bmFibGUgdG8gZ2V0IHBoeXNpY2FsIGRpc2sgZnJvbSAlcyIsCisgICAgICAgICAgICAgICAgICAg ICAgIEdDU1BSSU5URigiJXMvcGRldiIsIGhvdHBsdWdfcGF0aCkpOworICAgICAgICAgICAgYW9k ZXYtPnJjID0gcmMgPyByYyA6IEVSUk9SX0ZBSUw7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAg ICAgICAgfQorCisgICAgICAgIGZyZWUoYW9kZXYtPmRpc2stPnBkZXZfcGF0aCk7CisgICAgICAg IGFvZGV2LT5kaXNrLT5wZGV2X3BhdGggPSBsaWJ4bF9fc3RyZHVwKE5PR0MsIHBkZXYpOworICAg ICAgICBicmVhazsKKyAgICBjYXNlIExJQlhMX19ERVZJQ0VfQUNUSU9OX1ZFUlNJT046CisgICAg ICAgIC8qIEZldGNoIGhvdHBsdWcgdmVyc2lvbiBvdXRwdXQgKi8KKyAgICAgICAgaG90cGx1Z19w YXRoID0gbGlieGxfX2RldmljZV94c19ob3RwbHVnX3BhdGgoZ2MsIGFvZGV2LT5kZXYpOworICAg ICAgICByYyA9IGxpYnhsX194c19yZWFkX2NoZWNrZWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy92ZXJzaW9uIiwgaG90cGx1 Z19wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3RwbHVnX3Zl cnNpb24pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIExPRyhFUlJPUiwgInVuYWJs ZSB0byBnZXQgaG90cGx1Z192ZXJzaW9uIGZyb20gJXMiLAorICAgICAgICAgICAgICAgICAgICAg ICBHQ1NQUklOVEYoIiVzL3ZlcnNpb24iLCBob3RwbHVnX3BhdGgpKTsKKyAgICAgICAgICAgIGFv ZGV2LT5yYyA9IHJjOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAg aWYgKCFob3RwbHVnX3ZlcnNpb24pCisgICAgICAgICAgICBhb2Rldi0+ZGlzay0+aG90cGx1Z192 ZXJzaW9uID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYW9kZXYtPmRpc2stPmhvdHBs dWdfdmVyc2lvbiA9IGF0b2koaG90cGx1Z192ZXJzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAg ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCitvdXQ6CiAgICAgYW9kZXYtPmNhbGxi YWNrKGVnYywgYW9kZXYpOwogICAgIHJldHVybjsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L2xpYnhsX2ludGVybmFsLmggYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCmluZGV4IGU4 MTliYmQuLjY3ZmI5NWUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgK KysrIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaApAQCAtMjAxMiw2ICsyMDEyLDEyIEBA IHN0cnVjdCBsaWJ4bF9fbXVsdGlkZXYgewogX2hpZGRlbiB2b2lkIGxpYnhsX19kZXZpY2VfZGlz a19hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV9kaXNrICpkaXNrLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpOworX2hpZGRl biB2b2lkIGxpYnhsX19kZXZpY2VfZGlza19wcmVwYXJlKGxpYnhsX19lZ2MgKmVnYywgdWludDMy X3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf ZGV2aWNlX2Rpc2sgKmRpc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpOworX2hpZGRlbiB2b2lkIGxpYnhsX19kZXZpY2Vf ZGlza191bnByZXBhcmUobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV9kaXNrICpkaXNr LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2Rl dmljZSAqYW9kZXYpOwogCiAvKiBBTyBvcGVyYXRpb24gdG8gY29ubmVjdCBhIG5pYyBkZXZpY2Ug Ki8KIF9oaWRkZW4gdm9pZCBsaWJ4bF9fZGV2aWNlX25pY19hZGQobGlieGxfX2VnYyAqZWdjLCB1 aW50MzJfdCBkb21pZCwKQEAgLTIwODgsNiArMjA5NCwyOCBAQCBfaGlkZGVuIGludCBsaWJ4bF9f Z2V0X2hvdHBsdWdfc2NyaXB0X2luZm8obGlieGxfX2djICpnYywgbGlieGxfX2RldmljZSAqZGV2 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kZXZp Y2VfYWN0aW9uIGFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9faG90cGx1ZyAqaG90cGx1Zyk7CiAKKy8qCisgKiBsaWJ4bF9fZGV2aWNlX2hv dHBsdWcgcnVucyB0aGUgaG90cGx1ZyBzY3JpcHQgYXNzb2NpYXRlZAorICogd2l0aCB0aGUgZGV2 aWNlIHBhc3NlZCBpbiBhb2Rldi0+ZGV2LgorICoKKyAqIFRoZSBsaWJ4bF9fYW9fZGV2aWNlIHBh c3NlZCB0byB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZQorICogcHJlcGFyZWQgdXNpbmcgbGlieGxf X3ByZXBhcmVfYW9fZGV2aWNlIHByaW9yIHRvIGNhbGxpbmcKKyAqIHRoaXMgZnVuY3Rpb24uCisg KgorICogT25jZSBmaW5pc2hlZCwgYW9kZXYtPmNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQuCisg Ki8KK19oaWRkZW4gdm9pZCBsaWJ4bF9fZGV2aWNlX2hvdHBsdWcobGlieGxfX2VnYyAqZWdjLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2aWNlICphb2Rl dik7CisKKy8qIEludGVybmFsIHN0cnVjdHVyZSB0byBob2xkIGRldmljZV9kaXNrX3ByZXBhcmUg c3BlY2lmaWMgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IGxpYnhsX19kaXNrX3ByZXBh cmUgbGlieGxfX2Rpc2tfcHJlcGFyZTsKK3N0cnVjdCBsaWJ4bF9fZGlza19wcmVwYXJlIHsKKyAg ICBsaWJ4bF9fYW9fZGV2aWNlIHZlcnNpb25fYW9kZXY7CisgICAgbGlieGxfX2FvX2RldmljZSAq YW9kZXY7CisgICAgbGlieGxfZGV2aWNlX2Rpc2sgKmRpc2s7CisgICAgbGlieGxfX2RldmljZV9j YWxsYmFjayAqY2FsbGJhY2s7Cit9OworCiAvKi0tLS0tIGxvY2FsIGRpc2sgYXR0YWNoOiBhdHRh Y2ggYSBkaXNrIGxvY2FsbHkgdG8gcnVuIHRoZSBib290bG9hZGVyIC0tLS0tKi8KIAogdHlwZWRl ZiBzdHJ1Y3QgbGlieGxfX2Rpc2tfbG9jYWxfc3RhdGUgbGlieGxfX2Rpc2tfbG9jYWxfc3RhdGU7 CkBAIC0yNDYxLDYgKzI0ODksMjEgQEAgX2hpZGRlbiB2b2lkIGxpYnhsX19hZGRfZGlza3MobGli eGxfX2VnYyAqZWdjLCBsaWJ4bF9fYW8gKmFvLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0aWRldik7CiAKK19o aWRkZW4gdm9pZCBsaWJ4bF9fcHJlcGFyZV9kaXNrcyhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19h byAqYW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAq ZF9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRp ZGV2ICptdWx0aWRldik7CisKK19oaWRkZW4gdm9pZCBsaWJ4bF9fcHJlcGFyZV91bmRpc2tzKGxp YnhsX19lZ2MgKmVnYywgbGlieGxfX2FvICphbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9fbXVsdGlkZXYgKm11bHRpZGV2KTsKKworX2hpZGRlbiB2 b2lkIGxpYnhsX191bnByZXBhcmVfZGlza3MobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fYW8gKmFv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpk X2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0 aWRldiAqbXVsdGlkZXYpOworCiBfaGlkZGVuIHZvaWQgbGlieGxfX2FkZF9uaWNzKGxpYnhsX19l Z2MgKmVnYywgbGlieGxfX2FvICphbywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9fbXVsdGlkZXYgKm11bHRpZGV2KTsKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlk bAppbmRleCBhY2M0YmM5Li44ZDhjZDZhIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90 eXBlcy5pZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC0zNjcsNiArMzY3 LDcgQEAgbGlieGxfZGV2aWNlX2Rpc2sgPSBTdHJ1Y3QoImRldmljZV9kaXNrIiwgWwogICAgICgi cmVtb3ZhYmxlIiwgaW50ZWdlciksCiAgICAgKCJyZWFkd3JpdGUiLCBpbnRlZ2VyKSwKICAgICAo ImlzX2Nkcm9tIiwgaW50ZWdlciksCisgICAgKCJob3RwbHVnX3ZlcnNpb24iLCBpbnRlZ2VyKSwK ICAgICBdKQogCiBsaWJ4bF9kZXZpY2VfbmljID0gU3RydWN0KCJkZXZpY2VfbmljIiwgWwotLSAK MS43LjcuNSAoQXBwbGUgR2l0LTI2KQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==