From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH 07/13 v4] drm/i915: GuC submission setup, phase 1 Date: Thu, 9 Jul 2015 19:29:08 +0100 Message-ID: <1436466554-24806-8-git-send-email-david.s.gordon@intel.com> References: <1436466554-24806-1-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 42D296ED13 for ; Thu, 9 Jul 2015 11:29:51 -0700 (PDT) In-Reply-To: <1436466554-24806-1-git-send-email-david.s.gordon@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+CgpUaGlzIGFkZHMgdGhlIGZpcnN0IG9m IHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZQpHdUMgKHRo ZSBwb29sIG9mIGd1Y19jb250ZXh0IHN0cnVjdHVyZXMpLgoKV2UgY3JlYXRlIGEgR3VDLXNwZWNp ZmljIHdyYXBwZXIgcm91bmQgdGhlIEdFTSBvYmplY3QgYWxsb2NhdG9yIGFzIGFsbApHRU0gb2Jq ZWN0cyBzaGFyZWQgd2l0aCB0aGUgR3VDIG11c3QgYmUgcGlubmVkIGludG8gR0dUVCBzcGFjZSBh dCBhbgphZGRyZXNzIHRoYXQgaXMgTk9UIGluIHRoZSByYW5nZSBbMC4uV09QQ01fU0laRSksIGFz IHRoYXQgcmFuZ2Ugb2YgR0dUVAphZGRyZXNzZXMgaXMgbm90IGFjY2Vzc2libGUgdG8gdGhlIEd1 QyAoZnJvbSB0aGUgR3VDJ3MgcG9pbnQgb2YgdmlldywKaXQncyBwZXJtYW5lbnRseSByZXNlcnZl ZCBmb3Igb3RoZXIgb2JqZWN0cyBzdWNoIGFzIHRoZSBCb290Uk9NICYgU1JBTSkuCgpMYXRlciwg d2Ugd2lsbCBuZWVkIHRvIGFsbG9jYXRlIGFkZGl0aW9uYWwgR3VDLXNoYXJhYmxlIG9iamVjdHMg Zm9yIHRoZQpzdWJtaXNzaW9uIGNsaWVudChzKSBhbmQgdGhlIEd1QydzIGRlYnVnIGxvZy4KCnYy OgogICAgUmVtb3ZlIHJlZHVuZGFudCBpbml0aWFsaXNhdGlvbiBbQ2hyaXMgV2lsc29uXQogICAg RGVmZXIgYWRkaW5nIHN0cnVjdCBtZW1iZXJzIHVudGlsIG5lZWRlZCBbQ2hyaXMgV2lsc29uXQog ICAgTG9jYWwgZnVuY3Rpb25zIHNob3VsZCBwYXNzIGRldl9wcml2IHJhdGhlciB0aGFuIGRldiBb Q2hyaXMgV2lsc29uXQoKdjQ6CiAgICBSZWJhc2VkCgpJc3N1ZTogVklaLTQ4ODQKU2lnbmVkLW9m Zi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmUgR29y ZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMgfCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAgNyArKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgIHwgIDE5ICsrKysrCiA0IGZpbGVz IGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQppbmRleCBlNjA0Y2ZlLi4yM2Y1NjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpA QCAtNDAsNyArNDAsOCBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAogCSAgaW50ZWxf dW5jb3JlLm8KIAogIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBv cnQKLWk5MTUteSArPSBpbnRlbF9ndWNfbG9hZGVyLm8KK2k5MTUteSArPSBpbnRlbF9ndWNfbG9h ZGVyLm8gXAorCSAgaTkxNV9ndWNfc3VibWlzc2lvbi5vCiAKICMgYXV0b2dlbmVyYXRlZCBudWxs IHJlbmRlciBzdGF0ZQogaTkxNS15ICs9IGludGVsX3JlbmRlcnN0YXRlX2dlbjYubyBcCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNzBhMDQwNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAq IENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2Zpcm13 YXJlLmg+CisjaW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5o IgorI2luY2x1ZGUgImludGVsX2d1Yy5oIgorCisvKioKKyAqIGdlbV9hbGxvY2F0ZV9ndWNfb2Jq KCkgLSBBbGxvY2F0ZSBnZW0gb2JqZWN0IGZvciBHdUMgdXNhZ2UKKyAqIEBkZXY6CWRybSBkZXZp Y2UKKyAqIEBzaXplOglzaXplIG9mIG9iamVjdAorICoKKyAqIFRoaXMgaXMgYSB3cmFwcGVyIHRv IGNyZWF0ZSBhIGdlbSBvYmouIEluIG9yZGVyIHRvIHVzZSBpdCBpbnNpZGUgR3VDLCB0aGUKKyAq IG9iamVjdCBuZWVkcyB0byBiZSBwaW5uZWQgbGlmZXRpbWUuIEFsc28gd2UgbXVzdCBwaW4gaXQg dG8gZ3R0IHNwYWNlIG90aGVyCisgKiB0aGFuIFswLCBHVUNfV09QQ01fU0laRV0gYmVjYXVzZSB0 aGlzIHJhbmdlIGlzIHJlc2VydmVkIGluc2lkZSBHdUMuCisgKgorICogUmV0dXJuOglBIGRybV9p OTE1X2dlbV9vYmplY3QgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIE5VTEwuCisgKi8KK3N0YXRp YyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZ2VtX2FsbG9jYXRlX2d1Y19vYmooc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKKwkJCQkJCQl1MzIgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOworCisJb2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgc2l6 ZSk7CisJaWYgKCFvYmopCisJCXJldHVybiBOVUxMOworCisJaWYgKGk5MTVfZ2VtX29iamVjdF9n ZXRfcGFnZXMob2JqKSkgeworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNl KTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYgKGk5MTVfZ2VtX29ial9nZ3R0X3BpbihvYmos IFBBR0VfU0laRSwKKwkJCVBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9TSVpFX1ZBTFVFKSkg eworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwkJcmV0dXJuIE5V TEw7CisJfQorCisJcmV0dXJuIG9iajsKK30KKworLyoqCisgKiBnZW1fcmVsZWFzZV9ndWNfb2Jq KCkgLSBSZWxlYXNlIGdlbSBvYmplY3QgYWxsb2NhdGVkIGZvciBHdUMgdXNhZ2UKKyAqIEBvYmo6 CWdlbSBvYmogdG8gYmUgcmVsZWFzZWQKKyAgKi8KK3N0YXRpYyB2b2lkIGdlbV9yZWxlYXNlX2d1 Y19vYmooc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpZiAoIW9iaikKKwkJ cmV0dXJuOworCisJaWYgKGk5MTVfZ2VtX29ial9pc19waW5uZWQob2JqKSkKKwkJaTkxNV9nZW1f b2JqZWN0X2dndHRfdW5waW4ob2JqKTsKKworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZv YmotPmJhc2UpOworfQorCisvKgorICogU2V0IHVwIHRoZSBtZW1vcnkgcmVzb3VyY2VzIHRvIGJl IHNoYXJlZCB3aXRoIHRoZSBHdUMuICBBdCB0aGlzIHBvaW50LAorICogd2UgcmVxdWlyZSBqdXN0 IG9uZSBvYmplY3QgdGhhdCBjYW4gYmUgbWFwcGVkIHRocm91Z2ggdGhlIEdHVFQuCisgKi8KK2lu dCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWNv bnN0IHNpemVfdCBjdHhzaXplID0gc2l6ZW9mKHN0cnVjdCBndWNfY29udGV4dF9kZXNjKTsKKwlj b25zdCBzaXplX3QgcG9vbHNpemUgPSBHVUNfTUFYX0dQVV9DT05URVhUUyAqIGN0eHNpemU7CisJ Y29uc3Qgc2l6ZV90IGdlbXNpemUgPSByb3VuZF91cChwb29sc2l6ZSwgUEFHRV9TSVpFKTsKKwlz dHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKKworCWlmICghaTkxNS5lbmFi bGVfZ3VjX3N1Ym1pc3Npb24pCisJCXJldHVybiAwOyAvKiBub3QgZW5hYmxlZCAgKi8KKworCWlm IChndWMtPmN0eF9wb29sX29iaikKKwkJcmV0dXJuIDA7IC8qIGFscmVhZHkgYWxsb2NhdGVkICov CisKKwlndWMtPmN0eF9wb29sX29iaiA9IGdlbV9hbGxvY2F0ZV9ndWNfb2JqKGRldl9wcml2LT5k ZXYsIGdlbXNpemUpOworCWlmICghZ3VjLT5jdHhfcG9vbF9vYmopCisJCXJldHVybiAtRU5PTUVN OworCisJaWRhX2luaXQoJmd1Yy0+Y3R4X2lkcyk7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBp OTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVj dCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOworCisJaWYgKGd1Yy0+Y3R4X3Bvb2xf b2JqKQorCQlpZGFfZGVzdHJveSgmZ3VjLT5jdHhfaWRzKTsKKwlnZW1fcmVsZWFzZV9ndWNfb2Jq KGd1Yy0+Y3R4X3Bvb2xfb2JqKTsKKwlndWMtPmN0eF9wb29sX29iaiA9IE5VTEw7Cit9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oCmluZGV4IDI4NDZiNmQuLmJlM2NhZDggMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCkBAIC01Niw2ICs1Niw5IEBAIHN0cnVjdCBpbnRlbF9ndWMgewogCXN0cnVj dCBpbnRlbF9ndWNfZncgZ3VjX2Z3OwogCiAJdWludDMyX3QgbG9nX2ZsYWdzOworCisJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9wb29sX29iajsKKwlzdHJ1Y3QgaWRhIGN0eF9pZHM7 CiB9OwogCiAvKiBpbnRlbF9ndWNfbG9hZGVyLmMgKi8KQEAgLTY0LDQgKzY3LDggQEAgZXh0ZXJu IGludCBpbnRlbF9ndWNfdWNvZGVfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVy biB2b2lkIGludGVsX2d1Y191Y29kZV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0 ZXJuIGNvbnN0IGNoYXIgKmludGVsX2d1Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19m d19zdGF0dXMgc3RhdHVzKTsKIAorLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCitpbnQgaTkx NV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBpOTE1 X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisKICNlbmRpZgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCmluZGV4IDIwODBiY2EuLmU1ZDcx MzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKQEAgLTEyOCw2ICsx MjgsMjEgQEAgc3RhdGljIHZvaWQgc2V0X2d1Y19pbml0X3BhcmFtcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPDwgR1VDX0xPR19WRVJC T1NJVFlfU0hJRlQ7CiAJfQogCisJLyogSWYgR3VDIHNjaGVkdWxpbmcgaXMgZW5hYmxlZCwgc2V0 dXAgcGFyYW1zIGhlcmUuICovCisJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7CisJ CXUzMiBwZ3MgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZGV2X3ByaXYtPmd1Yy5jdHhfcG9v bF9vYmopOworCQl1MzIgY3R4X2luXzE2ID0gR1VDX01BWF9HUFVfQ09OVEVYVFMgLyAxNjsKKwor CQlwZ3MgPj49IFBBR0VfU0hJRlQ7CisJCXBhcmFtc1tHVUNfQ1RMX0NUWElORk9dID0gKHBncyA8 PCBHVUNfQ1RMX0JBU0VfQUREUl9TSElGVCkgfAorCQkJKGN0eF9pbl8xNiA8PCBHVUNfQ1RMX0NU WE5VTV9JTjE2X1NISUZUKTsKKworCQlwYXJhbXNbR1VDX0NUTF9GRUFUVVJFXSB8PSBHVUNfQ1RM X0tFUk5FTF9TVUJNSVNTSU9OUzsKKworCQkvKiBVbm1hc2sgdGhpcyBiaXQgdG8gZW5hYmxlIEd1 QyBzY2hlZHVsZXIgKi8KKwkJcGFyYW1zW0dVQ19DVExfRkVBVFVSRV0gJj0gfkdVQ19DVExfRElT QUJMRV9TQ0hFRFVMRVI7CisJfQorCiAJSTkxNV9XUklURShTT0ZUX1NDUkFUQ0goMCksIDApOwog CiAJZm9yIChpID0gMDsgaSA8IEdVQ19DVExfTUFYX0RXT1JEUzsgaSsrKQpAQCAtNDUwLDYgKzQ2 NSwxMCBAQCBpbnQgaW50ZWxfZ3VjX3Vjb2RlX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAkJYnJlYWs7CiAJfQogCisJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KGRldik7CisJ aWYgKGVycikKKwkJZ290byBmYWlsOworCiAJZXJyID0gZ3VjX3Vjb2RlX3hmZXIoZGV2X3ByaXYp OwogCWlmIChlcnIpCiAJCWdvdG8gZmFpbDsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=