From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH v2 08/11] xen: sched: allow for choosing credit2 runqueues configuration at boot Date: Wed, 06 Apr 2016 19:23:49 +0200 Message-ID: <20160406172349.25877.14008.stgit@Solace.fritz.box> References: <20160406170023.25877.15622.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1anrBM-0001Mq-O3 for xen-devel@lists.xenproject.org; Wed, 06 Apr 2016 17:23:56 +0000 Received: by mail-lf0-f66.google.com with SMTP id e190so5097005lfe.1 for ; Wed, 06 Apr 2016 10:23:54 -0700 (PDT) In-Reply-To: <20160406170023.25877.15622.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: George Dunlap , Juergen Gross , Uma Sharma List-Id: xen-devel@lists.xenproject.org SW4gZmFjdCwgY3JlZGl0MiB1c2VzIENQVSB0b3BvbG9neSB0byBkZWNpZGUgaG93IHRvIGFycmFu Z2UKaXRzIGludGVybmFsIHJ1bnF1ZXVlcy4gQmVmb3JlIHRoaXMgY2hhbmdlLCBvbmx5ICdvbmUg cnVucXVldWUKcGVyIHNvY2tldCcgd2FzIGFsbG93ZWQuIEhvd2V2ZXIsIGV4cGVyaW1lbnRzIGhh dmUgc2hvd24gdGhhdCwKZm9yIGluc3RhbmNlLCBoYXZpbmcgb25lIHJ1bnF1ZXVlIHBlciBwaHlz aWNhbCBjb3JlIGltcHJvdmVzCnBlcmZvcm1hbmNlLCBlc3BlY2lhbGx5IGluIGNhc2UgaHlwZXJ0 aHJlYWRpbmcgaXMgYXZhaWxhYmxlLgoKSW4gZ2VuZXJhbCwgaXQgbWFrZXMgc2Vuc2UgdG8gYWxs b3cgdXNlcnMgdG8gcGljayBvbmUgcnVucXVldWUKYXJyYW5nZW1lbnQgYXQgYm9vdCB0aW1lLCBz byB0aGF0OgogLSBtb3JlIGV4cGVyaW1lbnRzIGNhbiBiZSBlYXNpbHkgcGVyZm9ybWVkIHRvIGV2 ZW4gYmV0dGVyCiAgIGFzc2VzcyBhbmQgaW1wcm92ZSBwZXJmb3JtYW5jZTsKIC0gb25lIGNhbiBz ZWxlY3QgdGhlIGJlc3QgY29uZmlndXJhdGlvbiBmb3IgaGlzIHNwZWNpZmljCiAgIHVzZSBjYXNl IGFuZC9vciBoYXJkd2FyZS4KClRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgYWJvdmUuCgpOb3RlIHRo YXQsIGZvciBjb3JyZWN0bHkgYXJyYW5naW5nIHJ1bnF1ZXVlcyB0byBiZSBwZXItY29yZSwKanVz dCBjaGVja2luZyBjcHVfdG9fY29yZSgpIG9uIHRoZSBob3N0IENQVXMgaXMgbm90IGVub3VnaC4K SW4gZmFjdCwgY29yZXMgKGFuZCBoeXBlcnRocmVhZHMpIG9uIGRpZmZlcmVudCBzb2NrZXRzLCBj YW4KaGF2ZSB0aGUgc2FtZSBjb3JlIChhbmQgdGhyZWFkKSBJRHMhIFdlLCB0aGVyZWZvcmUsIG5l ZWQgdG8KY2hlY2sgd2hldGhlciB0aGUgZnVsbCB0b3BvbG9neSBvZiB0d28gQ1BVcyBtYXRjaGVz LCBmb3IKdGhlbSB0byBiZSBwdXQgaW4gdGhlIHNhbWUgcnVucXVldWUuCgpOb3RlIGFsc28gdGhh dCB0aGUgZGVmYXVsdCAoYWx0aG91Z2ggbm90IGZ1bmN0aW9uYWwpIGZvcgpjcmVkaXQyLCBzaW5j ZSBub3csIGhhcyBiZWVuIHBlci1zb2NrZXQgcnVucXVldWUuIFRoaXMgcGF0Y2gKbGVhdmVzIHRo aW5ncyB0aGF0IHdheSwgdG8gYXZvaWQgbWl4aW5nIHBvbGljeSBhbmQgdGVjaG5pY2FsCmNoYW5n ZXMuCgpGaW5hbGx5LCBpdCB3b3VsZCBiZSBhIG5pY2UgZmVhdHVyZSB0byBiZSBhYmxlIHRvIHNl bGVjdAphIHBhcnRpY3VsYXIgcnVucXVldWUgYXJyYW5nZW1lbnQsIGV2ZW4gd2hlbiBjcmVhdGlu ZyBhCkNyZWRpdDIgY3B1cG9vbC4gVGhpcyBpcyBsZWZ0IGFzIGZ1dHVyZSB3b3JrLgoKU2lnbmVk LW9mZi1ieTogRGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+ClNpZ25l ZC1vZmYtYnk6IFVtYSBTaGFybWEgPHVtYS5zaGFybWE1MjNAZ21haWwuY29tPgotLS0KQ2M6IEdl b3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IFVtYSBTaGFybWEg PHVtYS5zaGFybWE1MjNAZ21haWwuY29tPgpDYzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2Uu Y29tPgotLS0KQ2FobmdlcyBmcm9tIHYxOgogKiBmaXggYnVnIGluIHBhcmFtZXRlciBwYXJzaW5n LCBhbmQgc3RhcnQgdXNpbmcgc3RyY21wKCkKICAgZm9yIHRoYXQsIGFzIHJlcXVlc3RlZCBkdXJp bmcgcmV2aWV3LgotLS0KIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIHwgICAx OSArKysrKysrKysKIHhlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jICAgICAgICAgIHwgICA3NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCA5MCBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4t Y29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rv d24KaW5kZXggY2E3N2UzYi4uMDA0N2Y5NCAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL3hlbi1jb21t YW5kLWxpbmUubWFya2Rvd24KKysrIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rv d24KQEAgLTQ2OSw2ICs0NjksMjUgQEAgY29tYmluYXRpb24gd2l0aCB0aGUgYGxvd19jcmFzaGlu Zm9gIGNvbW1hbmQgbGluZSBvcHRpb24uCiAjIyMgY3JlZGl0MlxfbG9hZFxfd2luZG93XF9zaGlm dAogPiBgPSA8aW50ZWdlcj5gCiAKKyMjIyBjcmVkaXQyXF9ydW5xdWV1ZQorPiBgPSBjb3JlIHwg c29ja2V0IHwgbm9kZSB8IGFsbGAKKworPiBEZWZhdWx0OiBgc29ja2V0YAorCitTcGVjaWZ5IGhv dyBob3N0IENQVXMgYXJlIGFycmFuZ2VkIGluIHJ1bnF1ZXVlcy4gUnVucXVldWVzIGFyZSBrZXB0 CitiYWxhbmNlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIGxvYWQgZ2VuZXJhdGVkIGJ5IHRoZSB2Q1BV cyBydW5uaW5nIG9uCit0aGVtLiBTbWFsbGVyIHJ1bnF1ZXVlcyAoYXMgaW4gd2l0aCBgY29yZWAp IG1lYW5zIG1vcmUgYWNjdXJhdGUgbG9hZAorYmFsYW5jaW5nIChmb3IgaW5zdGFuY2UsIGl0IHdp bGwgZGVhbCBiZXR0ZXIgd2l0aCBoeXBlcnRocmVhZGluZyksCitidXQgYWxzbyBtb3JlIG92ZXJo ZWFkLgorCitBdmFpbGFibGUgYWx0ZXJuYXRpdmVzLCB3aXRoIHRoZWlyIG1lYW5pbmcsIGFyZToK KyogYGNvcmVgOiBvbmUgcnVucXVldWUgcGVyIGVhY2ggcGh5c2ljYWwgY29yZSBvZiB0aGUgaG9z dDsKKyogYHNvY2tldGA6IG9uZSBydW5xdWV1ZSBwZXIgZWFjaCBwaHlzaWNhbCBzb2NrZXQgKHdo aWNoIG9mdGVuLAorICAgICAgICAgICAgYnV0IG5vdCBhbHdheXMsIG1hdGNoZXMgYSBOVU1BIG5v ZGUpIG9mIHRoZSBob3N0OworKiBgbm9kZWA6IG9uZSBydW5xdWV1ZSBwZXIgZWFjaCBOVU1BIG5v ZGUgb2YgdGhlIGhvc3Q7CisqIGBhbGxgOiBqdXN0IG9uZSBydW5xdWV1ZSBzaGFyZWQgYnkgYWxs IHRoZSBsb2dpY2FsIHBDUFVzIG9mCisgICAgICAgICB0aGUgaG9zdAorCiAjIyMgZGJncAogPiBg PSBlaGNpWyA8aW50ZWdlcj4gfCBAcGNpPGJ1cz46PHNsb3Q+LjxmdW5jPiBdYAogCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0 Mi5jCmluZGV4IGE2MWE0NWEuLjIwZjhkMzUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRf Y3JlZGl0Mi5jCisrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCkBAIC04MSwxMCArODEs NiBAQAogICogQ3JlZGl0cyBhcmUgInJlc2V0IiB3aGVuIHRoZSBuZXh0IHZjcHUgaW4gdGhlIHJ1 bnF1ZXVlIGlzIGxlc3MgdGhhbgogICogb3IgZXF1YWwgdG8gemVyby4gIEF0IHRoYXQgcG9pbnQs IGV2ZXJ5b25lJ3MgY3JlZGl0cyBhcmUgImNsaXBwZWQiCiAgKiB0byBhIHNtYWxsIHZhbHVlLCBh bmQgYSBmaXhlZCBjcmVkaXQgaXMgYWRkZWQgdG8gZXZlcnlvbmUuCi0gKgotICogVGhlIHBsYW4g aXMgZm9yIGFsbCBjb3JlcyB0aGF0IHNoYXJlIGFuIEwyIHdpbGwgc2hhcmUgdGhlIHNhbWUKLSAq IHJ1bnF1ZXVlLiAgQXQgdGhlIG1vbWVudCwgdGhlcmUgaXMgb25lIGdsb2JhbCBydW5xdWV1ZSBm b3IgYWxsCi0gKiBjb3Jlcy4KICAqLwogCiAvKgpAQCAtMTkzLDYgKzE4OSw1NSBAQCBzdGF0aWMg aW50IF9fcmVhZF9tb3N0bHkgb3B0X292ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlID0gLTM7CiBp bnRlZ2VyX3BhcmFtKCJjcmVkaXQyX2JhbGFuY2Vfb3ZlciIsIG9wdF9vdmVybG9hZF9iYWxhbmNl X3RvbGVyYW5jZSk7CiAKIC8qCisgKiBSdW5xdWV1ZSBvcmdhbml6YXRpb24uCisgKgorICogVGhl IHZhcmlvdXMgY3B1cyBhcmUgdG8gYmUgYXNzaWduZWQgZWFjaCBvbmUgdG8gYSBydW5xdWV1ZSwg YW5kIHdlCisgKiB3YW50IHRoYXQgdG8gaGFwcGVuIGJhc2luZyBvbiB0b3BvbG9neS4gQXQgdGhl IG1vbWVudCwgaXQgaXMgcG9zc2libGUKKyAqIHRvIGNob29zZSB0byBhcnJhbmdlIHJ1bnF1ZXVl cyB0byBiZToKKyAqCisgKiAtIHBlci1jb3JlOiBtZWFuaW5nIHRoYXQgdGhlcmUgd2lsbCBiZSBv bmUgcnVucXVldWUgcGVyIGVhY2ggcGh5c2ljYWwKKyAqICAgICAgICAgICAgIGNvcmUgb2YgdGhl IGhvc3QuIFRoaXMgd2lsbCBoYXBwZW4gaWYgdGhlIG9wdF9ydW5xdWV1ZQorICogICAgICAgICAg ICAgcGFyYW1ldGVyIGlzIHNldCB0byAnY29yZSc7CisgKgorICogLSBwZXItbm9kZTogbWVhbmlu ZyB0aGF0IHRoZXJlIHdpbGwgYmUgb25lIHJ1bnF1ZXVlIHBlciBlYWNoIHBoeXNpY2FsCisgKiAg ICAgICAgICAgICBOVU1BIG5vZGUgb2YgdGhlIGhvc3QuIFRoaXMgd2lsbCBoYXBwZW4gaWYgdGhl IG9wdF9ydW5xdWV1ZQorICogICAgICAgICAgICAgcGFyYW1ldGVyIGlzIHNldCB0byAnbm9kZSc7 CisgKgorICogLSBwZXItc29ja2V0OiBtZWFuaW5nIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmUgcnVu cXVldWUgcGVyIGVhY2ggcGh5c2ljYWwKKyAqICAgICAgICAgICAgICAgc29ja2V0IChBS0EgcGFj a2FnZSwgd2hpY2ggb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzLCBhbHNvCisgKiAgICAgICAgICAgICAg IG1hdGNoZXMgYSBOVU1BIG5vZGUpIG9mIHRoZSBob3N0OyBUaGlzIHdpbGwgaGFwcGVuIGlmCisg KiAgICAgICAgICAgICAgIHRoZSBvcHRfcnVucXVldWUgcGFyYW1ldGVyIGlzIHNldCB0byAnc29j a2V0JzsKKyAqCisgKiAtIGdsb2JhbDogbWVhbmluZyB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBv bmUgcnVucXVldWUgdG8gd2hpY2ggYWxsIHRoZQorICogICAgICAgICAgIChsb2dpY2FsKSBwcm9j ZXNzb3JzIG9mIHRoZSBob3N0IGJlbG9uZ3MuIFRoaXMgd2lsbCBoYXBwZW4gaWYKKyAqICAgICAg ICAgICB0aGUgb3B0X3J1bnF1ZXVlIHBhcmFtZXRlciBpcyBzZXQgdG8gJ2FsbCcuCisgKgorICog RGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBvcHRfcnVucXVldWUsIHRoZXJlZm9yZSwgY3B1cyB0 aGF0IGFyZSBwYXJ0IG9mCisgKiBlaXRoZXIgdGhlIHNhbWUgcGh5c2ljYWwgY29yZSwgb3Igb2Yg dGhlIHNhbWUgcGh5c2ljYWwgc29ja2V0LCB3aWxsIGJlCisgKiBwdXQgdG9nZXRoZXIgdG8gZm9y bSBydW5xdWV1ZXMuCisgKi8KKyNkZWZpbmUgT1BUX1JVTlFVRVVFX0NPUkUgICAxCisjZGVmaW5l IE9QVF9SVU5RVUVVRV9TT0NLRVQgMgorI2RlZmluZSBPUFRfUlVOUVVFVUVfTk9ERSAgIDMKKyNk ZWZpbmUgT1BUX1JVTlFVRVVFX0FMTCAgICA0CitzdGF0aWMgaW50IF9fcmVhZF9tb3N0bHkgb3B0 X3J1bnF1ZXVlID0gT1BUX1JVTlFVRVVFX1NPQ0tFVDsKKworc3RhdGljIHZvaWQgcGFyc2VfY3Jl ZGl0Ml9ydW5xdWV1ZShjb25zdCBjaGFyICpzKQoreworICAgIGlmICggIXN0cmNtcChzLCAiY29y ZSIpICkKKyAgICAgICAgb3B0X3J1bnF1ZXVlID0gT1BUX1JVTlFVRVVFX0NPUkU7CisgICAgZWxz ZSBpZiAoICFzdHJjbXAocywgInNvY2tldCIpICkKKyAgICAgICAgb3B0X3J1bnF1ZXVlID0gT1BU X1JVTlFVRVVFX1NPQ0tFVDsKKyAgICBlbHNlIGlmICggIXN0cmNtcChzLCAibm9kZSIpICkKKyAg ICAgICAgb3B0X3J1bnF1ZXVlID0gT1BUX1JVTlFVRVVFX05PREU7CisgICAgZWxzZSBpZiAoICFz dHJjbXAocywgImFsbCIpICkKKyAgICAgICAgb3B0X3J1bnF1ZXVlID0gT1BUX1JVTlFVRVVFX0FM TDsKKyAgICBlbHNlCisgICAgICAgIHByaW50aygiV0FSTklORywgdW5yZWNvZ25pemVkIHZhbHVl IG9mIGNyZWRpdDJfcnVucXVldWUgb3B0aW9uIVxuIik7Cit9CitjdXN0b21fcGFyYW0oImNyZWRp dDJfcnVucXVldWUiLCBwYXJzZV9jcmVkaXQyX3J1bnF1ZXVlKTsKKworLyoKICAqIFBlci1ydW5x dWV1ZSBkYXRhCiAgKi8KIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgewpAQCAtMTk3NCw2 ICsyMDE5LDIyIEBAIHN0YXRpYyB2b2lkIGRlYWN0aXZhdGVfcnVucXVldWUoc3RydWN0IGNzY2hl ZDJfcHJpdmF0ZSAqcHJ2LCBpbnQgcnFpKQogICAgIGNwdW1hc2tfY2xlYXJfY3B1KHJxaSwgJnBy di0+YWN0aXZlX3F1ZXVlcyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbF90IHNhbWVfbm9kZSh1 bnNpZ25lZCBpbnQgY3B1YSwgdW5zaWduZWQgaW50IGNwdWIpCit7CisgICAgcmV0dXJuIGNwdV90 b19ub2RlKGNwdWEpID09IGNwdV90b19ub2RlKGNwdWIpOworfQorCitzdGF0aWMgaW5saW5lIGJv b2xfdCBzYW1lX3NvY2tldCh1bnNpZ25lZCBpbnQgY3B1YSwgdW5zaWduZWQgaW50IGNwdWIpCit7 CisgICAgcmV0dXJuIGNwdV90b19zb2NrZXQoY3B1YSkgPT0gY3B1X3RvX3NvY2tldChjcHViKTsK K30KKworc3RhdGljIGlubGluZSBib29sX3Qgc2FtZV9jb3JlKHVuc2lnbmVkIGludCBjcHVhLCB1 bnNpZ25lZCBpbnQgY3B1YikKK3sKKyAgICByZXR1cm4gc2FtZV9zb2NrZXQoY3B1YSwgY3B1Yikg JiYKKyAgICAgICAgICAgY3B1X3RvX2NvcmUoY3B1YSkgPT0gY3B1X3RvX2NvcmUoY3B1Yik7Cit9 CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQKIGNwdV90b19ydW5xdWV1ZShzdHJ1Y3QgY3NjaGVkMl9w cml2YXRlICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCiB7CkBAIC0yMDA2LDcgKzIwNjcsMTAgQEAg Y3B1X3RvX3J1bnF1ZXVlKHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgdW5zaWduZWQgaW50 IGNwdSkKICAgICAgICAgQlVHX09OKGNwdV90b19zb2NrZXQoY3B1KSA9PSBYRU5fSU5WQUxJRF9T T0NLRVRfSUQgfHwKICAgICAgICAgICAgICAgIGNwdV90b19zb2NrZXQocGVlcl9jcHUpID09IFhF Tl9JTlZBTElEX1NPQ0tFVF9JRCk7CiAKLSAgICAgICAgaWYgKCBjcHVfdG9fc29ja2V0KGNwdW1h c2tfZmlyc3QoJnJxZC0+YWN0aXZlKSkgPT0gY3B1X3RvX3NvY2tldChjcHUpICkKKyAgICAgICAg aWYgKCBvcHRfcnVucXVldWUgPT0gT1BUX1JVTlFVRVVFX0FMTCB8fAorICAgICAgICAgICAgIChv cHRfcnVucXVldWUgPT0gT1BUX1JVTlFVRVVFX0NPUkUgJiYgc2FtZV9jb3JlKHBlZXJfY3B1LCBj cHUpKSB8fAorICAgICAgICAgICAgIChvcHRfcnVucXVldWUgPT0gT1BUX1JVTlFVRVVFX1NPQ0tF VCAmJiBzYW1lX3NvY2tldChwZWVyX2NwdSwgY3B1KSkgfHwKKyAgICAgICAgICAgICAob3B0X3J1 bnF1ZXVlID09IE9QVF9SVU5RVUVVRV9OT0RFICYmIHNhbWVfbm9kZShwZWVyX2NwdSwgY3B1KSkg KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yMTcwLDYgKzIyMzQsOCBAQCBjc2No ZWQyX2luaXQoc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgIHByaW50aygiIGxvYWRfd2luZG93 X3NoaWZ0OiAlZFxuIiwgb3B0X2xvYWRfd2luZG93X3NoaWZ0KTsKICAgICBwcmludGsoIiB1bmRl cmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6ICVkXG4iLCBvcHRfdW5kZXJsb2FkX2JhbGFuY2VfdG9s ZXJhbmNlKTsKICAgICBwcmludGsoIiBvdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogJWRcbiIs IG9wdF9vdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZSk7CisgICAgcHJpbnRrKCIgcnVucXVldWVz IGFycmFuZ2VtZW50OiBwZXItJXNcbiIsCisgICAgICAgICAgIG9wdF9ydW5xdWV1ZSA9PSBPUFRf UlVOUVVFVUVfQ09SRSA/ICJjb3JlIiA6ICJzb2NrZXQiKTsKIAogICAgIGlmICggb3B0X2xvYWRf d2luZG93X3NoaWZ0IDwgTE9BREFWR19XSU5ET1dfU0hJRlRfTUlOICkKICAgICB7CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK