From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Subject: [PATCH] drm/connector: Allow max possible encoders to attach to a connector Date: Fri, 16 Aug 2019 12:54:24 -0700 Message-ID: <20190816195424.7185-1-jose.souza@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org, =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= , amd-gfx@lists.freedesktop.org, Alex Deucher , Dhinakaran Pandiyan List-Id: nouveau.vger.kernel.org RnJvbTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ CgpDdXJyZW50bHkgd2UgcmVzdHJpY3QgdGhlIG51bWJlciBvZiBlbmNvZGVycyB0aGF0IGNhbiBi ZSBsaW5rZWQgdG8KYSBjb25uZWN0b3IgdG8gMywgaW5jcmVhc2UgaXQgdG8gbWF0Y2ggdGhlIG1h eGltdW0gbnVtYmVyIG9mIGVuY29kZXJzCnRoYXQgY2FuIGJlIGluaXRpYWxpemVkKDMyKS4KClRv IG1vcmUgZWZmaWVudGx5IGRvIHRoYXQgbGV0cyBzd2l0Y2ggZnJvbSBhbiBhcnJheSBvZiBlbmNv ZGVyIGlkcyB0bwpiaXRtYXNrLgoKQWxzbyByZW1vdmluZyB0aGUgYmVzdF9lbmNvZGVyIGhvb2sg ZnJvbSB0aGUgZHJpdmVycyB0aGF0IG9ubHkgaGF2ZQpvbmUgZW5jb2RlciBwZXIgY29ubmVjdG9y KHRoaXMgb25lcyBoYXZlIG9uZSBlbmNvZGVyIGluIHRoZSB3aG9sZQpkcml2ZXIpLCBwaWNrX3Np bmdsZV9lbmNvZGVyX2Zvcl9jb25uZWN0b3IoKSB3aWxsIGRvIHRoZSBzYW1lIGpvYgp3aXRoIG5v IGZ1bmN0aW9uYWwgY2hhbmdlLgoKU3VnZ2VzdGVkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJA YW1kLmNvbT4KQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IGludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IG5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn CkNjOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpTaWduZWQtb2ZmLWJ5OiBEaGluYWth cmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+Ci0tLQogLi4u L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY29ubmVjdG9ycy5jICAgIHwgMjMgKysrKystLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92aXJ0dWFsLmMgICAgICB8ICA1 ICsrLQogLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIHwgIDYg KysrLQogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jICAgICAgICAgICAgICAgIHwgMTIg LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgICAgIHwg IDkgKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgICAgICAgICAg fCAgMyArLQogZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyAgICAgICAgICAgICAgIHwg MzEgKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIu YyAgICAgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9k ZS5jICAgICAgICB8IDExIC0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3BudjA0 L2Rpc3AuYyAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnY1MC9k aXNwLmMgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9jb25u ZWN0b3IuYyAgIHwgIDcgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5l Y3RvcnMuYyAgICB8IDI3ICsrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRs X2Nvbm5lY3Rvci5jICAgICAgICAgICB8ICA4IC0tLS0tCiBpbmNsdWRlL2RybS9kcm1fY29ubmVj dG9yLmggICAgICAgICAgICAgICAgICAgfCAxOCArKysrKy0tLS0tLQogMTUgZmlsZXMgY2hhbmdl ZCwgNTMgaW5zZXJ0aW9ucygrKSwgMTE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jb25uZWN0b3JzLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfY29ubmVjdG9ycy5jCmluZGV4IGVjZTU1YzhmYTY3My4uZDg3 MjkyODVmNzMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Y29ubmVjdG9ycy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jb25u ZWN0b3JzLmMKQEAgLTIxNywxMSArMjE3LDEwIEBAIGFtZGdwdV9jb25uZWN0b3JfdXBkYXRlX3Nj cmF0Y2hfcmVncyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcjsKIAljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MgKmNvbm5lY3Rvcl9mdW5jcyA9IGNvbm5lY3Rvci0+aGVscGVyX3ByaXZhdGU7CiAJYm9vbCBj b25uZWN0ZWQ7Ci0JaW50IGk7CiAKIAliZXN0X2VuY29kZXIgPSBjb25uZWN0b3JfZnVuY3MtPmJl c3RfZW5jb2Rlcihjb25uZWN0b3IpOwogCi0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJs ZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2Vh Y2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsKIAkJaWYgKChlbmNvZGVy ID09IGJlc3RfZW5jb2RlcikgJiYgKHN0YXR1cyA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZCkpCiAJCQljb25uZWN0ZWQgPSB0cnVlOwogCQllbHNlCkBAIC0yMzYsOSArMjM1LDggQEAgYW1k Z3B1X2Nvbm5lY3Rvcl9maW5kX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKIAkJCSAgICAgICBpbnQgZW5jb2Rlcl90eXBlKQogewogCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcjsKLQlpbnQgaTsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5j b2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpIHsKKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bv c3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKSB7CiAJCWlmIChlbmNvZGVyLT5lbmNv ZGVyX3R5cGUgPT0gZW5jb2Rlcl90eXBlKQogCQkJcmV0dXJuIGVuY29kZXI7CiAJfQpAQCAtMzQ3 LDEwICszNDUsOSBAQCBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoKIGFtZGdwdV9jb25uZWN0 b3JfYmVzdF9zaW5nbGVfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQog ewogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgaTsKIAogCS8qIHBpY2sgdGhl IGZpcnN0IG9uZSAqLwotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihj b25uZWN0b3IsIGVuY29kZXIsIGkpCisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9l bmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikKIAkJcmV0dXJuIGVuY29kZXI7CiAKIAlyZXR1cm4g TlVMTDsKQEAgLTEwNjUsOSArMTA2Miw4IEBAIGFtZGdwdV9jb25uZWN0b3JfZHZpX2RldGVjdChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQogCS8qIGZpbmQgYW5h bG9nIGVuY29kZXIgKi8KIAlpZiAoYW1kZ3B1X2Nvbm5lY3Rvci0+ZGFjX2xvYWRfZGV0ZWN0KSB7 CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQkJaW50IGk7CiAKLQkJZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkgewor CQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNv ZGVyKSB7CiAJCQlpZiAoZW5jb2Rlci0+ZW5jb2Rlcl90eXBlICE9IERSTV9NT0RFX0VOQ09ERVJf REFDICYmCiAJCQkgICAgZW5jb2Rlci0+ZW5jb2Rlcl90eXBlICE9IERSTV9NT0RFX0VOQ09ERVJf VFZEQUMpCiAJCQkJY29udGludWU7CkBAIC0xMTE3LDkgKzExMTMsOCBAQCBhbWRncHVfY29ubmVj dG9yX2R2aV9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiB7CiAJc3Ry dWN0IGFtZGdwdV9jb25uZWN0b3IgKmFtZGdwdV9jb25uZWN0b3IgPSB0b19hbWRncHVfY29ubmVj dG9yKGNvbm5lY3Rvcik7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwotCWludCBpOwog Ci0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5j b2RlciwgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25u ZWN0b3IsIGVuY29kZXIpIHsKIAkJaWYgKGFtZGdwdV9jb25uZWN0b3ItPnVzZV9kaWdpdGFsID09 IHRydWUpIHsKIAkJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5cGUgPT0gRFJNX01PREVfRU5DT0RF Ul9UTURTKQogCQkJCXJldHVybiBlbmNvZGVyOwpAQCAtMTEzNCw3ICsxMTI5LDcgQEAgYW1kZ3B1 X2Nvbm5lY3Rvcl9kdmlfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQog CiAJLyogdGhlbiBjaGVjayB1c2UgZGlnaXRpYWwgKi8KIAkvKiBwaWNrIHRoZSBmaXJzdCBvbmUg Ki8KLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBl bmNvZGVyLCBpKQorCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25u ZWN0b3IsIGVuY29kZXIpCiAJCXJldHVybiBlbmNvZGVyOwogCiAJcmV0dXJuIE5VTEw7CkBAIC0x MjcxLDkgKzEyNjYsOCBAQCB1MTYgYW1kZ3B1X2Nvbm5lY3Rvcl9lbmNvZGVyX2dldF9kcF9icmlk Z2VfZW5jb2Rlcl9pZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubgogewogCXN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcjsKIAlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVy OwotCWludCBpOwogCi0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNv bm5lY3RvciwgZW5jb2RlciwgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVf ZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsKIAkJYW1kZ3B1X2VuY29kZXIgPSB0b19hbWRn cHVfZW5jb2RlcihlbmNvZGVyKTsKIAogCQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVy X2lkKSB7CkBAIC0xMjkyLDEwICsxMjg2LDkgQEAgc3RhdGljIGJvb2wgYW1kZ3B1X2Nvbm5lY3Rv cl9lbmNvZGVyX2lzX2hicjIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKIAlz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CiAJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRn cHVfZW5jb2RlcjsKLQlpbnQgaTsKIAlib29sIGZvdW5kID0gZmFsc2U7CiAKLQlkcm1fY29ubmVj dG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7CisJ ZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rl cikgewogCQlhbWRncHVfZW5jb2RlciA9IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOwogCQlp ZiAoYW1kZ3B1X2VuY29kZXItPmNhcHMgJiBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9IQlIyKQog CQkJZm91bmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv ZGNlX3ZpcnR1YWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92aXJ0dWFsLmMK aW5kZXggNGM2ZDc5MmQ1MWE1Li5kNWI1Mjk1ZjhkYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2RjZV92aXJ0dWFsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZGNlX3ZpcnR1YWwuYwpAQCAtMjYwLDE1ICsyNjAsMTQgQEAgc3RhdGljIHN0cnVjdCBk cm1fZW5jb2RlciAqCiBkY2VfdmlydHVhbF9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCiB7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwotCWludCBpOwogCi0J ZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rl ciwgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0 b3IsIGVuY29kZXIpIHsKIAkJaWYgKGVuY29kZXItPmVuY29kZXJfdHlwZSA9PSBEUk1fTU9ERV9F TkNPREVSX1ZJUlRVQUwpCiAJCQlyZXR1cm4gZW5jb2RlcjsKIAl9CiAKIAkvKiBwaWNrIHRoZSBm aXJzdCBvbmUgKi8KLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29u bmVjdG9yLCBlbmNvZGVyLCBpKQorCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5j b2Rlcihjb25uZWN0b3IsIGVuY29kZXIpCiAJCXJldHVybiBlbmNvZGVyOwogCiAJcmV0dXJuIE5V TEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVf ZG0uYwppbmRleCA2N2Y4YWVlNGNkMWIuLmE0OGQ4MTNhYzQ2ZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCkBAIC00Nzk0LDcgKzQ3 OTQsMTEgQEAgc3RhdGljIGludCB0b19kcm1fY29ubmVjdG9yX3R5cGUoZW51bSBzaWduYWxfdHlw ZSBzdCkKIAogc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqYW1kZ3B1X2RtX2Nvbm5lY3Rvcl90 b19lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiB7Ci0JcmV0dXJuIGRy bV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsIGNvbm5lY3Rvci0+ZW5jb2Rlcl9p ZHNbMF0pOworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKworCS8qIFRoZXJlIGlzIG9u bHkgb25lIGVuY29kZXIgcGVyIGNvbm5lY3RvciAqLworCWRybV9jb25uZWN0b3JfZm9yX2VhY2hf cG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpCisJCXJldHVybiBlbmNvZGVyOwog fQogCiBzdGF0aWMgdm9pZCBhbWRncHVfZG1fZ2V0X25hdGl2ZV9tb2RlKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9t b2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMKaW5kZXggZDM0OWM3MjE1MDFj Li5lZWY5NWUxYWYwNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMKQEAgLTY4NywxNyArNjg3LDYg QEAgc3RhdGljIHZvaWQgYXN0X2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpCiAJa2ZyZWUoZW5jb2Rlcik7CiB9CiAKLQotc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rl ciAqYXN0X2Jlc3Rfc2luZ2xlX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikKLXsKLQlpbnQgZW5jX2lkID0gY29ubmVjdG9yLT5lbmNvZGVyX2lkc1swXTsKLQkvKiBwaWNr IHRoZSBlbmNvZGVyIGlkcyAqLwotCWlmIChlbmNfaWQpCi0JCXJldHVybiBkcm1fZW5jb2Rlcl9m aW5kKGNvbm5lY3Rvci0+ZGV2LCBOVUxMLCBlbmNfaWQpOwotCXJldHVybiBOVUxMOwotfQotCi0K IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgYXN0X2VuY19mdW5jcyA9IHsK IAkuZGVzdHJveSA9IGFzdF9lbmNvZGVyX2Rlc3Ryb3ksCiB9OwpAQCAtODQ3LDcgKzgzNiw2IEBA IHN0YXRpYyB2b2lkIGFzdF9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5j cyBhc3RfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKIAkubW9kZV92YWxpZCA9IGFzdF9tb2Rl X3ZhbGlkLAogCS5nZXRfbW9kZXMgPSBhc3RfZ2V0X21vZGVzLAotCS5iZXN0X2VuY29kZXIgPSBh c3RfYmVzdF9zaW5nbGVfZW5jb2RlciwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9mdW5jcyBhc3RfY29ubmVjdG9yX2Z1bmNzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuYwppbmRleCBhYTE2ZWExN2ZmOWIuLjMwYmM0M2NhZTYyOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKQEAgLTEwMyw4ICsxMDMsMTMgQEAgZHJtX2F0b21pY19oZWxw ZXJfcGxhbmVfY2hhbmdlZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiBzdGF0aWMg c3RydWN0IGRybV9lbmNvZGVyICoKIHBpY2tfc2luZ2xlX2VuY29kZXJfZm9yX2Nvbm5lY3Rvcihz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewotCVdBUk5fT04oY29ubmVjdG9yLT5l bmNvZGVyX2lkc1sxXSk7Ci0JcmV0dXJuIGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYs IE5VTEwsIGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbMF0pOworCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcjsKKworCVdBUk5fT04oaHdlaWdodDMyKGNvbm5lY3Rvci0+cG9zc2libGVfZW5jb2Rl cnMpID4gMSk7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5l Y3RvciwgZW5jb2RlcikKKwkJcmV0dXJuIGVuY29kZXI7CisKKwlyZXR1cm4gTlVMTDsKIH0KIAog c3RhdGljIGludCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9k ZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCmluZGV4IGM4OTIy YjdjYWMwOS4uODk1YjczZjIzMDc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ns aWVudF9tb2Rlc2V0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5j CkBAIC00MTUsOSArNDE1LDggQEAgc3RhdGljIGJvb2wgY29ubmVjdG9yX2hhc19wb3NzaWJsZV9j cnRjKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIHsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Ci0JaW50IGk7CiAKLQlk cm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVy LCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3Rv ciwgZW5jb2RlcikgewogCQlpZiAoZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgJiBkcm1fY3J0Y19t YXNrKGNydGMpKQogCQkJcmV0dXJuIHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKaW5k ZXggNGM3NjY2MjRiMjBkLi40Mzg5NmM3MTFiNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwpA QCAtMzY1LDggKzM2NSw2IEBAIEVYUE9SVF9TWU1CT0woZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZWRp ZF9wcm9wZXJ0eSk7CiBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcihzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIp CiB7Ci0JaW50IGk7Ci0KIAkvKgogCSAqIEluIHRoZSBwYXN0LCBkcml2ZXJzIGhhdmUgYXR0ZW1w dGVkIHRvIG1vZGVsIHRoZSBzdGF0aWMgYXNzb2NpYXRpb24KIAkgKiBvZiBjb25uZWN0b3IgdG8g ZW5jb2RlciBpbiBzaW1wbGUgY29ubmVjdG9yL2VuY29kZXIgZGV2aWNlcyB1c2luZyBhCkBAIC0z ODEsMTggKzM3OSwxNSBAQCBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcihzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCWlmIChXQVJOX09OKGNvbm5lY3Rvci0+ZW5jb2Rl cikpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29u bmVjdG9yLT5lbmNvZGVyX2lkcyk7IGkrKykgewotCQlpZiAoY29ubmVjdG9yLT5lbmNvZGVyX2lk c1tpXSA9PSAwKSB7Ci0JCQljb25uZWN0b3ItPmVuY29kZXJfaWRzW2ldID0gZW5jb2Rlci0+YmFz ZS5pZDsKLQkJCXJldHVybiAwOwotCQl9Ci0JfQotCXJldHVybiAtRU5PTUVNOworCWNvbm5lY3Rv ci0+cG9zc2libGVfZW5jb2RlcnMgfD0gZHJtX2VuY29kZXJfbWFzayhlbmNvZGVyKTsKKworCXJl dHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKTsK IAogLyoqCi0gKiBkcm1fY29ubmVjdG9yX2hhc19wb3NzaWJsZV9lbmNvZGVyIC0gY2hlY2sgaWYg dGhlIGNvbm5lY3RvciBhbmQgZW5jb2RlciBhcmUgYXNzb3NpY2F0ZWQgd2l0aCBlYWNoIG90aGVy CisgKiBkcm1fY29ubmVjdG9yX2hhc19wb3NzaWJsZV9lbmNvZGVyIC0gY2hlY2sgaWYgdGhlIGNv bm5lY3RvciBhbmQgZW5jb2RlciBhcmUKKyAqIGFzc29jaWF0ZWQgd2l0aCBlYWNoIG90aGVyCiAg KiBAY29ubmVjdG9yOiB0aGUgY29ubmVjdG9yCiAgKiBAZW5jb2RlcjogdGhlIGVuY29kZXIKICAq CkBAIC00MDIsMTUgKzM5Nyw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2Nvbm5lY3Rvcl9hdHRhY2hf ZW5jb2Rlcik7CiBib29sIGRybV9jb25uZWN0b3JfaGFzX3Bvc3NpYmxlX2VuY29kZXIoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkJc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQogewotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jOwotCWludCBpOwotCi0JZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jLCBpKSB7Ci0JCWlm IChlbmMgPT0gZW5jb2RlcikKLQkJCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVybiBmYWxzZTsK KwlyZXR1cm4gY29ubmVjdG9yLT5wb3NzaWJsZV9lbmNvZGVycyAmIGRybV9lbmNvZGVyX21hc2so ZW5jb2Rlcik7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jb25uZWN0b3JfaGFzX3Bvc3NpYmxlX2Vu Y29kZXIpOwogCkBAIC0yMTIxLDcgKzIxMDgsNiBAQCBpbnQgZHJtX21vZGVfZ2V0Y29ubmVjdG9y KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaW50IGVuY29kZXJzX2NvdW50 ID0gMDsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgY29waWVkID0gMDsKLQlpbnQgaTsKIAlzdHJ1Y3Qg ZHJtX21vZGVfbW9kZWluZm8gdV9tb2RlOwogCXN0cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyBfX3Vz ZXIgKm1vZGVfcHRyOwogCXVpbnQzMl90IF9fdXNlciAqZW5jb2Rlcl9wdHI7CkBAIC0yMTM2LDE0 ICsyMTIyLDEzIEBAIGludCBkcm1fbW9kZV9nZXRjb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoIWNvbm5lY3RvcikKIAkJcmV0dXJuIC1FTk9FTlQ7CiAK LQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNv ZGVyLCBpKQotCQllbmNvZGVyc19jb3VudCsrOworCWVuY29kZXJzX2NvdW50ID0gaHdlaWdodDMy KGNvbm5lY3Rvci0+cG9zc2libGVfZW5jb2RlcnMpOwogCiAJaWYgKChvdXRfcmVzcC0+Y291bnRf ZW5jb2RlcnMgPj0gZW5jb2RlcnNfY291bnQpICYmIGVuY29kZXJzX2NvdW50KSB7CiAJCWNvcGll ZCA9IDA7CiAJCWVuY29kZXJfcHRyID0gKHVpbnQzMl90IF9fdXNlciAqKSh1bnNpZ25lZCBsb25n KShvdXRfcmVzcC0+ZW5jb2RlcnNfcHRyKTsKIAotCQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bv c3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7CisJCWRybV9jb25uZWN0b3Jf Zm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsKIAkJCWlmIChw dXRfdXNlcihlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyX3B0ciArIGNvcGllZCkpIHsKIAkJCQly ZXQgPSAtRUZBVUxUOwogCQkJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9wcm9iZV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMK aW5kZXggZWYyYzQ2ODIwNWEyLi5lOWNkOWNmZjgxMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcHJvYmVfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9o ZWxwZXIuYwpAQCAtOTIsNyArOTIsNiBAQCBkcm1fbW9kZV92YWxpZGF0ZV9waXBlbGluZShzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5kZXY7CiAJZW51bSBkcm1fbW9kZV9zdGF0dXMgcmV0ID0gTU9ERV9PSzsKIAlzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Ci0JaW50IGk7CiAKIAkvKiBTdGVwIDE6IFZhbGlkYXRl IGFnYWluc3QgY29ubmVjdG9yICovCiAJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkKGNv bm5lY3RvciwgbW9kZSk7CkBAIC0xMDAsNyArOTksNyBAQCBkcm1fbW9kZV92YWxpZGF0ZV9waXBl bGluZShzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAkJcmV0dXJuIHJldDsKIAogCS8q IFN0ZXAgMjogVmFsaWRhdGUgYWdhaW5zdCBlbmNvZGVycyBhbmQgY3J0Y3MgKi8KLQlkcm1fY29u bmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7 CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5j b2RlcikgewogCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAKIAkJcmV0ID0gZHJtX2VuY29kZXJf bW9kZV92YWxpZChlbmNvZGVyLCBtb2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t Z2FnMjAwL21nYWcyMDBfbW9kZS5jIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9t b2RlLmMKaW5kZXggNWU3NzhiNWYxYTEwLi42ODIyNjU1NjA0NGIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t Z2FnMjAwL21nYWcyMDBfbW9kZS5jCkBAIC0xNjM4LDE2ICsxNjM4LDYgQEAgc3RhdGljIGVudW0g ZHJtX21vZGVfc3RhdHVzIG1nYV92Z2FfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAogCXJldHVybiBNT0RFX09LOwogfQogCi1zdGF0aWMgc3RydWN0IGRybV9lbmNv ZGVyICptZ2FfY29ubmVjdG9yX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvcgotCQkJ CQkJICAqY29ubmVjdG9yKQotewotCWludCBlbmNfaWQgPSBjb25uZWN0b3ItPmVuY29kZXJfaWRz WzBdOwotCS8qIHBpY2sgdGhlIGVuY29kZXIgaWRzICovCi0JaWYgKGVuY19pZCkKLQkJcmV0dXJu IGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsIGVuY19pZCk7Ci0JcmV0dXJu IE5VTEw7Ci19Ci0KIHN0YXRpYyB2b2lkIG1nYV9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBtZ2FfY29ubmVjdG9yICptZ2FfY29u bmVjdG9yID0gdG9fbWdhX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwpAQCAtMTY1OSw3ICsxNjQ5LDYg QEAgc3RhdGljIHZvaWQgbWdhX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1 bmNzIG1nYV92Z2FfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKIAkuZ2V0X21vZGVzID0gbWdh X3ZnYV9nZXRfbW9kZXMsCiAJLm1vZGVfdmFsaWQgPSBtZ2FfdmdhX21vZGVfdmFsaWQsCi0JLmJl c3RfZW5jb2RlciA9IG1nYV9jb25uZWN0b3JfYmVzdF9lbmNvZGVyLAogfTsKIAogc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIG1nYV92Z2FfY29ubmVjdG9yX2Z1bmNzID0g ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvZGlzcC5jIGIv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvZGlzcC5jCmluZGV4IDU3MTNiYWNhZWU4 MC4uNTAwZWQwZTRiMDQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNw bnYwNC9kaXNwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvZGlzcC5j CkBAIC0yNTcsNyArMjU3LDcgQEAgbnYwNF9kaXNwbGF5X2NyZWF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNvbm5lY3RvciwgY3QsCiAJCQkJ ICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7Ci0JCWlmICghY29ubmVj dG9yLT5lbmNvZGVyX2lkc1swXSkgeworCQlpZiAoIWNvbm5lY3Rvci0+cG9zc2libGVfZW5jb2Rl cnMpIHsKIAkJCU5WX1dBUk4oZHJtLCAiJXMgaGFzIG5vIGVuY29kZXJzLCByZW1vdmluZ1xuIiwK IAkJCQljb25uZWN0b3ItPm5hbWUpOwogCQkJY29ubmVjdG9yLT5mdW5jcy0+ZGVzdHJveShjb25u ZWN0b3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAvZGlz cC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAvZGlzcC5jCmluZGV4IDVjMzZj NzUyMzJlNi4uMmQ2NTdiMWEzZTUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9kaXNwbnY1MC9kaXNwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAv ZGlzcC5jCkBAIC0yMzk0LDcgKzIzOTQsNyBAQCBudjUwX2Rpc3BsYXlfY3JlYXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAKIAkvKiBjdWxsIGFueSBjb25uZWN0b3JzIHdlIGNyZWF0ZWQgdGhh dCBkb24ndCBoYXZlIGFuIGVuY29kZXIgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY29u bmVjdG9yLCB0bXAsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7Ci0J CWlmIChjb25uZWN0b3ItPmVuY29kZXJfaWRzWzBdKQorCQlpZiAoY29ubmVjdG9yLT5wb3NzaWJs ZV9lbmNvZGVycykKIAkJCWNvbnRpbnVlOwogCiAJCU5WX1dBUk4oZHJtLCAiJXMgaGFzIG5vIGVu Y29kZXJzLCByZW1vdmluZ1xuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L25vdXZlYXVfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Nv bm5lY3Rvci5jCmluZGV4IDMzMGQ3ZDI5YTZlMy4uOGZhNzI1ZjkwMjk3IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Nvbm5lY3Rvci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfY29ubmVjdG9yLmMKQEAgLTM2Niw5ICszNjYsOCBAQCBm aW5kX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IHR5cGUpCiB7 CiAJc3RydWN0IG5vdXZlYXVfZW5jb2RlciAqbnZfZW5jb2RlcjsKIAlzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuYzsKLQlpbnQgaTsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5j b2Rlcihjb25uZWN0b3IsIGVuYywgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2li bGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuYykgewogCQludl9lbmNvZGVyID0gbm91dmVhdV9lbmNv ZGVyKGVuYyk7CiAKIAkJaWYgKHR5cGUgPT0gRENCX09VVFBVVF9BTlkgfHwKQEAgLTQxNSwxMCAr NDE0LDEwIEBAIG5vdXZlYXVfY29ubmVjdG9yX2RkY19kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7 CiAJc3RydWN0IG5vdXZlYXVfZW5jb2RlciAqbnZfZW5jb2RlciA9IE5VTEwsICpmb3VuZCA9IE5V TEw7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwotCWludCBpLCByZXQ7CisJaW50IHJl dDsKIAlib29sIHN3aXRjaGVyb29fZGRjID0gZmFsc2U7CiAKLQlkcm1fY29ubmVjdG9yX2Zvcl9l YWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7CisJZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikgewogCQlu dl9lbmNvZGVyID0gbm91dmVhdV9lbmNvZGVyKGVuY29kZXIpOwogCiAJCXN3aXRjaCAobnZfZW5j b2Rlci0+ZGNiLT50eXBlKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbl9jb25uZWN0b3JzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0 b3JzLmMKaW5kZXggYjY4NGNkNzE5NjEyLi5jMDc0MjdkM2MxOTkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMKQEAgLTI0OSwxMSArMjQ5LDEwIEBAIHJhZGVv bl9jb25uZWN0b3JfdXBkYXRlX3NjcmF0Y2hfcmVncyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLCBlbnVtIGRybV9jCiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCWNvbnN0 IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyAqY29ubmVjdG9yX2Z1bmNzID0gY29u bmVjdG9yLT5oZWxwZXJfcHJpdmF0ZTsKIAlib29sIGNvbm5lY3RlZDsKLQlpbnQgaTsKIAogCWJl c3RfZW5jb2RlciA9IGNvbm5lY3Rvcl9mdW5jcy0+YmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7CiAK LQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNv ZGVyLCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5l Y3RvciwgZW5jb2RlcikgewogCQlpZiAoKGVuY29kZXIgPT0gYmVzdF9lbmNvZGVyKSAmJiAoc3Rh dHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKSkKIAkJCWNvbm5lY3RlZCA9IHRydWU7 CiAJCWVsc2UKQEAgLTI2OSw5ICsyNjgsOCBAQCByYWRlb25fY29ubmVjdG9yX3VwZGF0ZV9zY3Jh dGNoX3JlZ3Moc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBkcm1fYwogc3Rh dGljIHN0cnVjdCBkcm1fZW5jb2RlciAqcmFkZW9uX2ZpbmRfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLCBpbnQgZW5jb2Rlcl90eXBlKQogewogCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcjsKLQlpbnQgaTsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2li bGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpIHsKKwlkcm1fY29ubmVjdG9yX2Zvcl9l YWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKSB7CiAJCWlmIChlbmNvZGVy LT5lbmNvZGVyX3R5cGUgPT0gZW5jb2Rlcl90eXBlKQogCQkJcmV0dXJuIGVuY29kZXI7CiAJfQpA QCAtMzgwLDEwICszNzgsOSBAQCBzdGF0aWMgaW50IHJhZGVvbl9kZGNfZ2V0X21vZGVzKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICpy YWRlb25fYmVzdF9zaW5nbGVfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQogewogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgaTsKIAogCS8qIHBpY2sg dGhlIGZpcnN0IG9uZSAqLwotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rl cihjb25uZWN0b3IsIGVuY29kZXIsIGkpCisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJs ZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikKIAkJcmV0dXJuIGVuY29kZXI7CiAKIAlyZXR1 cm4gTlVMTDsKQEAgLTQyOCwxNCArNDI1LDEzIEBAIHJhZGVvbl9jb25uZWN0b3JfYW5hbG9nX2Vu Y29kZXJfY29uZmxpY3Rfc29sdmUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAog CWxpc3RfZm9yX2VhY2hfZW50cnkoY29uZmxpY3QsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rv cl9saXN0LCBoZWFkKSB7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jOwotCQlpbnQgaTsKIAog CQlpZiAoY29uZmxpY3QgPT0gY29ubmVjdG9yKQogCQkJY29udGludWU7CiAKIAkJcmFkZW9uX2Nv bmZsaWN0ID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25mbGljdCk7CiAKLQkJZHJtX2Nvbm5lY3Rv cl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbmZsaWN0LCBlbmMsIGkpIHsKKwkJZHJtX2Nv bm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbmZsaWN0LCBlbmMpIHsKIAkJCS8q IGlmIHRoZSBJRHMgbWF0Y2ggKi8KIAkJCWlmIChlbmMgPT0gZW5jb2RlcikgewogCQkJCWlmIChj b25mbGljdC0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQpAQCAtMTM2Myw5 ICsxMzU5LDcgQEAgcmFkZW9uX2R2aV9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwgYm9vbCBmb3JjZSkKIAogCS8qIGZpbmQgYW5hbG9nIGVuY29kZXIgKi8KIAlpZiAocmFk ZW9uX2Nvbm5lY3Rvci0+ZGFjX2xvYWRfZGV0ZWN0KSB7Ci0JCWludCBpOwotCi0JCWRybV9jb25u ZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpIHsK KwkJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5j b2RlcikgewogCQkJaWYgKGVuY29kZXItPmVuY29kZXJfdHlwZSAhPSBEUk1fTU9ERV9FTkNPREVS X0RBQyAmJgogCQkJICAgIGVuY29kZXItPmVuY29kZXJfdHlwZSAhPSBEUk1fTU9ERV9FTkNPREVS X1RWREFDKQogCQkJCWNvbnRpbnVlOwpAQCAtMTQ0Myw5ICsxNDM3LDggQEAgc3RhdGljIHN0cnVj dCBkcm1fZW5jb2RlciAqcmFkZW9uX2R2aV9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCiB7CiAJc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3Ig PSB0b19yYWRlb25fY29ubmVjdG9yKGNvbm5lY3Rvcik7CiAJc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyOwotCWludCBpOwogCi0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNv ZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9z c2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsKIAkJaWYgKHJhZGVvbl9jb25uZWN0 b3ItPnVzZV9kaWdpdGFsID09IHRydWUpIHsKIAkJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5cGUg PT0gRFJNX01PREVfRU5DT0RFUl9UTURTKQogCQkJCXJldHVybiBlbmNvZGVyOwpAQCAtMTQ2MCw3 ICsxNDUzLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqcmFkZW9uX2R2aV9lbmNvZGVy KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAKIAkvKiB0aGVuIGNoZWNrIHVzZSBk aWdpdGlhbCAqLwogCS8qIHBpY2sgdGhlIGZpcnN0IG9uZSAqLwotCWRybV9jb25uZWN0b3JfZm9y X2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpCisJZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikKIAkJcmV0 dXJuIGVuY29kZXI7CiAKIAlyZXR1cm4gTlVMTDsKQEAgLTE2MDMsOSArMTU5Niw4IEBAIHUxNiBy YWRlb25fY29ubmVjdG9yX2VuY29kZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVyX2lkKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uCiB7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCXN0 cnVjdCByYWRlb25fZW5jb2RlciAqcmFkZW9uX2VuY29kZXI7Ci0JaW50IGk7CiAKLQlkcm1fY29u bmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7 CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5j b2RlcikgewogCQlyYWRlb25fZW5jb2RlciA9IHRvX3JhZGVvbl9lbmNvZGVyKGVuY29kZXIpOwog CiAJCXN3aXRjaCAocmFkZW9uX2VuY29kZXItPmVuY29kZXJfaWQpIHsKQEAgLTE2MjQsMTAgKzE2 MTYsOSBAQCBzdGF0aWMgYm9vbCByYWRlb25fY29ubmVjdG9yX2VuY29kZXJfaXNfaGJyMihzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcjsKIAlzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNvZGVyOwotCWludCBpOwog CWJvb2wgZm91bmQgPSBmYWxzZTsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVf ZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpIHsKKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNo X3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKSB7CiAJCXJhZGVvbl9lbmNvZGVy ID0gdG9fcmFkZW9uX2VuY29kZXIoZW5jb2Rlcik7CiAJCWlmIChyYWRlb25fZW5jb2Rlci0+Y2Fw cyAmIEFUT01fRU5DT0RFUl9DQVBfUkVDT1JEX0hCUjIpCiAJCQlmb3VuZCA9IHRydWU7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1 L2RybS91ZGwvdWRsX2Nvbm5lY3Rvci5jCmluZGV4IGRkYjYxYTYwYzYxMC4uYjRhZTNlODlhN2I0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9jb25uZWN0b3IuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9jb25uZWN0b3IuYwpAQCAtOTAsMTMgKzkwLDYgQEAgdWRs X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQogCXJl dHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1f ZW5jb2RlcioKLXVkbF9iZXN0X3NpbmdsZV9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCi17Ci0JaW50IGVuY19pZCA9IGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbMF07Ci0J cmV0dXJuIGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsIGVuY19pZCk7Ci19 Ci0KIHN0YXRpYyBpbnQgdWRsX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0 eSwKIAkJCQkgICAgICB1aW50NjRfdCB2YWwpCkBAIC0xMjAsNyArMTEzLDYgQEAgc3RhdGljIHZv aWQgdWRsX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip CiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIHVkbF9jb25u ZWN0b3JfaGVscGVyX2Z1bmNzID0gewogCS5nZXRfbW9kZXMgPSB1ZGxfZ2V0X21vZGVzLAogCS5t b2RlX3ZhbGlkID0gdWRsX21vZGVfdmFsaWQsCi0JLmJlc3RfZW5jb2RlciA9IHVkbF9iZXN0X3Np bmdsZV9lbmNvZGVyLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1 bmNzIHVkbF9jb25uZWN0b3JfZnVuY3MgPSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f Y29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKaW5kZXggNjgxY2I1OTBm OTUyLi5jNmU5OTNlNzhkYmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3Iu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKQEAgLTEyODgsMTIgKzEyODgsMTIg QEAgc3RydWN0IGRybV9jb25uZWN0b3IgewogCS8qKiBAb3ZlcnJpZGVfZWRpZDogaGFzIHRoZSBF RElEIGJlZW4gb3ZlcndyaXR0ZW4gdGhyb3VnaCBkZWJ1Z2ZzIGZvciB0ZXN0aW5nPyAqLwogCWJv b2wgb3ZlcnJpZGVfZWRpZDsKIAotI2RlZmluZSBEUk1fQ09OTkVDVE9SX01BWF9FTkNPREVSIDMK IAkvKioKLQkgKiBAZW5jb2Rlcl9pZHM6IFZhbGlkIGVuY29kZXJzIGZvciB0aGlzIGNvbm5lY3Rv ci4gUGxlYXNlIG9ubHkgdXNlCi0JICogZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9l bmNvZGVyKCkgdG8gZW51bWVyYXRlIHRoZXNlLgorCSAqIEBwb3NzaWJsZV9lbmNvZGVyczogQml0 IG1hc2sgb2YgZW5jb2RlcnMgdGhhdCBjYW4gZHJpdmUgdGhpcworCSAqIGNvbm5lY3RvciwgZHJt X2VuY29kZXJfaW5kZXgoKSBkZXRlcm1pbmVzIHRoZSBpbmRleCBpbnRvIHRoZSBiaXRmaWVsZAor CSAqIGFuZCB0aGUgYml0cyBhcmUgc2V0IHdpdGggZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rl cigpLgogCSAqLwotCXVpbnQzMl90IGVuY29kZXJfaWRzW0RSTV9DT05ORUNUT1JfTUFYX0VOQ09E RVJdOworCXUzMiBwb3NzaWJsZV9lbmNvZGVyczsKIAogCS8qKgogCSAqIEBlbmNvZGVyOiBDdXJy ZW50bHkgYm91bmQgZW5jb2RlciBkcml2aW5nIHRoaXMgY29ubmVjdG9yLCBpZiBhbnkuCkBAIC0x NjA4LDEzICsxNjA4LDkgQEAgYm9vbCBkcm1fY29ubmVjdG9yX2hhc19wb3NzaWJsZV9lbmNvZGVy KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAgKiBkcm1fY29ubmVjdG9yX2Zvcl9l YWNoX3Bvc3NpYmxlX2VuY29kZXIgLSBpdGVyYXRlIGNvbm5lY3RvcidzIHBvc3NpYmxlIGVuY29k ZXJzCiAgKiBAY29ubmVjdG9yOiAmc3RydWN0IGRybV9jb25uZWN0b3IgcG9pbnRlcgogICogQGVu Y29kZXI6ICZzdHJ1Y3QgZHJtX2VuY29kZXIgcG9pbnRlciB1c2VkIGFzIGN1cnNvcgotICogQF9f aTogaW50IGl0ZXJhdGlvbiBjdXJzb3IsIGZvciBtYWNyby1pbnRlcm5hbCB1c2UKICAqLwotI2Rl ZmluZSBkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBl bmNvZGVyLCBfX2kpIFwKLQlmb3IgKChfX2kpID0gMDsgKF9faSkgPCBBUlJBWV9TSVpFKChjb25u ZWN0b3IpLT5lbmNvZGVyX2lkcykgJiYgXAotCQkgICAgIChjb25uZWN0b3IpLT5lbmNvZGVyX2lk c1soX19pKV0gIT0gMDsgKF9faSkrKykgXAotCQlmb3JfZWFjaF9pZigoZW5jb2RlcikgPSBcCi0J CQkgICAgZHJtX2VuY29kZXJfZmluZCgoY29ubmVjdG9yKS0+ZGV2LCBOVUxMLCBcCi0JCQkJCSAg ICAgKGNvbm5lY3RvciktPmVuY29kZXJfaWRzWyhfX2kpXSkpIFwKKyNkZWZpbmUgZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikgXAorCWRy bV9mb3JfZWFjaF9lbmNvZGVyX21hc2soZW5jb2RlciwgKGNvbm5lY3RvciktPmRldiwgXAorCQkJ CSAgKGNvbm5lY3RvciktPnBvc3NpYmxlX2VuY29kZXJzKQogCiAjZW5kaWYKLS0gCjIuMjIuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs