From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD9B3C282DD for ; Wed, 8 Jan 2020 15:24:23 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A86D42072A for ; Wed, 8 Jan 2020 15:24:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A86D42072A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ipDBo-0004hy-MY; Wed, 08 Jan 2020 15:24:08 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ipDBm-0004ge-Ii for xen-devel@lists.xenproject.org; Wed, 08 Jan 2020 15:24:06 +0000 X-Inumbo-ID: d5d35270-322a-11ea-8599-bc764e2007e4 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id d5d35270-322a-11ea-8599-bc764e2007e4; Wed, 08 Jan 2020 15:23:35 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id D0BE3AE79; Wed, 8 Jan 2020 15:23:32 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Wed, 8 Jan 2020 16:23:27 +0100 Message-Id: <20200108152328.27194-9-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20200108152328.27194-1-jgross@suse.com> References: <20200108152328.27194-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v2 8/9] xen/sched: eliminate sched_tick_suspend() and sched_tick_resume() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Dario Faggioli , Jan Beulich , Volodymyr Babchuk , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" c2NoZWRfdGlja19zdXNwZW5kKCkgYW5kIHNjaGVkX3RpY2tfcmVzdW1lKCkgb25seSBjYWxsIHJj dSByZWxhdGVkCmZ1bmN0aW9ucywgc28gZWxpbWluYXRlIHRoZW0gYW5kIGRvIHRoZSByY3VfaWRs ZV90aW1lciooKSBjYWxsaW5nIGluCnJjdV9pZGxlX1tlbnRlcnxleGl0XSgpLgoKU2lnbmVkLW9m Zi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGFyaW8g RmFnZ2lvbGkgPGRmYWdnaW9saUBzdXNlLmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVs aWVuQHhlbi5vcmc+CkFja2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy aXguY29tPgotLS0KIHhlbi9hcmNoL2FybS9kb21haW4uYyAgICAgICAgIHwgIDYgKysrLS0tCiB4 ZW4vYXJjaC94ODYvYWNwaS9jcHVfaWRsZS5jICB8IDE1ICsrKysrKysrLS0tLS0tLQogeGVuL2Fy Y2gveDg2L2NwdS9td2FpdC1pZGxlLmMgfCAgOCArKysrLS0tLQogeGVuL2NvbW1vbi9yY3VwZGF0 ZS5jICAgICAgICAgfCAgNyArKysrKy0tCiB4ZW4vY29tbW9uL3NjaGVkL2NvcmUuYyAgICAgICB8 IDEyIC0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUveGVuL3JjdXBkYXRlLmggICAgfCAgMyAtLS0K IHhlbi9pbmNsdWRlL3hlbi9zY2hlZC5oICAgICAgIHwgIDIgLS0KIDcgZmlsZXMgY2hhbmdlZCwg MjAgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv YXJtL2RvbWFpbi5jIGIveGVuL2FyY2gvYXJtL2RvbWFpbi5jCmluZGV4IGMwYTEzYWEwYWIuLmFh M2RmM2IzYmEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9kb21haW4uYworKysgYi94ZW4vYXJj aC9hcm0vZG9tYWluLmMKQEAgLTQ2LDggKzQ2LDggQEAgc3RhdGljIHZvaWQgZG9faWRsZSh2b2lk KQogewogICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAKLSAgICBz Y2hlZF90aWNrX3N1c3BlbmQoKTsKLSAgICAvKiBzY2hlZF90aWNrX3N1c3BlbmQoKSBjYW4gcmFp c2UgVElNRVJfU09GVElSUS4gUHJvY2VzcyBpdCBub3cuICovCisgICAgcmN1X2lkbGVfZW50ZXIo Y3B1KTsKKyAgICAvKiByY3VfaWRsZV9lbnRlcigpIGNhbiByYWlzZSBUSU1FUl9TT0ZUSVJRLiBQ cm9jZXNzIGl0IG5vdy4gKi8KICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKIAogICAg IGxvY2FsX2lycV9kaXNhYmxlKCk7CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyB2b2lkIGRvX2lk bGUodm9pZCkKICAgICB9CiAgICAgbG9jYWxfaXJxX2VuYWJsZSgpOwogCi0gICAgc2NoZWRfdGlj a19yZXN1bWUoKTsKKyAgICByY3VfaWRsZV9leGl0KGNwdSk7CiB9CiAKIHZvaWQgaWRsZV9sb29w KHZvaWQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYWNwaS9jcHVfaWRsZS5jIGIveGVuL2Fy Y2gveDg2L2FjcGkvY3B1X2lkbGUuYwppbmRleCA1ZWRkMTg0NGY0Li4yNjc2ZjBkN2RhIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvYWNwaS9jcHVfaWRsZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9h Y3BpL2NwdV9pZGxlLmMKQEAgLTU5OSw3ICs1OTksOCBAQCB2b2lkIHVwZGF0ZV9pZGxlX3N0YXRz KHN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wb3dlciAqcG93ZXIsCiAKIHN0YXRpYyB2b2lkIGFjcGlf cHJvY2Vzc29yX2lkbGUodm9pZCkKIHsKLSAgICBzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfcG93ZXIg KnBvd2VyID0gcHJvY2Vzc29yX3Bvd2Vyc1tzbXBfcHJvY2Vzc29yX2lkKCldOworICAgIHVuc2ln bmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgc3RydWN0IGFjcGlfcHJvY2Vz c29yX3Bvd2VyICpwb3dlciA9IHByb2Nlc3Nvcl9wb3dlcnNbY3B1XTsKICAgICBzdHJ1Y3QgYWNw aV9wcm9jZXNzb3JfY3ggKmN4ID0gTlVMTDsKICAgICBpbnQgbmV4dF9zdGF0ZTsKICAgICB1aW50 NjRfdCB0MSwgdDIgPSAwOwpAQCAtNjQ4LDggKzY0OSw4IEBAIHN0YXRpYyB2b2lkIGFjcGlfcHJv Y2Vzc29yX2lkbGUodm9pZCkKIAogICAgIGNwdWZyZXFfZGJzX3RpbWVyX3N1c3BlbmQoKTsKIAot ICAgIHNjaGVkX3RpY2tfc3VzcGVuZCgpOwotICAgIC8qIHNjaGVkX3RpY2tfc3VzcGVuZCgpIGNh biByYWlzZSBUSU1FUl9TT0ZUSVJRLiBQcm9jZXNzIGl0IG5vdy4gKi8KKyAgICByY3VfaWRsZV9l bnRlcihjcHUpOworICAgIC8qIHJjdV9pZGxlX2VudGVyKCkgY2FuIHJhaXNlIFRJTUVSX1NPRlRJ UlEuIFByb2Nlc3MgaXQgbm93LiAqLwogICAgIHByb2Nlc3NfcGVuZGluZ19zb2Z0aXJxcygpOwog CiAgICAgLyoKQEAgLTY1OCwxMCArNjU5LDEwIEBAIHN0YXRpYyB2b2lkIGFjcGlfcHJvY2Vzc29y X2lkbGUodm9pZCkKICAgICAgKi8KICAgICBsb2NhbF9pcnFfZGlzYWJsZSgpOwogCi0gICAgaWYg KCAhY3B1X2lzX2hhbHRhYmxlKHNtcF9wcm9jZXNzb3JfaWQoKSkgKQorICAgIGlmICggIWNwdV9p c19oYWx0YWJsZShjcHUpICkKICAgICB7CiAgICAgICAgIGxvY2FsX2lycV9lbmFibGUoKTsKLSAg ICAgICAgc2NoZWRfdGlja19yZXN1bWUoKTsKKyAgICAgICAgcmN1X2lkbGVfZXhpdChjcHUpOwog ICAgICAgICBjcHVmcmVxX2Ric190aW1lcl9yZXN1bWUoKTsKICAgICAgICAgcmV0dXJuOwogICAg IH0KQEAgLTc4Niw3ICs3ODcsNyBAQCBzdGF0aWMgdm9pZCBhY3BpX3Byb2Nlc3Nvcl9pZGxlKHZv aWQpCiAgICAgICAgIC8qIE5vdyBpbiBDMCAqLwogICAgICAgICBwb3dlci0+bGFzdF9zdGF0ZSA9 ICZwb3dlci0+c3RhdGVzWzBdOwogICAgICAgICBsb2NhbF9pcnFfZW5hYmxlKCk7Ci0gICAgICAg IHNjaGVkX3RpY2tfcmVzdW1lKCk7CisgICAgICAgIHJjdV9pZGxlX2V4aXQoY3B1KTsKICAgICAg ICAgY3B1ZnJlcV9kYnNfdGltZXJfcmVzdW1lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA IC03OTQsNyArNzk1LDcgQEAgc3RhdGljIHZvaWQgYWNwaV9wcm9jZXNzb3JfaWRsZSh2b2lkKQog ICAgIC8qIE5vdyBpbiBDMCAqLwogICAgIHBvd2VyLT5sYXN0X3N0YXRlID0gJnBvd2VyLT5zdGF0 ZXNbMF07CiAKLSAgICBzY2hlZF90aWNrX3Jlc3VtZSgpOworICAgIHJjdV9pZGxlX2V4aXQoY3B1 KTsKICAgICBjcHVmcmVxX2Ric190aW1lcl9yZXN1bWUoKTsKIAogICAgIGlmICggY3B1aWRsZV9j dXJyZW50X2dvdmVybm9yLT5yZWZsZWN0ICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUv bXdhaXQtaWRsZS5jIGIveGVuL2FyY2gveDg2L2NwdS9td2FpdC1pZGxlLmMKaW5kZXggNTI0MTNl NmRhMS4uZjQ5YjA0YzQ1YiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9td2FpdC1pZGxl LmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9td2FpdC1pZGxlLmMKQEAgLTc1NSw4ICs3NTUsOCBA QCBzdGF0aWMgdm9pZCBtd2FpdF9pZGxlKHZvaWQpCiAKIAljcHVmcmVxX2Ric190aW1lcl9zdXNw ZW5kKCk7CiAKLQlzY2hlZF90aWNrX3N1c3BlbmQoKTsKLQkvKiBzY2hlZF90aWNrX3N1c3BlbmQo KSBjYW4gcmFpc2UgVElNRVJfU09GVElSUS4gUHJvY2VzcyBpdCBub3cuICovCisJcmN1X2lkbGVf ZW50ZXIoY3B1KTsKKwkvKiByY3VfaWRsZV9lbnRlcigpIGNhbiByYWlzZSBUSU1FUl9TT0ZUSVJR LiBQcm9jZXNzIGl0IG5vdy4gKi8KIAlwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKIAogCS8q IEludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZCBmb3IgQzIgYW5kIGhpZ2hlciB0cmFuc2l0aW9u cy4gKi8KQEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgdm9pZCBtd2FpdF9pZGxlKHZvaWQpCiAK IAlpZiAoIWNwdV9pc19oYWx0YWJsZShjcHUpKSB7CiAJCWxvY2FsX2lycV9lbmFibGUoKTsKLQkJ c2NoZWRfdGlja19yZXN1bWUoKTsKKwkJcmN1X2lkbGVfZXhpdChjcHUpOwogCQljcHVmcmVxX2Ri c190aW1lcl9yZXN1bWUoKTsKIAkJcmV0dXJuOwogCX0KQEAgLTgwNiw3ICs4MDYsNyBAQCBzdGF0 aWMgdm9pZCBtd2FpdF9pZGxlKHZvaWQpCiAJaWYgKCEobGFwaWNfdGltZXJfcmVsaWFibGVfc3Rh dGVzICYgKDEgPDwgY3N0YXRlKSkpCiAJCWxhcGljX3RpbWVyX29uKCk7CiAKLQlzY2hlZF90aWNr X3Jlc3VtZSgpOworCXJjdV9pZGxlX2V4aXQoY3B1KTsKIAljcHVmcmVxX2Ric190aW1lcl9yZXN1 bWUoKTsKIAogCWlmICggY3B1aWRsZV9jdXJyZW50X2dvdmVybm9yLT5yZWZsZWN0ICkKZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vcmN1cGRhdGUuYyBiL3hlbi9jb21tb24vcmN1cGRhdGUuYwppbmRl eCBhNTYxMDNjNmY3Li5jYjcxMmM4NjkwIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3JjdXBkYXRl LmMKKysrIGIveGVuL2NvbW1vbi9yY3VwZGF0ZS5jCkBAIC00NTksNyArNDU5LDcgQEAgaW50IHJj dV9uZWVkc19jcHUoaW50IGNwdSkKICAqIHBlcmlvZGljYWxseSBwb2tlIHJjdV9wZWRuaW5nKCks IHNvIHRoYXQgaXQgd2lsbCBpbnZva2UgdGhlIGNhbGxiYWNrCiAgKiBub3QgdG9vIGxhdGUgYWZ0 ZXIgdGhlIGVuZCBvZiB0aGUgZ3JhY2UgcGVyaW9kLgogICovCi12b2lkIHJjdV9pZGxlX3RpbWVy X3N0YXJ0KCkKK3N0YXRpYyB2b2lkIHJjdV9pZGxlX3RpbWVyX3N0YXJ0KHZvaWQpCiB7CiAgICAg c3RydWN0IHJjdV9kYXRhICpyZHAgPSAmdGhpc19jcHUocmN1X2RhdGEpOwogCkBAIC00NzUsNyAr NDc1LDcgQEAgdm9pZCByY3VfaWRsZV90aW1lcl9zdGFydCgpCiAgICAgcmRwLT5pZGxlX3RpbWVy X2FjdGl2ZSA9IHRydWU7CiB9CiAKLXZvaWQgcmN1X2lkbGVfdGltZXJfc3RvcCgpCitzdGF0aWMg dm9pZCByY3VfaWRsZV90aW1lcl9zdG9wKHZvaWQpCiB7CiAgICAgc3RydWN0IHJjdV9kYXRhICpy ZHAgPSAmdGhpc19jcHUocmN1X2RhdGEpOwogCkBAIC02MzMsMTAgKzYzMywxMyBAQCB2b2lkIHJj dV9pZGxlX2VudGVyKHVuc2lnbmVkIGludCBjcHUpCiAgICAgICogU2UgdGhlIGNvbW1lbnQgYmVm b3JlIGNwdW1hc2tfYW5kbm90KCkgaW4gIHJjdV9zdGFydF9iYXRjaCgpLgogICAgICAqLwogICAg IHNtcF9tYigpOworCisgICAgcmN1X2lkbGVfdGltZXJfc3RhcnQoKTsKIH0KIAogdm9pZCByY3Vf aWRsZV9leGl0KHVuc2lnbmVkIGludCBjcHUpCiB7CisgICAgcmN1X2lkbGVfdGltZXJfc3RvcCgp OwogICAgIEFTU0VSVChjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnJjdV9jdHJsYmxrLmlkbGVfY3B1 bWFzaykpOwogICAgIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJnJjdV9jdHJsYmxrLmlkbGVfY3B1 bWFzayk7CiB9CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkL2NvcmUuYyBiL3hlbi9jb21t b24vc2NoZWQvY29yZS5jCmluZGV4IDg5NmY4MmY0ZDIuLmQzMmI5YjFiYWEgMTAwNjQ0Ci0tLSBh L3hlbi9jb21tb24vc2NoZWQvY29yZS5jCisrKyBiL3hlbi9jb21tb24vc2NoZWQvY29yZS5jCkBA IC0zMjY4LDE4ICszMjY4LDYgQEAgdm9pZCBzY2hlZHVsZV9kdW1wKHN0cnVjdCBjcHVwb29sICpj KQogICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOwogfQogCi12b2lkIHNj aGVkX3RpY2tfc3VzcGVuZCh2b2lkKQotewotICAgIHJjdV9pZGxlX2VudGVyKHNtcF9wcm9jZXNz b3JfaWQoKSk7Ci0gICAgcmN1X2lkbGVfdGltZXJfc3RhcnQoKTsKLX0KLQotdm9pZCBzY2hlZF90 aWNrX3Jlc3VtZSh2b2lkKQotewotICAgIHJjdV9pZGxlX3RpbWVyX3N0b3AoKTsKLSAgICByY3Vf aWRsZV9leGl0KHNtcF9wcm9jZXNzb3JfaWQoKSk7Ci19Ci0KIHZvaWQgd2FpdCh2b2lkKQogewog ICAgIHNjaGVkdWxlKCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcmN1cGRhdGUuaCBi L3hlbi9pbmNsdWRlL3hlbi9yY3VwZGF0ZS5oCmluZGV4IDEzODUwODY1ZWQuLjE3NGQwNTgxMTMg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9yY3VwZGF0ZS5oCisrKyBiL3hlbi9pbmNsdWRl L3hlbi9yY3VwZGF0ZS5oCkBAIC0xNDgsNyArMTQ4LDQgQEAgaW50IHJjdV9iYXJyaWVyKHZvaWQp Owogdm9pZCByY3VfaWRsZV9lbnRlcih1bnNpZ25lZCBpbnQgY3B1KTsKIHZvaWQgcmN1X2lkbGVf ZXhpdCh1bnNpZ25lZCBpbnQgY3B1KTsKIAotdm9pZCByY3VfaWRsZV90aW1lcl9zdGFydCh2b2lk KTsKLXZvaWQgcmN1X2lkbGVfdGltZXJfc3RvcCh2b2lkKTsKLQogI2VuZGlmIC8qIF9fWEVOX1JD VVBEQVRFX0ggKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oIGIveGVuL2lu Y2x1ZGUveGVuL3NjaGVkLmgKaW5kZXggZDhlOTYxMDk1Zi4uY2Y3YWEzOTg0NCAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgK QEAgLTY5MCw4ICs2OTAsNiBAQCB2b2lkIHNjaGVkX2Rlc3Ryb3lfZG9tYWluKHN0cnVjdCBkb21h aW4gKmQpOwogbG9uZyBzY2hlZF9hZGp1c3Qoc3RydWN0IGRvbWFpbiAqLCBzdHJ1Y3QgeGVuX2Rv bWN0bF9zY2hlZHVsZXJfb3AgKik7CiBsb25nIHNjaGVkX2FkanVzdF9nbG9iYWwoc3RydWN0IHhl bl9zeXNjdGxfc2NoZWR1bGVyX29wICopOwogaW50ICBzY2hlZF9pZCh2b2lkKTsKLXZvaWQgc2No ZWRfdGlja19zdXNwZW5kKHZvaWQpOwotdm9pZCBzY2hlZF90aWNrX3Jlc3VtZSh2b2lkKTsKIHZv aWQgdmNwdV93YWtlKHN0cnVjdCB2Y3B1ICp2KTsKIGxvbmcgdmNwdV95aWVsZCh2b2lkKTsKIHZv aWQgdmNwdV9zbGVlcF9ub3N5bmMoc3RydWN0IHZjcHUgKnYpOwotLSAKMi4xNi40CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==