From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 3/7] x86/alt: Clean up the assembly used to generate alternatives Date: Mon, 26 Feb 2018 11:35:00 +0000 Message-ID: <1519644904-11349-4-git-send-email-andrew.cooper3@citrix.com> References: <1519644904-11349-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1519644904-11349-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org ICogT24gdGhlIEMgc2lkZSwgc3dpdGNoIHRvIHVzaW5nIGxvY2FsIGxhYmxlcyByYXRoZXIgdGhh biBoYXJkY29kZWQgbnVtYmVycy4KICogUmVuYW1lIHBhcmFtZXRlcnMgYW5kIGxhYmxlcyB0byBi ZSBjb25zaXN0ZW50IHdpdGggYWx0X2luc3RyIG5hbWVzLCBhbmQKICAgY29uc2lzdGVudCBiZXR3 ZWVuIHRoZSB0aGUgQyBhbmQgYXNtIHZlcnNpb25zLgogKiBPbiB0aGUgYXNtIHNpZGUsIGZhY3Rv ciBzb21lIGV4cHJlc3Npb25zIG91dCBpbnRvIG1hY3JvcyB0byBhaWQgY2xhcml0eS4KICogQ29u c2lzdGVudGx5IGRlY2xhcmUgc2VjdGlvbiBhdHRyaWJ1dGVzLgoKTm8gZnVuY3Rpb25hbCBjaGFu Z2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXgu Y29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IEtvbnJhZCBS emVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ0M6IFJvZ2VyIFBhdSBNb25u w6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNv bT4KCnYyOgogKiByZXBsX3tzLGV9ID0+IGFsdF9yZXBsX3tzLGV9CiAqIFVzZSAuTFhFTiU9IHBy ZWZpeCBmb3IgdGhlIEMgbGFibGVzCi0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2 ZS1hc20uaCB8IDU3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUv YXNtLXg4Ni9hbHRlcm5hdGl2ZS5oICAgICB8IDY1ICsrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUtYXNtLmgg Yi94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZlLWFzbS5oCmluZGV4IDY2NDBlODUuLjE1 MGJkMWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUtYXNtLmgK KysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS1hc20uaApAQCAtOSw2MCArOSw2 NyBAQAogICogZW5vdWdoIGluZm9ybWF0aW9uIGZvciB0aGUgYWx0ZXJuYXRpdmVzIHBhdGNoaW5n IGNvZGUgdG8gcGF0Y2ggYW4KICAqIGluc3RydWN0aW9uLiBTZWUgYXBwbHlfYWx0ZXJuYXRpdmVz KCkuCiAgKi8KLS5tYWNybyBhbHRpbnN0cnVjdGlvbl9lbnRyeSBvcmlnIGFsdCBmZWF0dXJlIG9y aWdfbGVuIGFsdF9sZW4KKy5tYWNybyBhbHRpbnN0cnVjdGlvbl9lbnRyeSBvcmlnIHJlcGwgZmVh dHVyZSBvcmlnX2xlbiByZXBsX2xlbgogICAgIC5sb25nIFxvcmlnIC0gLgotICAgIC5sb25nIFxh bHQgLSAuCisgICAgLmxvbmcgXHJlcGwgLSAuCiAgICAgLndvcmQgXGZlYXR1cmUKICAgICAuYnl0 ZSBcb3JpZ19sZW4KLSAgICAuYnl0ZSBcYWx0X2xlbgorICAgIC5ieXRlIFxyZXBsX2xlbgogLmVu ZG0KIAorI2RlZmluZSBvcmlnX2xlbiAgICAgICAgICAgICAgICguTFxAX29yaWdfZSAgICAgICAt ICAgICAuTFxAX29yaWdfcykKKyNkZWZpbmUgcmVwbF9sZW4obnIpICAgICAgICAgICAoLkxcQF9y ZXBsX2VcKCluciAgLSAgICAgLkxcQF9yZXBsX3NcKClucikKKyNkZWZpbmUgZGVjbF9yZXBsKGlu c24sIG5yKSAgICAgLkxcQF9yZXBsX3NcKClucjogaW5zbjsgLkxcQF9yZXBsX2VcKClucjoKKwog Lm1hY3JvIEFMVEVSTkFUSVZFIG9sZGluc3RyLCBuZXdpbnN0ciwgZmVhdHVyZQotLkxvbGRfc3Rh cnRfXEA6CisuTFxAX29yaWdfczoKICAgICBcb2xkaW5zdHIKLS5Mb2xkX2VuZF9cQDoKKy5MXEBf b3JpZ19lOgogCiAgICAgLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsICJhIiwgQHByb2di aXRzCi0gICAgYWx0aW5zdHJ1Y3Rpb25fZW50cnkgLkxvbGRfc3RhcnRfXEAsIC5MbmV3X3N0YXJ0 X1xALCBcZmVhdHVyZSwgXAotICAgICAgICAoLkxvbGRfZW5kX1xAIC0gLkxvbGRfc3RhcnRfXEAp LCAoLkxuZXdfZW5kX1xAIC0gLkxuZXdfc3RhcnRfXEApCisgICAgYWx0aW5zdHJ1Y3Rpb25fZW50 cnkgLkxcQF9vcmlnX3MsIC5MXEBfcmVwbF9zMSwgXGZlYXR1cmUsIFwKKyAgICAgICAgb3JpZ19s ZW4sIHJlcGxfbGVuKDEpCiAKICAgICAuc2VjdGlvbiAuZGlzY2FyZCwgImEiLCBAcHJvZ2JpdHMK ICAgICAvKiBBc3NlbWJsZXItdGltZSBjaGVjayB0aGF0IFxuZXdpbnN0ciBpc24ndCBsb25nZXIg dGhhbiBcb2xkaW5zdHIuICovCi0gICAgLmJ5dGUgMHhmZiArICguTG5ld19lbmRfXEAgLSAuTG5l d19zdGFydF9cQCkgLSAoLkxvbGRfZW5kX1xAIC0gLkxvbGRfc3RhcnRfXEApCisgICAgLmJ5dGUg MHhmZiArIHJlcGxfbGVuKDEpIC0gb3JpZ19sZW4KIAogICAgIC5zZWN0aW9uIC5hbHRpbnN0cl9y ZXBsYWNlbWVudCwgImF4IiwgQHByb2diaXRzCi0uTG5ld19zdGFydF9cQDoKLSAgICBcbmV3aW5z dHIKLS5MbmV3X2VuZF9cQDoKKworICAgIGRlY2xfcmVwbChcbmV3aW5zdHIsIDEpCisKICAgICAu cG9wc2VjdGlvbgogLmVuZG0KIAogLm1hY3JvIEFMVEVSTkFUSVZFXzIgb2xkaW5zdHIsIG5ld2lu c3RyMSwgZmVhdHVyZTEsIG5ld2luc3RyMiwgZmVhdHVyZTIKLS5Mb2xkX3N0YXJ0X1xAOgorLkxc QF9vcmlnX3M6CiAgICAgXG9sZGluc3RyCi0uTG9sZF9lbmRfXEA6CisuTFxAX29yaWdfZToKIAog ICAgIC5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLCAiYSIsIEBwcm9nYml0cwotICAgIGFs dGluc3RydWN0aW9uX2VudHJ5IC5Mb2xkX3N0YXJ0X1xALCAuTG5ldzFfc3RhcnRfXEAsIFxmZWF0 dXJlMSwgXAotICAgICAgICAoLkxvbGRfZW5kX1xAIC0gLkxvbGRfc3RhcnRfXEApLCAoLkxuZXcx X2VuZF9cQCAtIC5MbmV3MV9zdGFydF9cQCkKLSAgICBhbHRpbnN0cnVjdGlvbl9lbnRyeSAuTG9s ZF9zdGFydF9cQCwgLkxuZXcyX3N0YXJ0X1xALCBcZmVhdHVyZTIsIFwKLSAgICAgICAgKC5Mb2xk X2VuZF9cQCAtIC5Mb2xkX3N0YXJ0X1xAKSwgKC5MbmV3Ml9lbmRfXEAgLSAuTG5ldzJfc3RhcnRf XEApCisKKyAgICBhbHRpbnN0cnVjdGlvbl9lbnRyeSAuTFxAX29yaWdfcywgLkxcQF9yZXBsX3Mx LCBcZmVhdHVyZTEsIFwKKyAgICAgICAgb3JpZ19sZW4sIHJlcGxfbGVuKDEpCisgICAgYWx0aW5z dHJ1Y3Rpb25fZW50cnkgLkxcQF9vcmlnX3MsIC5MXEBfcmVwbF9zMiwgXGZlYXR1cmUyLCBcCisg ICAgICAgIG9yaWdfbGVuLCByZXBsX2xlbigyKQogCiAgICAgLnNlY3Rpb24gLmRpc2NhcmQsICJh IiwgQHByb2diaXRzCiAgICAgLyogQXNzZW1ibGVyLXRpbWUgY2hlY2sgdGhhdCBcbmV3aW5zdHJ7 MSwyfSBhcmVuJ3QgbG9uZ2VyIHRoYW4gXG9sZGluc3RyLiAqLwotICAgIC5ieXRlIDB4ZmYgKyAo LkxuZXcxX2VuZF9cQCAtIC5MbmV3MV9zdGFydF9cQCkgLSAoLkxvbGRfZW5kX1xAIC0gLkxvbGRf c3RhcnRfXEApCi0gICAgLmJ5dGUgMHhmZiArICguTG5ldzJfZW5kX1xAIC0gLkxuZXcyX3N0YXJ0 X1xAKSAtICguTG9sZF9lbmRfXEAgLSAuTG9sZF9zdGFydF9cQCkKKyAgICAuYnl0ZSAweGZmICsg cmVwbF9sZW4oMSkgLSBvcmlnX2xlbgorICAgIC5ieXRlIDB4ZmYgKyByZXBsX2xlbigyKSAtIG9y aWdfbGVuCiAKICAgICAuc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsICJheCIsIEBwcm9n Yml0cwotLkxuZXcxX3N0YXJ0X1xAOgotICAgIFxuZXdpbnN0cjEKLS5MbmV3MV9lbmRfXEA6Ci0u TG5ldzJfc3RhcnRfXEA6Ci0gICAgXG5ld2luc3RyMgotLkxuZXcyX2VuZF9cQDoKKworICAgIGRl Y2xfcmVwbChcbmV3aW5zdHIxLCAxKQorICAgIGRlY2xfcmVwbChcbmV3aW5zdHIyLCAyKQorCiAg ICAgLnBvcHNlY3Rpb24KIC5lbmRtCiAKKyN1bmRlZiBkZWNsX3JlcGwKKyN1bmRlZiByZXBsX2xl bgorI3VuZGVmIG9yaWdfbGVuCisKICNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KICNlbmRpZiAv KiBfQVNNX1g4Nl9BTFRFUk5BVElWRV9BU01fSF8gKi8KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2 ZS5oCmluZGV4IGQ5NzA2ZmQuLmJjYWQzZWUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvYWx0ZXJuYXRpdmUuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZlLmgK QEAgLTI2LDQ0ICsyNiw0OSBAQCBleHRlcm4gdm9pZCBhcHBseV9hbHRlcm5hdGl2ZXMoY29uc3Qg c3RydWN0IGFsdF9pbnN0ciAqc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGFsdF9pbnN0ciAqZW5kKTsKIGV4dGVybiB2b2lkIGFsdGVybmF0aXZlX2lu c3RydWN0aW9ucyh2b2lkKTsKIAotI2RlZmluZSBPTERJTlNUUihvbGRpbnN0cikgICAgICAiNjYx OlxuXHQiIG9sZGluc3RyICJcbjY2MjpcbiIKKyNkZWZpbmUgT0xESU5TVFIob2xkaW5zdHIpICIu TFhFTiU9X29yaWdfczpcblx0IiBvbGRpbnN0ciAiXG4uTFhFTiU9X29yaWdfZTpcbiIKIAotI2Rl ZmluZSBiX3JlcGxhY2VtZW50KG51bWJlcikgICAiNjYzIiNudW1iZXIKLSNkZWZpbmUgZV9yZXBs YWNlbWVudChudW1iZXIpICAgIjY2NCIjbnVtYmVyCisjZGVmaW5lIGFsdF9vcmlnX2xlbiAgICAg ICAiKC5MWEVOJT1fb3JpZ19lIC0gLkxYRU4lPV9vcmlnX3MpIgorI2RlZmluZSBhbHRfcmVwbF9z KG51bSkgICAgIi5MWEVOJT1fcmVwbF9zIiNudW0KKyNkZWZpbmUgYWx0X3JlcGxfZShudW0pICAg ICIuTFhFTiU9X3JlcGxfZSIjbnVtCisjZGVmaW5lIGFsdF9yZXBsX2xlbihudW0pICAiKCIgYWx0 X3JlcGxfZShudW0pICIgLSAiIGFsdF9yZXBsX3MobnVtKSAiKSIKIAotI2RlZmluZSBhbHRfc2xl biAiNjYyYi02NjFiIgotI2RlZmluZSBhbHRfcmxlbihudW1iZXIpIGVfcmVwbGFjZW1lbnQobnVt YmVyKSJmLSJiX3JlcGxhY2VtZW50KG51bWJlcikiZiIKKyNkZWZpbmUgQUxUSU5TVFJfRU5UUlko ZmVhdHVyZSwgbnVtKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgIiAubG9uZyAuTFhFTiU9X29yaWdfcyAtIC5cbiIgICAgICAgICAgICAgLyogbGFiZWwgICAg ICAgICAgICovIFwKKyAgICAgICAgIiAubG9uZyAiIGFsdF9yZXBsX3MobnVtKSIgLSAuXG4iICAg ICAgICAgLyogbmV3IGluc3RydWN0aW9uICovIFwKKyAgICAgICAgIiAud29yZCAiIF9fc3RyaW5n aWZ5KGZlYXR1cmUpICJcbiIgICAgICAgLyogZmVhdHVyZSBiaXQgICAgICovIFwKKyAgICAgICAg IiAuYnl0ZSAiIGFsdF9vcmlnX2xlbiAiXG4iICAgICAgICAgICAgICAgLyogc291cmNlIGxlbiAg ICAgICovIFwKKyAgICAgICAgIiAuYnl0ZSAiIGFsdF9yZXBsX2xlbihudW0pICJcbiIgICAgICAg ICAgLyogcmVwbGFjZW1lbnQgbGVuICovCiAKLSNkZWZpbmUgQUxUSU5TVFJfRU5UUlkoZmVhdHVy ZSwgbnVtYmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ICAgIiAubG9uZyA2NjFiIC0gLlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGFi ZWwgICAgICAgICAgICovIFwKLSAgICAgICAgIiAubG9uZyAiIGJfcmVwbGFjZW1lbnQobnVtYmVy KSJmIC0gLlxuIiAgICAgICAgLyogbmV3IGluc3RydWN0aW9uICovIFwKLSAgICAgICAgIiAud29y ZCAiIF9fc3RyaW5naWZ5KGZlYXR1cmUpICJcbiIgICAgICAgICAgICAgLyogZmVhdHVyZSBiaXQg ICAgICovIFwKLSAgICAgICAgIiAuYnl0ZSAiIGFsdF9zbGVuICJcbiIgICAgICAgICAgICAgICAg ICAgICAgICAgLyogc291cmNlIGxlbiAgICAgICovIFwKLSAgICAgICAgIiAuYnl0ZSAiIGFsdF9y bGVuKG51bWJlcikgIlxuIiAgICAgICAgICAgICAgICAgLyogcmVwbGFjZW1lbnQgbGVuICovCisj ZGVmaW5lIERJU0NBUkRfRU5UUlkobnVtKSAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlcGwg PD0gb3JpZyAqLyAgICBcCisgICAgICAgICIgLmJ5dGUgMHhmZiArICgiIGFsdF9yZXBsX2xlbihu dW0pICIpIC0gKCIgYWx0X29yaWdfbGVuICIpXG4iCiAKLSNkZWZpbmUgRElTQ0FSRF9FTlRSWShu dW1iZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmxlbiA8PSBzbGVuICovICAgIFwK LSAgICAgICAgIiAuYnl0ZSAweGZmICsgKCIgYWx0X3JsZW4obnVtYmVyKSAiKSAtICgiIGFsdF9z bGVuICIpXG4iCi0KLSNkZWZpbmUgQUxUSU5TVFJfUkVQTEFDRU1FTlQobmV3aW5zdHIsIGZlYXR1 cmUsIG51bWJlcikgLyogcmVwbGFjZW1lbnQgKi8gICAgIFwKLSAgICAgICAgYl9yZXBsYWNlbWVu dChudW1iZXIpIjpcblx0IiBuZXdpbnN0ciAiXG4iIGVfcmVwbGFjZW1lbnQobnVtYmVyKSAiOlxu XHQiCi0KLSNkZWZpbmUgQUxURVJOQVRJVkVfTihuZXdpbnN0ciwgZmVhdHVyZSwgbnVtYmVyKQlc Ci0JIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iCQlcCi0JQUxUSU5TVFJf RU5UUlkoZmVhdHVyZSwgbnVtYmVyKQkJCVwKLQkiLnNlY3Rpb24gLmRpc2NhcmQsXCJhXCIsQHBy b2diaXRzXG4iCQlcCi0JRElTQ0FSRF9FTlRSWShudW1iZXIpCQkJCVwKLQkiLnNlY3Rpb24gLmFs dGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIJXAotCUFMVElOU1RSX1JFUExBQ0VNRU5UKG5l d2luc3RyLCBmZWF0dXJlLCBudW1iZXIpCVwKLQkiLnBvcHNlY3Rpb25cbiIKKyNkZWZpbmUgQUxU SU5TVFJfUkVQTEFDRU1FTlQobmV3aW5zdHIsIG51bSkgICAgICAgLyogcmVwbGFjZW1lbnQgKi8g ICAgIFwKKyAgICAgICAgYWx0X3JlcGxfcyhudW0pIjpcblx0IiBuZXdpbnN0ciAiXG4iIGFsdF9y ZXBsX2UobnVtKSAiOlxuXHQiCiAKIC8qIGFsdGVybmF0aXZlIGFzc2VtYmx5IHByaW1pdGl2ZTog Ki8KLSNkZWZpbmUgQUxURVJOQVRJVkUob2xkaW5zdHIsIG5ld2luc3RyLCBmZWF0dXJlKQkJCSAg XAotCU9MRElOU1RSKG9sZGluc3RyKQkJCQkJCSAgXAotCUFMVEVSTkFUSVZFX04obmV3aW5zdHIs IGZlYXR1cmUsIDEpCisjZGVmaW5lIEFMVEVSTkFUSVZFKG9sZGluc3RyLCBuZXdpbnN0ciwgZmVh dHVyZSkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9MRElOU1RSKG9sZGluc3Ry KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg ICIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9ucywgXCJhXCIsIEBwcm9nYml0c1xuIiAgICAg ICAgICAgICBcCisgICAgICAgIEFMVElOU1RSX0VOVFJZKGZlYXR1cmUsIDEpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICIuc2VjdGlvbiAuZGlzY2FyZCwg XCJhXCIsIEBwcm9nYml0c1xuIiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIERJ U0NBUkRfRU5UUlkoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgICIuc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIiwg QHByb2diaXRzXG4iICAgICAgICAgICBcCisgICAgICAgIEFMVElOU1RSX1JFUExBQ0VNRU5UKG5l d2luc3RyLCAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICIucG9w c2VjdGlvblxuIgogCiAjZGVmaW5lIEFMVEVSTkFUSVZFXzIob2xkaW5zdHIsIG5ld2luc3RyMSwg ZmVhdHVyZTEsIG5ld2luc3RyMiwgZmVhdHVyZTIpIFwKLQlBTFRFUk5BVElWRShvbGRpbnN0ciwg bmV3aW5zdHIxLCBmZWF0dXJlMSkJCQkgIFwKLQlBTFRFUk5BVElWRV9OKG5ld2luc3RyMiwgZmVh dHVyZTIsIDIpCisgICAgICAgIE9MRElOU1RSKG9sZGluc3RyKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICIucHVzaHNlY3Rpb24gLmFsdGlu c3RydWN0aW9ucywgXCJhXCIsIEBwcm9nYml0c1xuIiAgICAgICAgICAgICBcCisgICAgICAgIEFM VElOU1RSX0VOVFJZKGZlYXR1cmUxLCAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIEFMVElOU1RSX0VOVFJZKGZlYXR1cmUyLCAyKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICIuc2VjdGlvbiAuZGlzY2FyZCwgXCJh XCIsIEBwcm9nYml0c1xuIiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIERJU0NB UkRfRU5UUlkoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgIERJU0NBUkRfRU5UUlkoMikgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICIuc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFj ZW1lbnQsIFwiYXhcIiwgQHByb2diaXRzXG4iICAgICAgICAgICBcCisgICAgICAgIEFMVElOU1RS X1JFUExBQ0VNRU5UKG5ld2luc3RyMSwgMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgIEFMVElOU1RSX1JFUExBQ0VNRU5UKG5ld2luc3RyMiwgMikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICIucG9wc2VjdGlvblxuIgogCiAvKgogICogQWx0 ZXJuYXRpdmUgaW5zdHJ1Y3Rpb25zIGZvciBkaWZmZXJlbnQgQ1BVIHR5cGVzIG9yIGNhcGFiaWxp dGllcy4KLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==