From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Longerbeam Subject: [PATCH 31/72] gpu: ipu-di: Set rate of DI pre clock Date: Fri, 31 Oct 2014 15:54:14 -0700 Message-ID: <1414796095-10107-32-git-send-email-steve_longerbeam@mentor.com> References: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f44.google.com (mail-pa0-f44.google.com [209.85.220.44]) by gabe.freedesktop.org (Postfix) with ESMTP id EB7EA6E84B for ; Fri, 31 Oct 2014 15:57:13 -0700 (PDT) Received: by mail-pa0-f44.google.com with SMTP id bj1so8581930pad.17 for ; Fri, 31 Oct 2014 15:57:13 -0700 (PDT) In-Reply-To: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.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 List-Id: dri-devel@lists.freedesktop.org VGhpcyBwYXRjaCBzZXRzIHRoZSByYXRlIG9mIHRoZSBESSBwcmUgY2xvY2sgdG8gc3VwcG9ydCBh IG11Y2ggd2lkZXIKcmFuZ2Ugb2YgcGl4ZWwgY2xvY2sgZnJlcXVlbmNpZXMuCgpJdCBkb2VzIHRo aXMgYnkgY2FsY3VsYXRpbmcgdHdvIHZhbHVlcyBmb3IgdGhlIHByZS1jbGsgcmF0ZTogYQpyYXRl IHRoYXQgaXMgYSB3aG9sZSBpbnRlZ2VyIG11bHRpcGxlIG9mIHRoZSBwaXhlbCBjbG9jaywgYW5k IGEgcmF0ZQp0aGF0IGlzIGEgaGFsZi1pbnRlZ2VyIG11bHRpcGxlLiBJdCB0aGVuIHByb2dyYW1z IHdoaWNoZXZlciByYXRlCmNvbWVzIGNsb3Nlc3QgdG8gZ2VuZXJhdGluZyB0aGUgZGVzaXJlZCBw aXhlbCBjbG9jaywgYW5kIHVzZXMgdGhlCmNvcnJlc3BvbmRpbmcgaW50ZWdlciBvciBoYWxmLWlu dGVnZXIgZGl2aWRlci4KClRoZSByZWFzb24gb25seSB3aG9sZSBvciBoYWxmIGludGVnZXIgREkg ZGl2aWRlcnMgYXJlIHVzZWQgaXMgYmVjYXVzZQpvZiBhIGNoaXAgYnVnIGluIHRoZSBmcmFjdGlv bmFsIHBhcnQgb2YgREkgQmFzZSBTeW5jIENsb2NrIEdlbiAwIHJlZ2lzdGVyCihzZWUgZGlzY3Vz c2lvbiBpbiBGU0wgY29tbXVuaXR5IHNpdGUgYXQKaHR0cHM6Ly9jb21tdW5pdHkuZnJlZXNjYWxl LmNvbS90aHJlYWQvMzA4NTc3KS4KClF1b3RpbmcgZnJvbSB0aGF0IHRocmVhZDoKCiJQaXhlbCBJ UFUgY2xvY2sgZm9yIERpc3BsYXkgaGFzIGhpZ2ggaml0dGVyIGFuZCBkb2VzIG5vdCBoYXZlIDUw JSBkdXR5IGN5Y2xlLgpUaGlzIGlzIGV4cGVjdGVkIGJlaGF2aW9yLCB3aGVuIHRoZSBjbG9jayBk aXZpZGVyIGlzIHNldCB0byBhIHZhbHVlIHRoYXQgaXMgbm90CmFuIGludGVnZXIuIFdoZW4gdGhl IGRpdmlkZXIgaXMgc2V0IHRvIGEgbm9uLWludGVnZXIgdmFsdWUsIHRoZSBhdmVyYWdlCmZyZXF1 ZW5jeSBvZiB0aGUgY2xvY2sgd2lsbCBiZSBjb3JyZWN0LCBidXQgdGhlIGNsb2NrIHdpbGwgaml0 dGVyLiIKCkFjY29yZGluZyB0byBvdXIgZXhwZXJpbWVudGF0aW9uLCBvbmx5IDB4OCBmb3IgdGhl IGZyYWN0aW9uYWwgcGFydCBzZWVtcwp0byBnZW5lcmF0ZSBjbG9jayB3YXZlZm9ybXMgdGhhdCBh cmUgdG9sZXJhdGVkIGJ5IG1vc3QgZGlzcGxheXMgKHRoaXMKaGFzbid0IGJlZW4gcHJvdmVkIG9m ZmljaWFsbHkpLgoKU2lnbmVkLW9mZi1ieTogU3RldmUgTG9uZ2VyYmVhbSA8c3RldmVfbG9uZ2Vy YmVhbUBtZW50b3IuY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWFkYSBXYW5nIDxqaWFkYV93YW5nQG1l bnRvci5jb20+Ci0tLQogZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1kaS5jIHwgIDE0NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTEx IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2lwdS12My9pcHUtZGkuYyBiL2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtZGkuYwppbmRleCBiMzA2 ZjA3Li44ZGE5YzlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWRpLmMKKysr IGIvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1kaS5jCkBAIC0zOTgsMTIgKzM5OCwxMDUgQEAgc3Rh dGljIHZvaWQgaXB1X2RpX3N5bmNfY29uZmlnX25vbmludGVybGFjZWQoc3RydWN0IGlwdV9kaSAq ZGksCiAJCWlwdV9kaV9zeW5jX2NvbmZpZyhkaSwgY2ZnX3ZnYSwgMCwgQVJSQVlfU0laRShjZmdf dmdhKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGlwdV9kaV9jb25maWdfY2xvY2soc3RydWN0IGlwdV9k aSAqZGksCi0JY29uc3Qgc3RydWN0IGlwdV9kaV9zaWduYWxfY2ZnICpzaWcpCisKKy8qCisgKiBX ZSBuZWVkIHRvIHVzZSB0aGUgREkgZGl2aWRlci4gV2Ugc2hvdWxkIHJlYWxseSBoYXZlIGEgZmxh ZyBoZXJlCisgKiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJyaWRnZSBjYW4gY29wZSB3aXRoIGEg ZnJhY3Rpb25hbCBkaXZpZGVyCisgKiBvciBub3QuCisgKgorICogRm9yIG5vdywgYXNzdW1lIHRo ZSBjaGlwIGJ1ZyBleGlzdHMgaW4gdGhlIGZyYWN0aW9uYWwgZGl2aWRlcgorICogd2hpY2ggY2F1 c2VzIGJhZCBESSBwaXhlbCBjbG9jayB3YXZlZm9ybXMgZm9yIGFsbCB2YWx1ZXMgb2YgdGhlCisg KiBmcmFjdGlvbmFsIHBhcnQgb3RoZXIgdGhhbiAwIChubyBmcmFjdGlvbikgb3IgMHg4ICgwLjUp LiBTbyB0aGlzCisgKiBmdW5jdGlvbiByZXR1cm5zIGEgZGl2aWRlciB3aXRoIG9ubHkgMHgwIG9y IDB4OCBpbiB0aGUgZnJhY3Rpb25hbAorICogcGFydC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJl cHJvZ3JhbXMgdGhlIGNsb2NrIHJhdGUgb2YgdGhlIHBhcmVudC1wYXJlbnQgb2YKKyAqIHRoZSBE SSBjbG9jayBpbiBvcmRlciB0byBnZXQgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIHJlcXVl c3RlZAorICogcGl4ZWwgY2xvY2suIEl0IGNhbGN1bGF0ZXMgdHdvIHZhbHVlcyBmb3IgdGhlIHBh cmVudC1wYXJlbnQgcmF0ZTogYQorICogcmF0ZSB0aGF0IGlzIGEgd2hvbGUgaW50ZWdlciBtdWx0 aXBsZSBvZiB0aGUgcGl4ZWwgY2xvY2ssIGFuZCBhIHJhdGUKKyAqIHRoYXQgaXMgYSBoYWxmLWlu dGVnZXIgbXVsdGlwbGUuIEl0IHRoZW4gcHJvZ3JhbXMgd2hpY2hldmVyIHJhdGUKKyAqIGNvbWVz IGNsb3Nlc3QgdG8gZ2VuZXJhdGluZyB0aGUgZGVzaXJlZCByYXRlLCBhbmQgcmV0dXJucyB0aGUK KyAqIGNvcnJlc3BvbmRpbmcgaW50ZWdlciBvciBoYWxmLWludGVnZXIgZGl2aWRlciAodGltZXMg MTYpLgorICovCitzdGF0aWMgaW50IHNldF9kaV9wcmVfY2xrX3JhdGUoc3RydWN0IGlwdV9kaSAq ZGksCisJCQkgICAgICAgY29uc3Qgc3RydWN0IGlwdV9kaV9zaWduYWxfY2ZnICpzaWcpCit7CisJ c3RydWN0IGNsayAqZGlfcHJlX2NsazsKKwl1bnNpZ25lZCBsb25nIHByZV9jbGtfTl9yb3VuZCwg cHJlX2Nsa19OXzBfNV9yb3VuZDsKKwl1bnNpZ25lZCBsb25nIHByZV9jbGtfTiwgcHJlX2Nsa19O XzBfNTsKKwl1bnNpZ25lZCBsb25nIHBpeGNsa19OLCBwaXhjbGtfTl8wXzU7CisJdW5zaWduZWQg ZGl2X04sIGRpdl9OXzBfNSwgZXJyb3JfTiwgZXJyb3JfTl8wXzU7CisJaW50IHJldDsKKworCWRp X3ByZV9jbGsgPSBjbGtfZ2V0X3BhcmVudChjbGtfZ2V0X3BhcmVudChkaS0+Y2xrX2RpKSk7CisJ aWYgKElTX0VSUihkaV9wcmVfY2xrKSkgeworCQlkZXZfZXJyKGRpLT5pcHUtPmRldiwgImZhaWxl ZCB0byBnZXQgZGlfcHJlIGNsb2NrXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZGlfcHJlX2Nsayk7 CisJfQorCisJLyoKKwkgKiBjYWxjIHByZV9jbGtfTiBhbmQgcHJlX2Nsa19OXzBfNSwgd2hpY2gg YXJlIGFuIGludGVnZXIgbXVsdGlwbGUKKwkgKiBhbmQgaGFsZi1pbnRlZ2VyIG11bHRpcGxlIG9m IHNpZy0+cGl4ZWxjbG9jaywgcmVzcGVjdGl2ZWx5LgorCSAqLworCXByZV9jbGtfTiA9IHNpZy0+ cGl4ZWxjbG9jazsKKwlwcmVfY2xrX05fcm91bmQgPSBjbGtfcm91bmRfcmF0ZShkaV9wcmVfY2xr LCBwcmVfY2xrX04pOworCXByZV9jbGtfTiAqPSAocHJlX2Nsa19OX3JvdW5kIC8gcHJlX2Nsa19O KTsKKwlwcmVfY2xrX05fMF81ID0gcHJlX2Nsa19OICsgc2lnLT5waXhlbGNsb2NrIC8gMjsKKwor CWlmIChwcmVfY2xrX04gPCBwcmVfY2xrX05fcm91bmQpCisJCXByZV9jbGtfTiArPSBzaWctPnBp eGVsY2xvY2s7CisJaWYgKHByZV9jbGtfTl8wXzUgPCBwcmVfY2xrX05fcm91bmQpCisJCXByZV9j bGtfTl8wXzUgKz0gc2lnLT5waXhlbGNsb2NrOworCisJLyoKKwkgKiBub3cgZ2V0IHRoZSByb3Vu ZGVkIHByZV9jbGtfTiBhbmQgcHJlX2Nsa19OXzBfNSwgaS5lLiB3aGF0IHRoZQorCSAqIHByZS1j bGsgY2FuIGFjdHVhbGx5IGdlbmVyYXRlLgorCSAqLworCXByZV9jbGtfTl9yb3VuZCA9IGNsa19y b3VuZF9yYXRlKGRpX3ByZV9jbGssIHByZV9jbGtfTik7CisJcHJlX2Nsa19OXzBfNV9yb3VuZCA9 IGNsa19yb3VuZF9yYXRlKGRpX3ByZV9jbGssIHByZV9jbGtfTl8wXzUpOworCisJLyoKKwkgKiBm aW5hbGx5IHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciB0aGUgaW50ZWdlciBtdWx0aXBsZSBvcgor CSAqIGhhbGYtaW50ZWdlciBtdWx0aXBsZSBwcmUtY2xrIGNvbWVzIGNsb3Nlc3QgdG8gZ2VuZXJh dGluZworCSAqIHRoZSBkZXNpcmVkIHBpeGVsIGNsb2NrLiBTZXQgcHJlLWNsayByYXRlIHRvIHdo aWNoZXZlciBjb21lcworCSAqIGNsb3Nlc3QuCisJICovCisJZGl2X04gPSAocHJlX2Nsa19OX3Jv dW5kIDw8IDQpIC8gc2lnLT5waXhlbGNsb2NrOworCWRpdl9OID0gKGRpdl9OICsgMHg4KSAmIH4w eGY7IC8qIHJvdW5kIHRvIG5lYXJlc3QgaW50ICovCisJcGl4Y2xrX04gPSAocHJlX2Nsa19OX3Jv dW5kIDw8IDQpIC8gZGl2X047CisKKwlkaXZfTl8wXzUgPSAocHJlX2Nsa19OXzBfNV9yb3VuZCA8 PCA0KSAvIHNpZy0+cGl4ZWxjbG9jazsKKwlkaXZfTl8wXzUgPSAoZGl2X05fMF81ICsgMHg0KSAm IH4weDc7IC8qIHJvdW5kIHRvIG5lYXJlc3QgaGFsZi1pbnQgKi8KKwlwaXhjbGtfTl8wXzUgPSAo cHJlX2Nsa19OXzBfNV9yb3VuZCA8PCA0KSAvIGRpdl9OXzBfNTsKKworCWVycm9yX04gPSBwaXhj bGtfTiAvIChzaWctPnBpeGVsY2xvY2sgLyAxMDAwKTsKKwllcnJvcl9OXzBfNSA9IHBpeGNsa19O XzBfNSAvIChzaWctPnBpeGVsY2xvY2sgLyAxMDAwKTsKKworCWlmIChhYnMoZXJyb3JfTiAtIDEw MDApIDwgYWJzKGVycm9yX05fMF81IC0gMTAwMCkpIHsKKwkJcmV0ID0gZGl2X047CisJCWNsa19z ZXRfcmF0ZShkaV9wcmVfY2xrLCBwcmVfY2xrX05fcm91bmQpOworCX0gZWxzZSB7CisJCXJldCA9 IGRpdl9OXzBfNTsKKwkJY2xrX3NldF9yYXRlKGRpX3ByZV9jbGssIHByZV9jbGtfTl8wXzVfcm91 bmQpOworCX0KKworCWRldl9kYmcoZGktPmlwdS0+ZGV2LAorCQkiZGklZDogcGl4Y2xrIHdhbnQg JWx1LCBjYW4gZG8gJWx1IC8gJWx1LCBkaXYgMHglMDJ4IC8gMHglMDJ4LCBlcnJvciAlZC4ldSUl IC8gJWQuJXUlJVxuIiwKKwkJZGktPmlkLCBzaWctPnBpeGVsY2xvY2ssIHBpeGNsa19OLCBwaXhj bGtfTl8wXzUsCisJCWRpdl9OLCBkaXZfTl8wXzUsCisJCShzaWduZWQpKGVycm9yX04gLSAxMDAw KSAvIDEwLCBlcnJvcl9OICUgMTAsCisJCShzaWduZWQpKGVycm9yX05fMF81IC0gMTAwMCkgLyAx MCwgZXJyb3JfTl8wXzUgJSAxMCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGlw dV9kaV9jb25maWdfY2xvY2soc3RydWN0IGlwdV9kaSAqZGksCisJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGlwdV9kaV9zaWduYWxfY2ZnICpzaWcpCiB7CiAJc3RydWN0IGNsayAqY2xrOwogCXVuc2ln bmVkIGNsa2dlbjA7CiAJdWludDMyX3QgdmFsOworCWludCByZXQ7CiAKIAlpZiAoc2lnLT5jbGtm bGFncyAmIElQVV9ESV9DTEtNT0RFX0VYVCkgewogCQkvKgpAQCAtNDIzLDI0ICs1MTYsMTAgQEAg c3RhdGljIHZvaWQgaXB1X2RpX2NvbmZpZ19jbG9jayhzdHJ1Y3QgaXB1X2RpICpkaSwKIAkJCSAq LwogCQkJY2xrZ2VuMCA9IDEgPDwgNDsKIAkJfSBlbHNlIHsKLQkJCS8qCi0JCQkgKiBXZSBjYW4g dXNlIHRoZSBkaXZpZGVyLiAgV2Ugc2hvdWxkIHJlYWxseSBoYXZlCi0JCQkgKiBhIGZsYWcgaGVy ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJyaWRnZSBjYW4KLQkJCSAqIGNvcGUgd2l0aCBhIGZy YWN0aW9uYWwgZGl2aWRlciBvciBub3QuICBGb3IgdGhlCi0JCQkgKiB0aW1lIGJlaW5nLCBsZXQn cyBnbyBmb3Igc2ltcGxpY2l0bHkgYW5kCi0JCQkgKiByZWxpYWJpbGl0eS4KLQkJCSAqLwotCQkJ dW5zaWduZWQgbG9uZyBpbl9yYXRlOwotCQkJdW5zaWduZWQgZGl2OwotCi0JCQljbGtfc2V0X3Jh dGUoY2xrLCBzaWctPnBpeGVsY2xvY2spOwotCi0JCQlpbl9yYXRlID0gY2xrX2dldF9yYXRlKGNs ayk7Ci0JCQlkaXYgPSAoaW5fcmF0ZSArIHNpZy0+cGl4ZWxjbG9jayAvIDIpIC8gc2lnLT5waXhl bGNsb2NrOwotCQkJaWYgKGRpdiA9PSAwKQotCQkJCWRpdiA9IDE7Ci0KLQkJCWNsa2dlbjAgPSBk aXYgPDwgNDsKKwkJCXJldCA9IHNldF9kaV9wcmVfY2xrX3JhdGUoZGksIHNpZyk7CisJCQlpZiAo cmV0IDwgMCkKKwkJCQlyZXR1cm4gcmV0OworCQkJY2xrZ2VuMCA9IHJldDsKIAkJfQogCX0gZWxz ZSB7CiAJCS8qCkBAIC00NzAsMTkgKzU0OSwxMiBAQCBzdGF0aWMgdm9pZCBpcHVfZGlfY29uZmln X2Nsb2NrKHN0cnVjdCBpcHVfZGkgKmRpLAogCiAJCQljbGtnZW4wID0gZGl2IDw8IDQ7CiAJCX0g ZWxzZSB7Ci0JCQl1bnNpZ25lZCBsb25nIGluX3JhdGU7Ci0JCQl1bnNpZ25lZCBkaXY7Ci0KIAkJ CWNsayA9IGRpLT5jbGtfZGk7CiAKLQkJCWNsa19zZXRfcmF0ZShjbGssIHNpZy0+cGl4ZWxjbG9j ayk7Ci0KLQkJCWluX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY2xrKTsKLQkJCWRpdiA9IChpbl9yYXRl ICsgc2lnLT5waXhlbGNsb2NrIC8gMikgLyBzaWctPnBpeGVsY2xvY2s7Ci0JCQlpZiAoZGl2ID09 IDApCi0JCQkJZGl2ID0gMTsKLQotCQkJY2xrZ2VuMCA9IGRpdiA8PCA0OworCQkJcmV0ID0gc2V0 X2RpX3ByZV9jbGtfcmF0ZShkaSwgc2lnKTsKKwkJCWlmIChyZXQgPCAwKQorCQkJCXJldHVybiBy ZXQ7CisJCQljbGtnZW4wID0gcmV0OwogCQl9CiAJfQogCkBAIC01MTMsNiArNTg1LDggQEAgc3Rh dGljIHZvaWQgaXB1X2RpX2NvbmZpZ19jbG9jayhzdHJ1Y3QgaXB1X2RpICpkaSwKIAkJY2xrX2dl dF9yYXRlKGRpLT5jbGtfZGkpLAogCQljbGsgPT0gZGktPmNsa19kaSA/ICJESSIgOiAiSVBVIiwK IAkJY2xrX2dldF9yYXRlKGRpLT5jbGtfZGlfcGl4ZWwpIC8gKGNsa2dlbjAgPj4gNCkpOworCisJ cmV0dXJuIDA7CiB9CiAKIC8qCkBAIC01NDYsNiArNjIwLDcgQEAgaW50IGlwdV9kaV9pbml0X3N5 bmNfcGFuZWwoc3RydWN0IGlwdV9kaSAqZGksIHN0cnVjdCBpcHVfZGlfc2lnbmFsX2NmZyAqc2ln KQogCXUzMiByZWc7CiAJdTMyIGRpX2dlbiwgdnN5bmNfY250OwogCXUzMiBkaXY7CisJaW50IHJl dCA9IDA7CiAKIAlkZXZfZGJnKGRpLT5pcHUtPmRldiwgImRpJWQ6IHBhbmVsIHNpemUgPSAlZCB4 ICVkXG4iLAogCQlkaS0+aWQsIHNpZy0+d2lkdGgsIHNpZy0+aGVpZ2h0KTsKQEAgLTU2NCw3ICs2 MzksOSBAQCBpbnQgaXB1X2RpX2luaXRfc3luY19wYW5lbChzdHJ1Y3QgaXB1X2RpICpkaSwgc3Ry dWN0IGlwdV9kaV9zaWduYWxfY2ZnICpzaWcpCiAKIAltdXRleF9sb2NrKCZkaV9tdXRleCk7CiAK LQlpcHVfZGlfY29uZmlnX2Nsb2NrKGRpLCBzaWcpOworCXJldCA9IGlwdV9kaV9jb25maWdfY2xv Y2soZGksIHNpZyk7CisJaWYgKHJldCkKKwkJZ290byB1bmxvY2s7CiAKIAlkaXYgPSBpcHVfZGlf cmVhZChkaSwgRElfQlNfQ0xLR0VOMCkgJiAweGZmZjsKIAlkaXYgPSBkaXYgLyAxNjsJCS8qIE5v dyBkaXZpZGVyIGlzIGludGVnZXIgcG9ydGlvbiAqLwpAQCAtNjQxLDkgKzcxOCw5IEBAIGludCBp cHVfZGlfaW5pdF9zeW5jX3BhbmVsKHN0cnVjdCBpcHVfZGkgKmRpLCBzdHJ1Y3QgaXB1X2RpX3Np Z25hbF9jZmcgKnNpZykKIAogCWlwdV9kaV93cml0ZShkaSwgcmVnLCBESV9QT0wpOwogCit1bmxv Y2s6CiAJbXV0ZXhfdW5sb2NrKCZkaV9tdXRleCk7Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gcmV0 OwogfQogRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2RpX2luaXRfc3luY19wYW5lbCk7CiAKLS0gCjEu Ny45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==