From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t 1/4] lib/igt_pm: Make exit handlers signal safe Date: Mon, 23 Jul 2018 12:46:55 +0100 Message-ID: <20180723114658.13025-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id 854E56E15B for ; Mon, 23 Jul 2018 11:47:04 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id e7-v6so380571wrs.9 for ; Mon, 23 Jul 2018 04:47:04 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCklHVCBsb2dn aW5nIGhlbHBlcnMgYXJlIG5vdCBzaWduYWwgc2FmZSBzbyBhdm9pZCBjYWxsaW5nIHRoZW0gZnJv bSBleGl0CmhhbmRsZXJzLgoKQXQgdGhlIHNhbWUgdGltZSByZWZhY3RvciB0aGUgY29kZSBhIGJp dCB0byBlbmFibGUgZm9sbG93aW5nIHBhdGNoZXMuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGxpYi9pZ3RfcG0uYyB8IDc3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saWIvaWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKaW5kZXggOGFjMTMyMjY5ZDc5Li42ZjNiMGEy ZDg5N2QgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfcG0uYworKysgYi9saWIvaWd0X3BtLmMKQEAgLTY2 LDMzICs2Niw0NyBAQCBlbnVtIHsKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVf cG93ZXJfc2F2ZVs2NF07CiBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRy b2xbNjRdOwogCi1zdGF0aWMgdm9pZCBfX2lndF9wbV9hdWRpb19ydW50aW1lX2V4aXRfaGFuZGxl cihpbnQgc2lnKQorc3RhdGljIGludCBfX2lndF9wbV9hdWRpb19yZXN0b3JlX3J1bnRpbWVfcG0o dm9pZCkKIHsKIAlpbnQgZmQ7CiAKLQlpZ3RfZGVidWcoIlJlc3RvcmluZyBhdWRpbyBwb3dlciBt YW5hZ2VtZW50IHRvICclcycgYW5kICclcydcbiIsCi0JCSAgX19pZ3RfcG1fYXVkaW9fcnVudGlt ZV9wb3dlcl9zYXZlLAotCQkgIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CisJaWYg KCFfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmVbMF0pCisJCXJldHVybiAwOwogCiAJ ZmQgPSBvcGVuKCIvc3lzL21vZHVsZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRlcnMvcG93ZXJfc2F2 ZSIsIE9fV1JPTkxZKTsKIAlpZiAoZmQgPCAwKQotCQlyZXR1cm47CisJCXJldHVybiBlcnJubzsK KwogCWlmICh3cml0ZShmZCwgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAogCQkg IHN0cmxlbihfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmUpKSAhPQotCSAgICBzdHJs ZW4oX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKSkKLQkJaWd0X3dhcm4oIkZhaWxl ZCB0byByZXN0b3JlIGF1ZGlvIHBvd2VyX3NhdmUgdG8gJyVzJ1xuIiwKLQkJCSBfX2lndF9wbV9h dWRpb19ydW50aW1lX3Bvd2VyX3NhdmUpOworCSAgICBzdHJsZW4oX19pZ3RfcG1fYXVkaW9fcnVu dGltZV9wb3dlcl9zYXZlKSkgeworCQljbG9zZShmZCk7CisJCXJldHVybiBlcnJubzsKKwl9CisK IAljbG9zZShmZCk7CiAKIAlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6 MDMuMC9wb3dlci9jb250cm9sIiwgT19XUk9OTFkpOwogCWlmIChmZCA8IDApCi0JCXJldHVybjsK KwkJcmV0dXJuIGVycm5vOworCiAJaWYgKHdyaXRlKGZkLCBfX2lndF9wbV9hdWRpb19ydW50aW1l X2NvbnRyb2wsCiAJCSAgc3RybGVuKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCkpICE9 Ci0JICAgIHN0cmxlbihfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2wpKQotCQlpZ3Rfd2Fy bigiRmFpbGVkIHRvIHJlc3RvcmUgYXVkaW8gY29udHJvbCB0byAnJXMnXG4iLAotCQkJIF9faWd0 X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CisJICAgIHN0cmxlbihfX2lndF9wbV9hdWRpb19y dW50aW1lX2NvbnRyb2wpKSB7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuIGVycm5vOworCX0KKwog CWNsb3NlKGZkKTsKKworCV9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZVswXSA9IDA7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9l eGl0X2hhbmRsZXIoaW50IHNpZykKK3sKKwlfX2lndF9wbV9hdWRpb19yZXN0b3JlX3J1bnRpbWVf cG0oKTsKIH0KIAogc3RhdGljIHZvaWQgc3RyY2hvbXAoY2hhciAqc3RyKQpAQCAtMjk3LDMzICsz MTEsNDggQEAgaW50IHBtX3N0YXR1c19mZCA9IC0xOwogc3RhdGljIGNoYXIgX19pZ3RfcG1fcnVu dGltZV9hdXRvc3VzcGVuZFs2NF07CiBzdGF0aWMgY2hhciBfX2lndF9wbV9ydW50aW1lX2NvbnRy b2xbNjRdOwogCi1zdGF0aWMgdm9pZCBfX2lndF9wbV9ydW50aW1lX2V4aXRfaGFuZGxlcihpbnQg c2lnKQorc3RhdGljIGludCBfX2lndF9yZXN0b3JlX3J1bnRpbWVfcG0odm9pZCkKIHsKIAlpbnQg ZmQ7CiAKLQlpZ3RfZGVidWcoIlJlc3RvcmluZyBydW50aW1lIG1hbmFnZW1lbnQgdG8gJyVzJyBh bmQgJyVzJ1xuIiwKLQkJICBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLAotCQkgIF9faWd0 X3BtX3J1bnRpbWVfY29udHJvbCk7CisJaWYgKHBtX3N0YXR1c19mZCA8IDApCisJCXJldHVybiAw OwogCiAJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2F1dG9zdXNwZW5kX2RlbGF5X21zIiwgT19XUk9O TFkpOwogCWlmIChmZCA8IDApCi0JCXJldHVybjsKKwkJcmV0dXJuIGVycm5vOworCiAJaWYgKHdy aXRlKGZkLCBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLAogCQkgIHN0cmxlbihfX2lndF9w bV9ydW50aW1lX2F1dG9zdXNwZW5kKSkgIT0KLQkgICAgc3RybGVuKF9faWd0X3BtX3J1bnRpbWVf YXV0b3N1c3BlbmQpKQotCQlpZ3Rfd2FybigiRmFpbGVkIHRvIHJlc3RvcmUgcnVudGltZSBwbSBh dXRvc3VzcGVuZCBkZWxheSB0byAnJXMnXG4iLAotCQkJIF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1 c3BlbmQpOworCSAgICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCkpIHsKKwkJ Y2xvc2UoZmQpOworCQlyZXR1cm4gZXJybm87CisJfQorCiAJY2xvc2UoZmQpOwogCiAJZmQgPSBv cGVuKFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1dST05MWSk7CiAJaWYgKGZkIDwgMCkKLQkJcmV0 dXJuOworCQlyZXR1cm4gZXJybm87CisKIAlpZiAod3JpdGUoZmQsIF9faWd0X3BtX3J1bnRpbWVf Y29udHJvbCwKIAkJICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9jb250cm9sKSkgIT0KLQkgICAg c3RybGVuKF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCkpCi0JCWlndF93YXJuKCJGYWlsZWQgdG8g cmVzdG9yZSBydW50aW1lIHBtIGNvbnRyb2wgdG8gJyVzJ1xuIiwKLQkJCSBfX2lndF9wbV9ydW50 aW1lX2NvbnRyb2wpOworCSAgICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9jb250cm9sKSkgewor CQljbG9zZShmZCk7CisJCXJldHVybiBlcnJubzsKKwl9CisKIAljbG9zZShmZCk7CisKKwljbG9z ZShwbV9zdGF0dXNfZmQpOworCXBtX3N0YXR1c19mZCA9IC0xOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIF9faWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKGludCBzaWcpCit7CisJ X19pZ3RfcmVzdG9yZV9ydW50aW1lX3BtKCk7CiB9CiAKIC8qKgotLSAKMi4xNy4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id B2C806E192 for ; Mon, 23 Jul 2018 11:47:04 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id c13-v6so408306wrt.1 for ; Mon, 23 Jul 2018 04:47:04 -0700 (PDT) From: Tvrtko Ursulin Date: Mon, 23 Jul 2018 12:46:55 +0100 Message-Id: <20180723114658.13025-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t 1/4] lib/igt_pm: Make exit handlers signal safe List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCklHVCBsb2dn aW5nIGhlbHBlcnMgYXJlIG5vdCBzaWduYWwgc2FmZSBzbyBhdm9pZCBjYWxsaW5nIHRoZW0gZnJv bSBleGl0CmhhbmRsZXJzLgoKQXQgdGhlIHNhbWUgdGltZSByZWZhY3RvciB0aGUgY29kZSBhIGJp dCB0byBlbmFibGUgZm9sbG93aW5nIHBhdGNoZXMuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGxpYi9pZ3RfcG0uYyB8IDc3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saWIvaWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKaW5kZXggOGFjMTMyMjY5ZDc5Li42ZjNiMGEy ZDg5N2QgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfcG0uYworKysgYi9saWIvaWd0X3BtLmMKQEAgLTY2 LDMzICs2Niw0NyBAQCBlbnVtIHsKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVf cG93ZXJfc2F2ZVs2NF07CiBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRy b2xbNjRdOwogCi1zdGF0aWMgdm9pZCBfX2lndF9wbV9hdWRpb19ydW50aW1lX2V4aXRfaGFuZGxl cihpbnQgc2lnKQorc3RhdGljIGludCBfX2lndF9wbV9hdWRpb19yZXN0b3JlX3J1bnRpbWVfcG0o dm9pZCkKIHsKIAlpbnQgZmQ7CiAKLQlpZ3RfZGVidWcoIlJlc3RvcmluZyBhdWRpbyBwb3dlciBt YW5hZ2VtZW50IHRvICclcycgYW5kICclcydcbiIsCi0JCSAgX19pZ3RfcG1fYXVkaW9fcnVudGlt ZV9wb3dlcl9zYXZlLAotCQkgIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CisJaWYg KCFfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmVbMF0pCisJCXJldHVybiAwOwogCiAJ ZmQgPSBvcGVuKCIvc3lzL21vZHVsZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRlcnMvcG93ZXJfc2F2 ZSIsIE9fV1JPTkxZKTsKIAlpZiAoZmQgPCAwKQotCQlyZXR1cm47CisJCXJldHVybiBlcnJubzsK KwogCWlmICh3cml0ZShmZCwgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAogCQkg IHN0cmxlbihfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmUpKSAhPQotCSAgICBzdHJs ZW4oX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKSkKLQkJaWd0X3dhcm4oIkZhaWxl ZCB0byByZXN0b3JlIGF1ZGlvIHBvd2VyX3NhdmUgdG8gJyVzJ1xuIiwKLQkJCSBfX2lndF9wbV9h dWRpb19ydW50aW1lX3Bvd2VyX3NhdmUpOworCSAgICBzdHJsZW4oX19pZ3RfcG1fYXVkaW9fcnVu dGltZV9wb3dlcl9zYXZlKSkgeworCQljbG9zZShmZCk7CisJCXJldHVybiBlcnJubzsKKwl9CisK IAljbG9zZShmZCk7CiAKIAlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6 MDMuMC9wb3dlci9jb250cm9sIiwgT19XUk9OTFkpOwogCWlmIChmZCA8IDApCi0JCXJldHVybjsK KwkJcmV0dXJuIGVycm5vOworCiAJaWYgKHdyaXRlKGZkLCBfX2lndF9wbV9hdWRpb19ydW50aW1l X2NvbnRyb2wsCiAJCSAgc3RybGVuKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCkpICE9 Ci0JICAgIHN0cmxlbihfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2wpKQotCQlpZ3Rfd2Fy bigiRmFpbGVkIHRvIHJlc3RvcmUgYXVkaW8gY29udHJvbCB0byAnJXMnXG4iLAotCQkJIF9faWd0 X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CisJICAgIHN0cmxlbihfX2lndF9wbV9hdWRpb19y dW50aW1lX2NvbnRyb2wpKSB7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuIGVycm5vOworCX0KKwog CWNsb3NlKGZkKTsKKworCV9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZVswXSA9IDA7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9l eGl0X2hhbmRsZXIoaW50IHNpZykKK3sKKwlfX2lndF9wbV9hdWRpb19yZXN0b3JlX3J1bnRpbWVf cG0oKTsKIH0KIAogc3RhdGljIHZvaWQgc3RyY2hvbXAoY2hhciAqc3RyKQpAQCAtMjk3LDMzICsz MTEsNDggQEAgaW50IHBtX3N0YXR1c19mZCA9IC0xOwogc3RhdGljIGNoYXIgX19pZ3RfcG1fcnVu dGltZV9hdXRvc3VzcGVuZFs2NF07CiBzdGF0aWMgY2hhciBfX2lndF9wbV9ydW50aW1lX2NvbnRy b2xbNjRdOwogCi1zdGF0aWMgdm9pZCBfX2lndF9wbV9ydW50aW1lX2V4aXRfaGFuZGxlcihpbnQg c2lnKQorc3RhdGljIGludCBfX2lndF9yZXN0b3JlX3J1bnRpbWVfcG0odm9pZCkKIHsKIAlpbnQg ZmQ7CiAKLQlpZ3RfZGVidWcoIlJlc3RvcmluZyBydW50aW1lIG1hbmFnZW1lbnQgdG8gJyVzJyBh bmQgJyVzJ1xuIiwKLQkJICBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLAotCQkgIF9faWd0 X3BtX3J1bnRpbWVfY29udHJvbCk7CisJaWYgKHBtX3N0YXR1c19mZCA8IDApCisJCXJldHVybiAw OwogCiAJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2F1dG9zdXNwZW5kX2RlbGF5X21zIiwgT19XUk9O TFkpOwogCWlmIChmZCA8IDApCi0JCXJldHVybjsKKwkJcmV0dXJuIGVycm5vOworCiAJaWYgKHdy aXRlKGZkLCBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLAogCQkgIHN0cmxlbihfX2lndF9w bV9ydW50aW1lX2F1dG9zdXNwZW5kKSkgIT0KLQkgICAgc3RybGVuKF9faWd0X3BtX3J1bnRpbWVf YXV0b3N1c3BlbmQpKQotCQlpZ3Rfd2FybigiRmFpbGVkIHRvIHJlc3RvcmUgcnVudGltZSBwbSBh dXRvc3VzcGVuZCBkZWxheSB0byAnJXMnXG4iLAotCQkJIF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1 c3BlbmQpOworCSAgICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCkpIHsKKwkJ Y2xvc2UoZmQpOworCQlyZXR1cm4gZXJybm87CisJfQorCiAJY2xvc2UoZmQpOwogCiAJZmQgPSBv cGVuKFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1dST05MWSk7CiAJaWYgKGZkIDwgMCkKLQkJcmV0 dXJuOworCQlyZXR1cm4gZXJybm87CisKIAlpZiAod3JpdGUoZmQsIF9faWd0X3BtX3J1bnRpbWVf Y29udHJvbCwKIAkJICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9jb250cm9sKSkgIT0KLQkgICAg c3RybGVuKF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCkpCi0JCWlndF93YXJuKCJGYWlsZWQgdG8g cmVzdG9yZSBydW50aW1lIHBtIGNvbnRyb2wgdG8gJyVzJ1xuIiwKLQkJCSBfX2lndF9wbV9ydW50 aW1lX2NvbnRyb2wpOworCSAgICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9jb250cm9sKSkgewor CQljbG9zZShmZCk7CisJCXJldHVybiBlcnJubzsKKwl9CisKIAljbG9zZShmZCk7CisKKwljbG9z ZShwbV9zdGF0dXNfZmQpOworCXBtX3N0YXR1c19mZCA9IC0xOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIF9faWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKGludCBzaWcpCit7CisJ X19pZ3RfcmVzdG9yZV9ydW50aW1lX3BtKCk7CiB9CiAKIC8qKgotLSAKMi4xNy4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcg bGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK