From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Ekstrand Subject: [PATCH 4/9] drm/syncobj: add sync obj wait interface. (v8) Date: Fri, 11 Aug 2017 15:39:29 -0700 Message-ID: <1502491174-10913-5-git-send-email-jason.ekstrand@intel.com> References: <1502232369-19753-1-git-send-email-jason.ekstrand@intel.com> <1502491174-10913-1-git-send-email-jason.ekstrand@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x241.google.com (mail-pf0-x241.google.com [IPv6:2607:f8b0:400e:c00::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4416E6E763 for ; Fri, 11 Aug 2017 22:39:50 +0000 (UTC) Received: by mail-pf0-x241.google.com with SMTP id t86so4527294pfe.1 for ; Fri, 11 Aug 2017 15:39:50 -0700 (PDT) In-Reply-To: <1502491174-10913-1-git-send-email-jason.ekstrand@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Dave Airlie List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgaW50ZXJmYWNlIHdp bGwgYWxsb3cgc3luYyBvYmplY3QgdG8gYmUgdXNlZCB0byBiYWNrClZ1bGthbiBmZW5jZXMuIFRo aXMgQVBJIGlzIHByZXR0eSBtdWNoIHRoZSB2dWxrYW4gZmVuY2Ugd2FpdGluZwpBUEksIGFuZCBJ J3ZlIHBvcnRlZCB0aGUgY29kZSBmcm9tIGFtZGdwdS4KCnYyOiBhY2NlcHQgcmVsYXRpdmUgdGlt ZW91dCwgcGFzcyByZW1haW5pbmcgdGltZSBiYWNrCnRvIHVzZXJzcGFjZS4KdjM6IHJldHVybiB0 byBhYnNvbHV0ZSB0aW1lb3V0cy4KdjQ6IGFic29sdXRlIHplcm8gPSBwb2xsLAogICAgcmV3cml0 ZSBhbnkvYWxsIGNvZGUgdG8gaGF2ZSBzYW1lIG9wZXJhdGlvbiBmb3IgYXJyYXlzCiAgICByZXR1 cm4gLUVJTlZBTCBmb3IgMCBmZW5jZXMuCnY0LjE6IGZpeHVwIGZlbmNlcyBhbGxvY2F0aW9uIGNo ZWNrLCB1c2UgdTY0X3RvX3VzZXJfcHRyCnY1OiBtb3ZlIHRvIHNlYy9uc2VjLCBhbmQgdXNlIHRp bWVzcGVjNjQgZm9yIGNhbGNzLgp2NjogdXNlIC1FVElNRSBhbmQgZHJvcCB0aGUgb3V0IHN0YXR1 cyBmbGFnLiAoLUVUSU1FCmlzIHN1Z2dlc3RlZCBieSBpY2tsZSwgSSBjYW4gZmVlbCBhIHNoZWQg cGFpbnRpbmcpCnY3OiB0YWxrZWQgdG8gRGFuaWVsL0FybmQsIHVzZSBrdGltZSBhbmQgbnMgZXZl cnl3aGVyZS4Kdjg6IGJlIG1vcmUgY2FyZWZ1bCBpbiB0aGUgdGltZW91dCBjYWxjdWxhdGlvbnMK ICAgIHVzZSB1aW50MzJfdCBmb3IgY291bnRlciB2YXJpYWJsZXMgc28gd2UgZG9uJ3Qgb3ZlcmZs b3cKICAgIGdyYWNpb3VzbHkgaGFuZGxlIC1FTk9JTlQgYmVpbmcgcmV0dXJuZWQgZnJvbSBkbWFf ZmVuY2Vfd2FpdF90aW1lb3V0CgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGllZEBy ZWRoYXQuY29tPgpSZXZpZXdlZC1ieTogSmFzb24gRWtzdHJhbmQgPGphc29uQGpsZWtzdHJhbmQu bmV0PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCB8ICAgMiArCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2lvY3RsLmMgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2RybV9zeW5j b2JqLmMgIHwgMTQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBp bmNsdWRlL3VhcGkvZHJtL2RybS5oICAgICAgICAgfCAgMTIgKysrKwogNCBmaWxlcyBjaGFuZ2Vk LCAxNTggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50 ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCA0ZTkwNmI4Li41 MzRlNWFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCkBAIC0xNjcsMyArMTY3LDUgQEAgaW50IGRy bV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKIGludCBkcm1f c3luY29ial9mZF90b19oYW5kbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5 bmNvYmpfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJ ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9pb2N0bC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCmluZGV4IDhi ZmViMzIuLjJhYjBmZjkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCkBAIC02NTcsNiArNjU3LDggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBkcm1faW9jdGxzW10gPSB7CiAJCSAgICAg IERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGKERSTV9JT0NU TF9TWU5DT0JKX0ZEX1RPX0hBTkRMRSwgZHJtX3N5bmNvYmpfZmRfdG9faGFuZGxlX2lvY3RsLAog CQkgICAgICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRihE Uk1fSU9DVExfU1lOQ09CSl9XQUlULCBkcm1fc3luY29ial93YWl0X2lvY3RsLAorCQkgICAgICBE Uk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCiB9OwogCiAjZGVmaW5lIERSTV9DT1JFX0lP Q1RMX0NPVU5UCUFSUkFZX1NJWkUoIGRybV9pb2N0bHMgKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwppbmRl eCAwMTkwZWMyLi5lMWY5NmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNv YmouYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAtMSw1ICsxLDcgQEAK IC8qCiAgKiBDb3B5cmlnaHQgMjAxNyBSZWQgSGF0CisgKiBQYXJ0cyBwb3J0ZWQgZnJvbSBhbWRn cHUgKGZlbmNlIHdhaXQgY29kZSkuCisgKiBDb3B5cmlnaHQgMjAxNiBBZHZhbmNlZCBNaWNybyBE ZXZpY2VzLCBJbmMuCiAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CkBAIC0zMSw2ICszMyw5IEBACiAgKiB0aGF0IGNvbnRhaW4gYW4gb3B0aW9uYWwgZmVuY2UuIFRo ZSBmZW5jZSBjYW4gYmUgdXBkYXRlZCB3aXRoIGEgbmV3CiAgKiBmZW5jZSwgb3IgYmUgTlVMTC4K ICAqCisgKiBzeW5jb2JqJ3MgY2FuIGJlIHdhaXRlZCB1cG9uLCB3aGVyZSBpdCB3aWxsIHdhaXQg Zm9yIHRoZSB1bmRlcmx5aW5nCisgKiBmZW5jZS4KKyAqCiAgKiBzeW5jb2JqJ3MgY2FuIGJlIGV4 cG9ydCB0byBmZCdzIGFuZCBiYWNrLCB0aGVzZSBmZCdzIGFyZSBvcGFxdWUgYW5kCiAgKiBoYXZl IG5vIG90aGVyIHVzZSBjYXNlLCBleGNlcHQgcGFzc2luZyB0aGUgc3luY29iaiBiZXR3ZWVuIHBy b2Nlc3Nlcy4KICAqCkBAIC00NTMsMyArNDU4LDE0MCBAQCBkcm1fc3luY29ial9mZF90b19oYW5k bGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gZHJt X3N5bmNvYmpfZmRfdG9faGFuZGxlKGZpbGVfcHJpdmF0ZSwgYXJncy0+ZmQsCiAJCQkJCSZhcmdz LT5oYW5kbGUpOwogfQorCisvKioKKyAqIGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzIC0gY2Fs Y3VsYXRlIGppZmZpZXMgdGltZW91dCBmcm9tIGFic29sdXRlIHZhbHVlCisgKgorICogQHRpbWVv dXRfbnNlYzogdGltZW91dCBuc2VjIGNvbXBvbmVudCBpbiBucywgMCBmb3IgcG9sbAorICoKKyAq IENhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBqaWZmaWVzIGZyb20gYW4gYWJzb2x1dGUgdGltZSBp biBzZWMvbnNlYy4KKyAqLworc3RhdGljIHNpZ25lZCBsb25nIGRybV90aW1lb3V0X2Fic190b19q aWZmaWVzKGludDY0X3QgdGltZW91dF9uc2VjKQoreworCWt0aW1lX3QgYWJzX3RpbWVvdXQsIG5v dzsKKwl1NjQgdGltZW91dF9ucywgdGltZW91dF9qaWZmaWVzNjQ7CisKKwkvKiBtYWtlIDAgdGlt ZW91dCBtZWFucyBwb2xsIC0gYWJzb2x1dGUgMCBkb2Vzbid0IHNlZW0gdmFsaWQgKi8KKwlpZiAo dGltZW91dF9uc2VjID09IDApCisJCXJldHVybiAwOworCisJYWJzX3RpbWVvdXQgPSBuc190b19r dGltZSh0aW1lb3V0X25zZWMpOworCW5vdyA9IGt0aW1lX2dldCgpOworCisJaWYgKCFrdGltZV9h ZnRlcihhYnNfdGltZW91dCwgbm93KSkKKwkJcmV0dXJuIDA7CisKKwl0aW1lb3V0X25zID0ga3Rp bWVfdG9fbnMoa3RpbWVfc3ViKGFic190aW1lb3V0LCBub3cpKTsKKworCXRpbWVvdXRfamlmZmll czY0ID0gbnNlY3NfdG9famlmZmllczY0KHRpbWVvdXRfbnMpOworCS8qICBjbGFtcCB0aW1lb3V0 IHRvIGF2b2lkIGluZmluaXRlIHRpbWVvdXQgKi8KKwlpZiAodGltZW91dF9qaWZmaWVzNjQgPj0g TUFYX1NDSEVEVUxFX1RJTUVPVVQgLSAxKQorCQlyZXR1cm4gTUFYX1NDSEVEVUxFX1RJTUVPVVQg LSAxOworCisJcmV0dXJuIHRpbWVvdXRfamlmZmllczY0ICsgMTsKK30KKworc3RhdGljIGludCBk cm1fc3luY29ial93YWl0X2ZlbmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJCSAgIHN0cnVjdCBkcm1fc3luY29ial93 YWl0ICp3YWl0LAorCQkJCSAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXMpCit7CisJc2lnbmVk IGxvbmcgdGltZW91dCA9IGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzKHdhaXQtPnRpbWVvdXRf bnNlYyk7CisJc2lnbmVkIGxvbmcgcmV0ID0gMDsKKwl1aW50MzJfdCBmaXJzdCA9IH4wOworCisJ aWYgKHdhaXQtPmZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FMTCkgeworCQl1 aW50MzJfdCBpOworCQlmb3IgKGkgPSAwOyBpIDwgd2FpdC0+Y291bnRfaGFuZGxlczsgaSsrKSB7 CisJCQlyZXQgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZlbmNlc1tpXSwgdHJ1ZSwgdGltZW91 dCk7CisKKwkJCS8qIFZhcmlvdXMgZG1hX2ZlbmNlIHdhaXQgY2FsbGJhY2tzIHdpbGwgcmV0dXJu CisJCQkgKiBFTk9FTlQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmVuY2UgaGFzIGFscmVhZHkKKwkJ CSAqIGJlZW4gc2lnbmFsZWQuICBXZSBuZWVkIHRvIHNhbml0aXplIHRoaXMgdG8gMCBzbworCQkJ ICogd2UgZG9uJ3QgcmV0dXJuIGVhcmx5IGFuZCB0aGUgY2xpZW50IGRvZXNuJ3Qgc2VlCisJCQkg KiBhbiB1bmV4cGVjdGVkIGVycm9yLgorCQkJICovCisJCQlpZiAocmV0ID09IC1FTk9FTlQpCisJ CQkJcmV0ID0gMDsKKworCQkJaWYgKHJldCA8IDApCisJCQkJcmV0dXJuIHJldDsKKwkJCWlmIChy ZXQgPT0gMCkKKwkJCQlicmVhazsKKwkJCXRpbWVvdXQgPSByZXQ7CisJCX0KKwkJZmlyc3QgPSAw OworCX0gZWxzZSB7CisJCXJldCA9IGRtYV9mZW5jZV93YWl0X2FueV90aW1lb3V0KGZlbmNlcywK KwkJCQkJCSB3YWl0LT5jb3VudF9oYW5kbGVzLAorCQkJCQkJIHRydWUsIHRpbWVvdXQsCisJCQkJ CQkgJmZpcnN0KTsKKwl9CisKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXdhaXQt PmZpcnN0X3NpZ25hbGVkID0gZmlyc3Q7CisJaWYgKHJldCA9PSAwKQorCQlyZXR1cm4gLUVUSU1F OworCXJldHVybiAwOworfQorCitpbnQKK2RybV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2YXRlKQoreworCXN0cnVjdCBkcm1fc3luY29ial93YWl0ICphcmdzID0gZGF0YTsKKwl1 aW50MzJfdCAqaGFuZGxlczsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzOworCWludCByZXQg PSAwOworCXVpbnQzMl90IGk7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfU1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJaWYgKGFyZ3MtPmZsYWdzICE9 IDAgJiYgYXJncy0+ZmxhZ3MgIT0gRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FMTCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoYXJncy0+Y291bnRfaGFuZGxlcyA9PSAwKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCS8qIEdldCB0aGUgaGFuZGxlcyBmcm9tIHVzZXJzcGFjZSAqLworCWhh bmRsZXMgPSBrbWFsbG9jX2FycmF5KGFyZ3MtPmNvdW50X2hhbmRsZXMsIHNpemVvZih1aW50MzJf dCksCisJCQkJR0ZQX0tFUk5FTCk7CisJaWYgKGhhbmRsZXMgPT0gTlVMTCkKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwlpZiAoY29weV9mcm9tX3VzZXIoaGFuZGxlcywKKwkJCSAgIHU2NF90b191c2Vy X3B0cihhcmdzLT5oYW5kbGVzKSwKKwkJCSAgIHNpemVvZih1aW50MzJfdCkgKiBhcmdzLT5jb3Vu dF9oYW5kbGVzKSkgeworCQlyZXQgPSAtRUZBVUxUOworCQlnb3RvIGVycl9mcmVlX2hhbmRsZXM7 CisJfQorCisJZmVuY2VzID0ga2NhbGxvYyhhcmdzLT5jb3VudF9oYW5kbGVzLAorCQkJIHNpemVv ZihzdHJ1Y3QgZG1hX2ZlbmNlICopLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZlbmNlcykgeworCQly ZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycl9mcmVlX2hhbmRsZXM7CisJfQorCisJZm9yIChpID0g MDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7IGkrKykgeworCQlyZXQgPSBkcm1fc3luY29ial9m aW5kX2ZlbmNlKGZpbGVfcHJpdmF0ZSwgaGFuZGxlc1tpXSwKKwkJCQkJICAgICAmZmVuY2VzW2ld KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyX2ZyZWVfZmVuY2VfYXJyYXk7CisJfQorCisJcmV0 ID0gZHJtX3N5bmNvYmpfd2FpdF9mZW5jZXMoZGV2LCBmaWxlX3ByaXZhdGUsCisJCQkJICAgICAg YXJncywgZmVuY2VzKTsKKworZXJyX2ZyZWVfZmVuY2VfYXJyYXk6CisJZm9yIChpID0gMDsgaSA8 IGFyZ3MtPmNvdW50X2hhbmRsZXM7IGkrKykKKwkJZG1hX2ZlbmNlX3B1dChmZW5jZXNbaV0pOwor CWtmcmVlKGZlbmNlcyk7CitlcnJfZnJlZV9oYW5kbGVzOgorCWtmcmVlKGhhbmRsZXMpOworCisJ cmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNs dWRlL3VhcGkvZHJtL2RybS5oCmluZGV4IDEwMTU5M2EuLjA3NTdjMWEgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvdWFwaS9kcm0vZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzE4 LDYgKzcxOCwxNyBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxlIHsKIAlfX3UzMiBwYWQ7CiB9 OwogCisjZGVmaW5lIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BTEwgKDEgPDwgMCkKK3N0 cnVjdCBkcm1fc3luY29ial93YWl0IHsKKwlfX3U2NCBoYW5kbGVzOworCS8qIGFic29sdXRlIHRp bWVvdXQgKi8KKwlfX3M2NCB0aW1lb3V0X25zZWM7CisJX191MzIgY291bnRfaGFuZGxlczsKKwlf X3UzMiBmbGFnczsKKwlfX3UzMiBmaXJzdF9zaWduYWxlZDsgLyogb25seSB2YWxpZCB3aGVuIG5v dCB3YWl0aW5nIGFsbCAqLworCV9fdTMyIHBhZDsKK307CisKICNpZiBkZWZpbmVkKF9fY3BsdXNw bHVzKQogfQogI2VuZGlmCkBAIC04NDAsNiArODUxLDcgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5l IERSTV9JT0NUTF9TWU5DT0JKX0RFU1RST1kJRFJNX0lPV1IoMHhDMCwgc3RydWN0IGRybV9zeW5j b2JqX2Rlc3Ryb3kpCiAjZGVmaW5lIERSTV9JT0NUTF9TWU5DT0JKX0hBTkRMRV9UT19GRAlEUk1f SU9XUigweEMxLCBzdHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxlKQogI2RlZmluZSBEUk1fSU9DVExf U1lOQ09CSl9GRF9UT19IQU5ETEUJRFJNX0lPV1IoMHhDMiwgc3RydWN0IGRybV9zeW5jb2JqX2hh bmRsZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NZTkNPQkpfV0FJVAkJRFJNX0lPV1IoMHhDMywgc3Ry dWN0IGRybV9zeW5jb2JqX3dhaXQpCiAKIC8qKgogICogRGV2aWNlIHNwZWNpZmljIGlvY3RscyBz aG91bGQgb25seSBiZSBpbiB0aGVpciByZXNwZWN0aXZlIGhlYWRlcnMKLS0gCjIuNS4wLjQwMC5n ZmY4NmZhZgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==